{"type":"user_prompt","text":"Peux tu faire un major upgrade de auto ka en enrichissantt les connecteur et en améliorant encore plus le display des annonce individuelle","ts":1787667342968} {"type":"status","state":"running"} {"type":"claude","event":{"type":"system","subtype":"init","cwd":"/Users/simon-pierreboucher/auto-ka","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","tools":["Task","AskUserQuestion","Bash","CronCreate","CronDelete","CronList","Edit","EnterPlanMode","EnterWorktree","ExitPlanMode","ExitWorktree","Glob","Grep","Monitor","NotebookEdit","PushNotification","Read","RemoteTrigger","ScheduleWakeup","Skill","TaskOutput","TaskStop","TodoWrite","ToolSearch","WebFetch","WebSearch","Write"],"mcp_servers":[{"name":"adminka","status":"connected"}],"model":"claude-fable-5","permissionMode":"default","slash_commands":["update-config","debug","simplify","batch","fewer-permission-prompts","loop","schedule","claude-api","clear","compact","context","cost","heapdump","init","review","security-review","insights","team-onboarding"],"apiKeySource":"ANTHROPIC_API_KEY","claude_code_version":"2.1.117","output_style":"default","agents":["Explore","general-purpose","Plan","statusline-setup"],"skills":["update-config","debug","simplify","batch","fewer-permission-prompts","loop","schedule","claude-api"],"plugins":[],"uuid":"3b301fca-ad43-41fe-8de7-df5e1d4e1868","memory_paths":{"auto":"/Users/simon-pierreboucher/.claude/projects/-Users-simon-pierreboucher-auto-ka/memory/"},"fast_mode_state":"off"}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"4f663177-81ad-43b5-9afd-dab94551e2c4","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcD15MjaDQwWZHvdar8","type":"message","role":"assistant","content":[{"type":"thinking","thinking":"","signature":"CAIS5wUKpwEIERgCKkCfK4l73nt24ryVfokS4R4kC2ND9rHSz+5eFdAomZVWgkfTmFPuOo72nPyTE+zqGT7DEfFcYNOg8WsDWJ3yQfrxMg5jbGF1ZGUtZmFibGUtNTgBQgh0aGlua2luZ1okNmZjYzhmODMtMWY5Yy00ZDMzLWJhMDctNGQ0ZGYzN2Q2N2Y1chAqK78ZzsiVUzI5xDv77u/SiAEBqAGWx7bUBrABAhIMhl/eUvh2/BYrZVCGGgyHwlABE5LO+5wiH5QiMCxGZ+/7bdZpRfZeezP5doEcQjaW+nKPkpkpppqUGQHfDMSrNq48X7fSeitsKgcsvCrsA0hOptSlslMC2WOSKim4pZF7+XMGBCp4R3Utkvn4M05cYOtGqBJW7dsvRKTh4jAGVkIdPf2rCR2mI88tf/ga7uGnkq20GMNYnkJy8vC9sQjAkYevSGFNMHQYh21sIGZYT+4iQCRN5GFqu50FAiCCUYhwoxZGNo8s5VR92XutkkycuT9UHzinKXhig8ZtxJXNZIT6Unn6RhTJegsZvfZOHdV3WnWjbbXO5cOdI83w1/6nYGjZ6nOI31XyqEHHL/AxiAMzuwSU/CTJPr7VjxqfenZITK6t1Ii4SDRrjR2lGSzJ+n3GyY2oIkL7R7y99U6eiGssQyoumLytz8k7zO12xQMxOYCXwBs5UBF4weZRY9/DP2EMYZjvUf/0MLJCWU04q44DodDaea2Ox1UsPZ43z7r8ku5GJjwSC90B+3sGqv4F/RjMQfI7hmqNvcZI2MT0e4C0AtZlCVWlE3msoYzFf3anViy5hrec0Gh0MJh8+4U327FLFmc4SoZoBB7MrEk+OMVBXU1oZjkP/BFJPzcuDbBI/7D31i7Gj+cHnWa8MB1JFq3pyXVCb2FtLwrM+wlgfZtp953XAEudyZand/J8wi85NuYPr/XK2mhgGeeuPtXBgBRBBWpTkBuDcxpz9w2CiAN+g5Uf0NW0ZIsLJhgB"}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":33399,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":33399,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"e1467583-1340-41e9-8e2b-8d09bccc1619"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcD15MjaDQwWZHvdar8","type":"message","role":"assistant","content":[{"type":"text","text":"Je vais d'abord explorer le repo auto-ka pour comprendre l'architecture actuelle (connecteurs + page détail), puis proposer et implémenter le major upgrade."}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":33399,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":33399,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"7e3e719b-2f6b-4388-81c0-37109dba5328"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcD15MjaDQwWZHvdar8","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_013NeB7GEvGB3mCos4HwBSqK","name":"Bash","input":{"command":"ls -la ~/auto-ka && cat ~/auto-ka/package.json 2>/dev/null | head -50","description":"List auto-ka repo structure and package.json"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":33399,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":33399,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"b008db16-432a-4b72-8c4a-e896266a5845"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_013NeB7GEvGB3mCos4HwBSqK","type":"tool_result","content":"total 104\ndrwxr-xr-x 16 simon-pierreboucher staff 512 Aug 18 03:23 .\ndrwxr-x---+ 45 simon-pierreboucher staff 1440 Aug 25 10:15 ..\n-rw-r--r-- 1 simon-pierreboucher staff 10244 Aug 13 04:17 .DS_Store\ndrwxr-xr-x 3 simon-pierreboucher staff 96 Aug 12 07:53 .claude\n-rw------- 1 simon-pierreboucher staff 349 Aug 13 00:58 .env\ndrwxr-xr-x 13 simon-pierreboucher staff 416 Aug 24 21:36 .git\n-rw-r--r-- 1 simon-pierreboucher staff 165 Aug 12 14:29 .gitignore\ndrwxr-xr-x 8 simon-pierreboucher staff 256 Aug 17 21:14 .venv\n-rw-r--r-- 1 simon-pierreboucher staff 21003 Aug 24 14:55 README.md\ndrwxr-xr-x 22 simon-pierreboucher staff 704 Aug 22 18:51 autoka\ndrwxr-xr-x 5 simon-pierreboucher staff 160 Aug 25 10:15 data\ndrwxr-xr-x 11 simon-pierreboucher staff 352 Aug 24 00:56 docs\ndrwxr-xr-x 13 simon-pierreboucher staff 416 Aug 24 21:36 frontend\n-rw-r--r-- 1 simon-pierreboucher staff 196 Aug 17 21:36 requirements.txt\n-rw-r--r-- 1 simon-pierreboucher staff 1674 Aug 12 08:02 run.py\ndrwxr-xr-x 3 simon-pierreboucher staff 96 Aug 18 03:23 scripts","is_error":false}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"b119a15f-2069-4c09-89ff-0f3dcfa1cd4c","timestamp":"2026-08-25T14:15:53.060Z","tool_use_result":{"stdout":"total 104\ndrwxr-xr-x 16 simon-pierreboucher staff 512 Aug 18 03:23 .\ndrwxr-x---+ 45 simon-pierreboucher staff 1440 Aug 25 10:15 ..\n-rw-r--r-- 1 simon-pierreboucher staff 10244 Aug 13 04:17 .DS_Store\ndrwxr-xr-x 3 simon-pierreboucher staff 96 Aug 12 07:53 .claude\n-rw------- 1 simon-pierreboucher staff 349 Aug 13 00:58 .env\ndrwxr-xr-x 13 simon-pierreboucher staff 416 Aug 24 21:36 .git\n-rw-r--r-- 1 simon-pierreboucher staff 165 Aug 12 14:29 .gitignore\ndrwxr-xr-x 8 simon-pierreboucher staff 256 Aug 17 21:14 .venv\n-rw-r--r-- 1 simon-pierreboucher staff 21003 Aug 24 14:55 README.md\ndrwxr-xr-x 22 simon-pierreboucher staff 704 Aug 22 18:51 autoka\ndrwxr-xr-x 5 simon-pierreboucher staff 160 Aug 25 10:15 data\ndrwxr-xr-x 11 simon-pierreboucher staff 352 Aug 24 00:56 docs\ndrwxr-xr-x 13 simon-pierreboucher staff 416 Aug 24 21:36 frontend\n-rw-r--r-- 1 simon-pierreboucher staff 196 Aug 17 21:36 requirements.txt\n-rw-r--r-- 1 simon-pierreboucher staff 1674 Aug 12 08:02 run.py\ndrwxr-xr-x 3 simon-pierreboucher staff 96 Aug 18 03:23 scripts","stderr":"","interrupted":false,"isImage":false,"noOutputExpected":false}}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcD15MjaDQwWZHvdar8","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01Dv1Yk2C8B6iVFZ3iEUry2R","name":"Bash","input":{"command":"pm2 list && curl -s -o /dev/null -w \"%{http_code}\" http://localhost:$(pm2 jlist 2>/dev/null | python3 -c \"import json,sys; apps=json.load(sys.stdin); print([a for a in apps if 'auto' in a['name']][0]['pm2_env'].get('env',{}).get('PORT','?'))\" 2>/dev/null || echo \"3000\") 2>/dev/null; echo","description":"Check PM2 apps and auto-ka health"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":33399,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":33399,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"76da40eb-c377-4ac9-ab7a-2cd6ccefad73"}} {"type":"permission_request","requestId":"3ea65913b2de287b","tool":"Bash","input":{"command":"pm2 list && curl -s -o /dev/null -w \"%{http_code}\" http://localhost:$(pm2 jlist 2>/dev/null | python3 -c \"import json,sys; apps=json.load(sys.stdin); print([a for a in apps if 'auto' in a['name']][0]['pm2_env'].get('env',{}).get('PORT','?'))\" 2>/dev/null || echo \"3000\") 2>/dev/null; echo","description":"Check PM2 apps and auto-ka health"}} {"type":"notice","text":"🔓 Tout autoriser activé — la tâche ira au bout sans autre demande de permission."} {"type":"permission_resolved","requestId":"3ea65913b2de287b","allow":true,"always":false} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01Dv1Yk2C8B6iVFZ3iEUry2R","type":"tool_result","content":"┌────┬──────────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐\n│ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │\n├────┼──────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤\n│ 6 │ auto-ka-ngrok │ default │ N/A │ fork │ 32452 │ 8D │ 1 │ online │ 0% │ 275.0mb │ simon-p… │ disabled │\n│ 7 │ auto-ka-sync │ default │ N/A │ fork │ 83936 │ 42h │ 5 │ online │ 0% │ 416.7mb │ simon-p… │ disabled │\n│ 4 │ auto-ka-web │ default │ N/A │ fork │ 65364 │ 12h │ 38 │ online │ 0% │ 151.4mb │ simon-p… │ disabled │\n│ 13 │ food-ka-ngrok │ default │ N/A │ fork │ 84943 │ 12D │ 0 │ online │ 0% │ 185.8mb │ simon-p… │ disabled │\n│ 9 │ food-ka-sync │ default │ N/A │ fork │ 71623 │ 2D │ 6 │ online │ 0% │ 221.6mb │ simon-p… │ disabled │\n│ 11 │ food-ka-web │ default │ N/A │ fork │ 65379 │ 12h │ 31 │ online │ 0% │ 176.7mb │ simon-p… │ disabled │\n│ 3 │ hfchart-ngrok │ default │ N/A │ fork │ 75887 │ 15D │ 0 │ online │ 0% │ 76.2mb │ simon-p… │ disabled │\n│ 0 │ hfchart-web │ default │ N/A │ fork │ 86164 │ 14D │ 2 │ online │ 0% │ 25.8mb │ simon-p… │ disabled │\n└────┴──────────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘\n000","is_error":false}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"65f08d94-2e95-4445-bf71-c40079e82016","timestamp":"2026-08-25T14:15:58.124Z","tool_use_result":{"stdout":"┌────┬──────────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐\n│ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │\n├────┼──────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤\n│ 6 │ auto-ka-ngrok │ default │ N/A │ fork │ 32452 │ 8D │ 1 │ online │ 0% │ 275.0mb │ simon-p… │ disabled │\n│ 7 │ auto-ka-sync │ default │ N/A │ fork │ 83936 │ 42h │ 5 │ online │ 0% │ 416.7mb │ simon-p… │ disabled │\n│ 4 │ auto-ka-web │ default │ N/A │ fork │ 65364 │ 12h │ 38 │ online │ 0% │ 151.4mb │ simon-p… │ disabled │\n│ 13 │ food-ka-ngrok │ default │ N/A │ fork │ 84943 │ 12D │ 0 │ online │ 0% │ 185.8mb │ simon-p… │ disabled │\n│ 9 │ food-ka-sync │ default │ N/A │ fork │ 71623 │ 2D │ 6 │ online │ 0% │ 221.6mb │ simon-p… │ disabled │\n│ 11 │ food-ka-web │ default │ N/A │ fork │ 65379 │ 12h │ 31 │ online │ 0% │ 176.7mb │ simon-p… │ disabled │\n│ 3 │ hfchart-ngrok │ default │ N/A │ fork │ 75887 │ 15D │ 0 │ online │ 0% │ 76.2mb │ simon-p… │ disabled │\n│ 0 │ hfchart-web │ default │ N/A │ fork │ 86164 │ 14D │ 2 │ online │ 0% │ 25.8mb │ simon-p… │ disabled │\n└────┴──────────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘\n000","stderr":"","interrupted":false,"isImage":false,"noOutputExpected":false}}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"e6706f7a-a79e-4056-b975-fa43b89e80fd","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcE6HAhdvEdNSfmwrUa","type":"message","role":"assistant","content":[{"type":"thinking","thinking":"","signature":"CAIS5QMKpwEIERgCKkBpdEGX6a0Vr/k2C5JXiBYp7K6iqcyVc0XMRHz49yacwma6hVqVTBNIdjaT71cse2mNEHDmcKG4W84X3S4dI339Mg5jbGF1ZGUtZmFibGUtNTgBQgh0aGlua2luZ1okNmZjYzhmODMtMWY5Yy00ZDMzLWJhMDctNGQ0ZGYzN2Q2N2Y1chAqK78ZzsiVUzI5xDv77u/SiAEBqAGkx7bUBrABAhIMLDO/MqqnIQ7wFF1uGgxx3fBhUz1NtHUzIMUiMHJm693yGyvOUpMymWNpoNYivOJzZzg7Pa/E+OgUYYnI7FXGwJbYstM6wIALL3We5SrqAVIXBy9RWebCma5PKveo5RUzrJE8qNuoYiN9T10Lnwbb4SK32nw4AQcx9PdUZAETy9DDdSn2y7ETDMWItkgKXH7tgmKHGAKp3S13CyuM/dZTykDJbJoSsx4tyXJcdloF6Qr5xmQi9lp5u3R39xzY70r50uUfqmwZHH069lGjpLmj3iDHA0C8noeZIAEQpg1edW5ynJRKCnq1wMeJWzuz60j2LEBR5dMzIhFJqq26NNBDvumYDTl2e1qvDbsG3hKvGpK3mKFhYzew373vX3qCagGGh9wBephBkfX+7Fw+7MPvqt11CwqbIrleIBgB"}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":2200,"cache_read_input_tokens":33399,"cache_creation":{"ephemeral_5m_input_tokens":2200,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"633b632a-413d-4266-acc7-d42afd6c52cd"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcE6HAhdvEdNSfmwrUa","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01CAh2vk78R7nPjc5f27F6mG","name":"Bash","input":{"command":"ls ~/auto-ka/autoka ~/auto-ka/autoka/connectors 2>/dev/null; ls ~/auto-ka/frontend; cat ~/auto-ka/run.py","description":"Explore autoka package and frontend structure"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":2200,"cache_read_input_tokens":33399,"cache_creation":{"ephemeral_5m_input_tokens":2200,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"dc60ddd6-95aa-42a3-83ce-9fac3096e78b"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01CAh2vk78R7nPjc5f27F6mG","type":"tool_result","content":"/Users/simon-pierreboucher/auto-ka/autoka:\n__init__.py\n__pycache__\nauth.py\nconnectors\ndb.py\ndealers.py\ndedup.py\nhubfav.py\nhubprofile.py\ningest.py\nkapdf.py\nmarketstats.py\nnormalize.py\npdfgen.py\nrecalls.py\nschema.py\nseo.py\nstatsdash.py\nweb.py\n\n/Users/simon-pierreboucher/auto-ka/autoka/connectors:\n__init__.py\n__pycache__\n_resilient.py\nalbioccasion.py\nautodurocher.py\nautomobileendirect.py\nautotrader.py\nautousagee.py\nbase.py\ncargurus.py\ncentral_dealers.py\nclasseauto.py\nclubautozone.py\nconvertus_fc.py\nd2c_dealers.py\ndesmeules.py\ndupontford.py\ngatsby_dealers.py\nhgregoire.py\njlkauto.py\nkijiji.py\nleprixdugros.py\nmagnetis_dealers.py\nmegacentre.py\nmontjolichrysler.py\nmoto_dealers.py\noccasionbeaucage.py\noccasioncharlevoix.py\nokaze.py\notogo.py\nototr.py\nsm360_dealers.py\nstefoychrysler.py\nvvu_dealers.py\nyannicklaberge.py\ndist\nindex.html\nnode_modules\npackage-lock.json\npackage.json\npublic\nsrc\ntsconfig.json\ntsconfig.tsbuildinfo\nvite.config.ts\n#!/usr/bin/env python3\n# -----------------------------------------------------------------------------\n# Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n# Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n# run.py : point d'entrée — `sync`, `watch`, `serve`\n# -----------------------------------------------------------------------------\n\"\"\"Utilisation :\n python run.py sync [source ...] # synchronise les annonces\n python run.py watch [minutes] # synchronise en boucle (défaut 120 min)\n python run.py serve [port] # démarre l'API + le frontend (défaut 8080)\n\"\"\"\nfrom __future__ import annotations\n\nimport os\nimport sys\nfrom pathlib import Path\n\n# Charger .env (FIRECRAWL_API_KEY, etc.) sans dépendance externe\n_env = Path(__file__).parent / \".env\"\nif _env.exists():\n for line in _env.read_text().splitlines():\n line = line.strip()\n if line and not line.startswith(\"#\") and \"=\" in line:\n k, _, v = line.partition(\"=\")\n os.environ.setdefault(k.strip(), v.strip())\n\n\ndef main() -> None:\n cmd = sys.argv[1] if len(sys.argv) > 1 else \"serve\"\n if cmd == \"sync\":\n from autoka import ingest\n ingest.run(sys.argv[2:] or None)\n elif cmd == \"watch\":\n from autoka import ingest\n minutes = int(sys.argv[2]) if len(sys.argv) > 2 else 120\n ingest.watch(minutes * 60)\n elif cmd == \"serve\":\n import uvicorn\n port = int(sys.argv[2]) if len(sys.argv) > 2 else 8080\n uvicorn.run(\"autoka.web:app\", host=\"0.0.0.0\", port=port)\n else:\n print(__doc__)\n sys.exit(1)\n\n\nif __name__ == \"__main__\":\n main()","is_error":false}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"719090e7-d941-4a8d-8e71-ff7891e3285d","timestamp":"2026-08-25T14:16:05.421Z","tool_use_result":{"stdout":"/Users/simon-pierreboucher/auto-ka/autoka:\n__init__.py\n__pycache__\nauth.py\nconnectors\ndb.py\ndealers.py\ndedup.py\nhubfav.py\nhubprofile.py\ningest.py\nkapdf.py\nmarketstats.py\nnormalize.py\npdfgen.py\nrecalls.py\nschema.py\nseo.py\nstatsdash.py\nweb.py\n\n/Users/simon-pierreboucher/auto-ka/autoka/connectors:\n__init__.py\n__pycache__\n_resilient.py\nalbioccasion.py\nautodurocher.py\nautomobileendirect.py\nautotrader.py\nautousagee.py\nbase.py\ncargurus.py\ncentral_dealers.py\nclasseauto.py\nclubautozone.py\nconvertus_fc.py\nd2c_dealers.py\ndesmeules.py\ndupontford.py\ngatsby_dealers.py\nhgregoire.py\njlkauto.py\nkijiji.py\nleprixdugros.py\nmagnetis_dealers.py\nmegacentre.py\nmontjolichrysler.py\nmoto_dealers.py\noccasionbeaucage.py\noccasioncharlevoix.py\nokaze.py\notogo.py\nototr.py\nsm360_dealers.py\nstefoychrysler.py\nvvu_dealers.py\nyannicklaberge.py\ndist\nindex.html\nnode_modules\npackage-lock.json\npackage.json\npublic\nsrc\ntsconfig.json\ntsconfig.tsbuildinfo\nvite.config.ts\n#!/usr/bin/env python3\n# -----------------------------------------------------------------------------\n# Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n# Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n# run.py : point d'entrée — `sync`, `watch`, `serve`\n# -----------------------------------------------------------------------------\n\"\"\"Utilisation :\n python run.py sync [source ...] # synchronise les annonces\n python run.py watch [minutes] # synchronise en boucle (défaut 120 min)\n python run.py serve [port] # démarre l'API + le frontend (défaut 8080)\n\"\"\"\nfrom __future__ import annotations\n\nimport os\nimport sys\nfrom pathlib import Path\n\n# Charger .env (FIRECRAWL_API_KEY, etc.) sans dépendance externe\n_env = Path(__file__).parent / \".env\"\nif _env.exists():\n for line in _env.read_text().splitlines():\n line = line.strip()\n if line and not line.startswith(\"#\") and \"=\" in line:\n k, _, v = line.partition(\"=\")\n os.environ.setdefault(k.strip(), v.strip())\n\n\ndef main() -> None:\n cmd = sys.argv[1] if len(sys.argv) > 1 else \"serve\"\n if cmd == \"sync\":\n from autoka import ingest\n ingest.run(sys.argv[2:] or None)\n elif cmd == \"watch\":\n from autoka import ingest\n minutes = int(sys.argv[2]) if len(sys.argv) > 2 else 120\n ingest.watch(minutes * 60)\n elif cmd == \"serve\":\n import uvicorn\n port = int(sys.argv[2]) if len(sys.argv) > 2 else 8080\n uvicorn.run(\"autoka.web:app\", host=\"0.0.0.0\", port=port)\n else:\n print(__doc__)\n sys.exit(1)\n\n\nif __name__ == \"__main__\":\n main()","stderr":"","interrupted":false,"isImage":false,"noOutputExpected":false}}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"f761136d-08c4-471e-a032-8a3c887f9d6c","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcEdiXZ1KAUb8SP5DCC","type":"message","role":"assistant","content":[{"type":"thinking","thinking":"","signature":"CAISrQYKpwEIERgCKkDeDxXfPW4cwxE9ZM+6ksfpYW/hSTkIFioj5CFVZEsXGVlJa8nI8Gg96mCUYfYyW4mcH70PiFmq9IuMO4skDg2IMg5jbGF1ZGUtZmFibGUtNTgBQgh0aGlua2luZ1okNmZjYzhmODMtMWY5Yy00ZDMzLWJhMDctNGQ0ZGYzN2Q2N2Y1chAqK78ZzsiVUzI5xDv77u/SiAEBqAGux7bUBrABAhIM2anXb2ukgan2lD0aGgzQRPVGpdfOJSeKsR0iMAN6b3WrvCbD9xFLwt2cnyvAUmFyUN4C9dLztmaI4DbrcNj/rNgRo0i+kn5fqUBJDCqyBHrhLfsjNutPz6XpcfUqkNoHXgG1RzdoULGAhbZS3Xgn9mmmJvHN6EO0qiWc1m7Z4bxrU/qPuLh3e85zUm62D1AIMiOOHsfiOKM13Ou7mW1OgKoc3brPeUy0SPgW7Ao2SmaMXU48OD6geXk4Ijc/upXiG0DxIJnU78uJQEr1XO/gq9LWpQfcDaIUZ/Ud4w3gRZHRou/FI5kYT9jtJjkIJfoAqB7pil+m7i2llrx7uO7N1gl8D456rA6NEYDmYyAw8rYwzdffqWSp5aZY42i5BiPfn8v/TahB/jvq51C+7YDhvR/GNJ6vmKJb2ePaDBDwRgobqy4iGqRV5hFU6//d8hmRPgYhXkQ/beMGECCd32cz7p7yTAJfVoY6ZnMpf2cgVckib1zuGxQ3m54UfrdAEkvBNSOLpv+2n0PjYCHq1xUQiOC8imyJKnt+WxtfIUHbCss8O2XmsQ3QRw6YIsTWaXDYTet6zWexjGz0hFmVsFgGNDAybtxBfSgwqFxyamZIBxRB1vs1ih/ZuhxL8i/VPxjuVM23ztNVORfsDcgvPhKTineSHLw2S20lZzAUHlM+N2TB4w9yDszfOwQx427AU5LdrWfsW8LGiYdTjbHAlsTend3ErlXYmAJ4pBCy9nqTr2zpjqibspTWtOWtYSyn72P/CMvWMtOzixNfGWP62EiWuz8BLXNPSgUVsOx8V+YP2uArJH2lK4RLnPut1NN7ZEIgk0eR/YgMhZoqAiGF66STDIgYAQ=="}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":1415,"cache_read_input_tokens":35599,"cache_creation":{"ephemeral_5m_input_tokens":1415,"ephemeral_1h_input_tokens":0},"output_tokens":4,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"51d7c3db-db1e-4369-a3e5-59436f50adc8"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcEdiXZ1KAUb8SP5DCC","type":"message","role":"assistant","content":[{"type":"text","text":"C'est une grosse tâche — je lance deux explorations en parallèle : une sur l'architecture des connecteurs/données, une sur la page détail du frontend."}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":1415,"cache_read_input_tokens":35599,"cache_creation":{"ephemeral_5m_input_tokens":1415,"ephemeral_1h_input_tokens":0},"output_tokens":4,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"89dc4505-b440-4c3b-953b-90c461a16683"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcEdiXZ1KAUb8SP5DCC","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01HMWZDHqkiijKTXuz798PH5","name":"Agent","input":{"description":"Explorer connecteurs auto-ka","subagent_type":"Explore","prompt":"Explore le backend Python du projet /Users/simon-pierreboucher/auto-ka (agrégateur d'annonces de voitures usagées au Québec). Thoroughness: very thorough.\n\nJe prépare un \"major upgrade\" : enrichir les connecteurs et améliorer la page détail d'une annonce. J'ai besoin de comprendre :\n\n1. **Schéma de données** (autoka/schema.py, autoka/db.py) : quels champs existe-t-il pour une annonce (Listing) ? Lesquels sont optionnels/rarement remplis ? Structure de la DB (SQLite ?).\n2. **Architecture connecteurs** (autoka/connectors/base.py, __init__.py, _resilient.py) : comment un connecteur est écrit, quelle interface, comment il est enregistré, comment l'ingestion fonctionne (autoka/ingest.py, normalize.py, dedup.py).\n3. **Liste des connecteurs existants** : pour chaque fichier dans autoka/connectors/, résume en 1 ligne la source et la technique (API JSON, HTML, Scrapfly…). Note lesquels extraient beaucoup de champs riches (photos multiples, VIN, carfax, options/équipements, description) vs lesquels sont minimalistes.\n4. **Enrichissements existants** : autoka/recalls.py, marketstats.py, dealers.py, seo.py — que font-ils ? Y a-t-il déjà des enrichissements par VIN (rappels, historique) ?\n5. **API web** (autoka/web.py) : quels endpoints servent la page détail d'une annonce ? Quel JSON est renvoyé pour une annonce individuelle ?\n6. Regarde la DB live si possible : `sqlite3 \".tables\"` et compte des annonces par source, et le taux de remplissage des champs riches (photos, vin, description, options) — ex: SELECT source, COUNT(*) FROM listings GROUP BY source; et taux de NULL sur vin/description.\n\nRapport structuré, avec chemins de fichiers et numéros de ligne pour les points clés (interface connecteur, modèle Listing, endpoint détail). Max ~800 mots."},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":1415,"cache_read_input_tokens":35599,"cache_creation":{"ephemeral_5m_input_tokens":1415,"ephemeral_1h_input_tokens":0},"output_tokens":4,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"35776b16-4933-49b0-a4c6-b2b5dce830ef"}} {"type":"claude","event":{"type":"system","subtype":"task_started","task_id":"aa77f553c30839219","tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","description":"Explorer connecteurs auto-ka","task_type":"local_agent","prompt":"Explore le backend Python du projet /Users/simon-pierreboucher/auto-ka (agrégateur d'annonces de voitures usagées au Québec). Thoroughness: very thorough.\n\nJe prépare un \"major upgrade\" : enrichir les connecteurs et améliorer la page détail d'une annonce. J'ai besoin de comprendre :\n\n1. **Schéma de données** (autoka/schema.py, autoka/db.py) : quels champs existe-t-il pour une annonce (Listing) ? Lesquels sont optionnels/rarement remplis ? Structure de la DB (SQLite ?).\n2. **Architecture connecteurs** (autoka/connectors/base.py, __init__.py, _resilient.py) : comment un connecteur est écrit, quelle interface, comment il est enregistré, comment l'ingestion fonctionne (autoka/ingest.py, normalize.py, dedup.py).\n3. **Liste des connecteurs existants** : pour chaque fichier dans autoka/connectors/, résume en 1 ligne la source et la technique (API JSON, HTML, Scrapfly…). Note lesquels extraient beaucoup de champs riches (photos multiples, VIN, carfax, options/équipements, description) vs lesquels sont minimalistes.\n4. **Enrichissements existants** : autoka/recalls.py, marketstats.py, dealers.py, seo.py — que font-ils ? Y a-t-il déjà des enrichissements par VIN (rappels, historique) ?\n5. **API web** (autoka/web.py) : quels endpoints servent la page détail d'une annonce ? Quel JSON est renvoyé pour une annonce individuelle ?\n6. Regarde la DB live si possible : `sqlite3 \".tables\"` et compte des annonces par source, et le taux de remplissage des champs riches (photos, vin, description, options) — ex: SELECT source, COUNT(*) FROM listings GROUP BY source; et taux de NULL sur vin/description.\n\nRapport structuré, avec chemins de fichiers et numéros de ligne pour les points clés (interface connecteur, modèle Listing, endpoint détail). Max ~800 mots.","uuid":"a93cf88c-66eb-4be3-a53b-d54a135e6b65","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"type":"text","text":"Explore le backend Python du projet /Users/simon-pierreboucher/auto-ka (agrégateur d'annonces de voitures usagées au Québec). Thoroughness: very thorough.\n\nJe prépare un \"major upgrade\" : enrichir les connecteurs et améliorer la page détail d'une annonce. J'ai besoin de comprendre :\n\n1. **Schéma de données** (autoka/schema.py, autoka/db.py) : quels champs existe-t-il pour une annonce (Listing) ? Lesquels sont optionnels/rarement remplis ? Structure de la DB (SQLite ?).\n2. **Architecture connecteurs** (autoka/connectors/base.py, __init__.py, _resilient.py) : comment un connecteur est écrit, quelle interface, comment il est enregistré, comment l'ingestion fonctionne (autoka/ingest.py, normalize.py, dedup.py).\n3. **Liste des connecteurs existants** : pour chaque fichier dans autoka/connectors/, résume en 1 ligne la source et la technique (API JSON, HTML, Scrapfly…). Note lesquels extraient beaucoup de champs riches (photos multiples, VIN, carfax, options/équipements, description) vs lesquels sont minimalistes.\n4. **Enrichissements existants** : autoka/recalls.py, marketstats.py, dealers.py, seo.py — que font-ils ? Y a-t-il déjà des enrichissements par VIN (rappels, historique) ?\n5. **API web** (autoka/web.py) : quels endpoints servent la page détail d'une annonce ? Quel JSON est renvoyé pour une annonce individuelle ?\n6. Regarde la DB live si possible : `sqlite3 \".tables\"` et compte des annonces par source, et le taux de remplissage des champs riches (photos, vin, description, options) — ex: SELECT source, COUNT(*) FROM listings GROUP BY source; et taux de NULL sur vin/description.\n\nRapport structuré, avec chemins de fichiers et numéros de ligne pour les points clés (interface connecteur, modèle Listing, endpoint détail). Max ~800 mots."}]},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"0ab87e6b-8419-42ee-8f6e-dd6933169e46","timestamp":"2026-08-25T14:16:26.196Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"aa77f553c30839219","tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","description":"Running find /Users/simon-pierreboucher/auto-ka -type f -…","usage":{"total_tokens":8676,"tool_uses":1,"duration_ms":2431},"last_tool_name":"Bash","uuid":"3106aec1-e752-4d0e-b176-6ae490797133","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"aa77f553c30839219","tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","description":"Reading autoka","usage":{"total_tokens":10520,"tool_uses":2,"duration_ms":4450},"last_tool_name":"Read","uuid":"08a45f8e-3ffc-4258-a6e6-e3917b8e389b","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"aa77f553c30839219","tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","description":"Running ls -la /Users/simon-pierreboucher/auto-ka/autoka/","usage":{"total_tokens":10522,"tool_uses":3,"duration_ms":4462},"last_tool_name":"Bash","uuid":"3563d988-e916-4cd6-9482-5f8a371dfefd","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"aa77f553c30839219","tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","description":"Running find /Users/simon-pierreboucher/auto-ka -name \"*.…","usage":{"total_tokens":10524,"tool_uses":4,"duration_ms":4631},"last_tool_name":"Bash","uuid":"03634f0f-c1a5-40e6-a997-1907b0935e4e","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"aa77f553c30839219","tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","description":"Reading autoka/schema.py","usage":{"total_tokens":11663,"tool_uses":5,"duration_ms":6093},"last_tool_name":"Read","uuid":"08e88426-bb46-46b9-984e-eb599b5538bc","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"aa77f553c30839219","tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","description":"Reading autoka/db.py","usage":{"total_tokens":11666,"tool_uses":6,"duration_ms":6409},"last_tool_name":"Read","uuid":"f80b0e2e-abc4-4d09-b93c-3eeff916db45","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"aa77f553c30839219","tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","description":"Reading autoka/connectors/__init__.py","usage":{"total_tokens":11669,"tool_uses":7,"duration_ms":6773},"last_tool_name":"Read","uuid":"244ba5a8-7fd6-4eb6-bdd8-157dfc9489d7","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"aa77f553c30839219","tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","description":"Reading autoka/connectors/_resilient.py","usage":{"total_tokens":11672,"tool_uses":8,"duration_ms":6783},"last_tool_name":"Read","uuid":"b4dd9dcf-95ae-4227-8194-4a382ea68270","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"aa77f553c30839219","tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","description":"Reading autoka/ingest.py","usage":{"total_tokens":24863,"tool_uses":9,"duration_ms":8742},"last_tool_name":"Read","uuid":"b6706443-3a4a-4801-9dc2-676f401db5f7","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"aa77f553c30839219","tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","description":"Reading autoka/normalize.py","usage":{"total_tokens":24865,"tool_uses":10,"duration_ms":9061},"last_tool_name":"Read","uuid":"c224c694-e2c3-48bc-a66e-105d1f02df46","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcGAHadZZubWnxgSKC8","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01V7M1Wt3z43gP1NCTM9JoDx","name":"Bash","input":{"command":"find /Users/simon-pierreboucher/auto-ka -type f -name \"*.py\" | head -30"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":3,"cache_creation_input_tokens":8665,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":8665,"ephemeral_1h_input_tokens":0},"output_tokens":4,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"c589d52a-9b79-4cfd-b870-1ead1cc314fa"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01V7M1Wt3z43gP1NCTM9JoDx","type":"tool_result","content":"/Users/simon-pierreboucher/auto-ka/run.py\n/Users/simon-pierreboucher/auto-ka/frontend/src/ka/stats/kapdf.py\n/Users/simon-pierreboucher/auto-ka/autoka/connectors/desmeules.py\n/Users/simon-pierreboucher/auto-ka/autoka/connectors/automobileendirect.py\n/Users/simon-pierreboucher/auto-ka/autoka/connectors/autodurocher.py\n/Users/simon-pierreboucher/auto-ka/autoka/connectors/cargurus.py\n/Users/simon-pierreboucher/auto-ka/autoka/connectors/magnetis_dealers.py\n/Users/simon-pierreboucher/auto-ka/autoka/connectors/ototr.py\n/Users/simon-pierreboucher/auto-ka/autoka/connectors/otogo.py\n/Users/simon-pierreboucher/auto-ka/autoka/connectors/gatsby_dealers.py\n/Users/simon-pierreboucher/auto-ka/autoka/connectors/central_dealers.py\n/Users/simon-pierreboucher/auto-ka/autoka/connectors/okaze.py\n/Users/simon-pierreboucher/auto-ka/autoka/connectors/autousagee.py\n/Users/simon-pierreboucher/auto-ka/autoka/connectors/dupontford.py\n/Users/simon-pierreboucher/auto-ka/autoka/connectors/moto_dealers.py\n/Users/simon-pierreboucher/auto-ka/autoka/connectors/sm360_dealers.py\n/Users/simon-pierreboucher/auto-ka/autoka/connectors/__init__.py\n/Users/simon-pierreboucher/auto-ka/autoka/connectors/autotrader.py\n/Users/simon-pierreboucher/auto-ka/autoka/connectors/hgregoire.py\n/Users/simon-pierreboucher/auto-ka/autoka/connectors/occasionbeaucage.py\n/Users/simon-pierreboucher/auto-ka/autoka/connectors/occasioncharlevoix.py\n/Users/simon-pierreboucher/auto-ka/autoka/connectors/leprixdugros.py\n/Users/simon-pierreboucher/auto-ka/autoka/connectors/_resilient.py\n/Users/simon-pierreboucher/auto-ka/autoka/connectors/stefoychrysler.py\n/Users/simon-pierreboucher/auto-ka/autoka/connectors/convertus_fc.py\n/Users/simon-pierreboucher/auto-ka/autoka/connectors/yannicklaberge.py\n/Users/simon-pierreboucher/auto-ka/autoka/connectors/d2c_dealers.py\n/Users/simon-pierreboucher/auto-ka/autoka/connectors/kijiji.py\n/Users/simon-pierreboucher/auto-ka/autoka/connectors/jlkauto.py\n/Users/simon-pierreboucher/auto-ka/autoka/connectors/clubautozone.py","is_error":false}]},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"87df2fa3-3abc-48a8-838b-b367efcea9e7","timestamp":"2026-08-25T14:16:28.700Z"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcGLn7PD44efAM4HFn9","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01Ci4FLL81sVT9C9M3sVcNfF","name":"Read","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/autoka"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":5,"cache_creation_input_tokens":1838,"cache_read_input_tokens":8665,"cache_creation":{"ephemeral_5m_input_tokens":1838,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"19bbc681-d530-41b6-9ffd-3475038b1e66"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcGLn7PD44efAM4HFn9","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_014MpVPRoRZeUi7h8vk2py2Q","name":"Bash","input":{"command":"ls -la /Users/simon-pierreboucher/auto-ka/autoka/"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":5,"cache_creation_input_tokens":1838,"cache_read_input_tokens":8665,"cache_creation":{"ephemeral_5m_input_tokens":1838,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"bc0e6d64-757e-4f53-b4bb-459724cb1c9f"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"type":"tool_result","content":"EISDIR: illegal operation on a directory, read '/Users/simon-pierreboucher/auto-ka/autoka'","is_error":true,"tool_use_id":"toolu_01Ci4FLL81sVT9C9M3sVcNfF"}]},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"593270c9-a75a-495a-951e-c9ac30b242a7","timestamp":"2026-08-25T14:16:30.666Z","tool_use_result":"Error: EISDIR: illegal operation on a directory, read '/Users/simon-pierreboucher/auto-ka/autoka'"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_014MpVPRoRZeUi7h8vk2py2Q","type":"tool_result","content":"total 576\ndrwxr-xr-x 22 simon-pierreboucher staff 704 Aug 22 18:51 .\ndrwxr-xr-x 16 simon-pierreboucher staff 512 Aug 18 03:23 ..\n-rw-r--r-- 1 simon-pierreboucher staff 10244 Aug 13 04:15 .DS_Store\n-rw-r--r-- 1 simon-pierreboucher staff 318 Aug 12 08:02 __init__.py\ndrwxr-xr-x 19 simon-pierreboucher staff 608 Aug 24 01:17 __pycache__\n-rw-r--r-- 1 simon-pierreboucher staff 11014 Aug 13 02:56 auth.py\ndrwxr-xr-x 38 simon-pierreboucher staff 1216 Aug 23 15:22 connectors\n-rw-r--r-- 1 simon-pierreboucher staff 14746 Aug 18 02:03 db.py\n-rw-r--r-- 1 simon-pierreboucher staff 8254 Aug 18 02:08 dealers.py\n-rw-r--r-- 1 simon-pierreboucher staff 5411 Aug 18 02:03 dedup.py\n-rw-r--r-- 1 simon-pierreboucher staff 3375 Aug 13 02:56 hubfav.py\n-rw-r--r-- 1 simon-pierreboucher staff 3030 Aug 13 02:35 hubprofile.py\n-rw-r--r-- 1 simon-pierreboucher staff 2532 Aug 18 02:03 ingest.py\n-rw-r--r-- 1 simon-pierreboucher staff 51754 Aug 23 17:18 kapdf.py\n-rw-r--r-- 1 simon-pierreboucher staff 5960 Aug 12 16:29 marketstats.py\n-rw-r--r-- 1 simon-pierreboucher staff 18768 Aug 18 05:44 normalize.py\n-rw-r--r-- 1 simon-pierreboucher staff 10772 Aug 12 13:44 pdfgen.py\n-rw-r--r-- 1 simon-pierreboucher staff 7402 Aug 18 02:03 recalls.py\n-rw-r--r-- 1 simon-pierreboucher staff 6615 Aug 18 01:39 schema.py\n-rw-r--r-- 1 simon-pierreboucher staff 49193 Aug 18 02:07 seo.py\n-rw-r--r-- 1 simon-pierreboucher staff 32521 Aug 19 00:43 statsdash.py\n-rw-r--r-- 1 simon-pierreboucher staff 19323 Aug 24 01:17 web.py","is_error":false}]},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"607d2860-1ae0-4771-8d76-1c8267a3b0b8","timestamp":"2026-08-25T14:16:30.688Z"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcGLn7PD44efAM4HFn9","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_019HWotrQ7wSuaBeyhqdGKVh","name":"Bash","input":{"command":"find /Users/simon-pierreboucher/auto-ka -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":5,"cache_creation_input_tokens":1838,"cache_read_input_tokens":8665,"cache_creation":{"ephemeral_5m_input_tokens":1838,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"2640a4d6-5583-4157-98c9-a9cfe863fa12"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_019HWotrQ7wSuaBeyhqdGKVh","type":"tool_result","content":"/Users/simon-pierreboucher/auto-ka/data/autoka.db","is_error":false}]},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"2dcb622f-858d-48bc-a350-830989bb8e85","timestamp":"2026-08-25T14:16:30.926Z"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcGWM5RKa4Terq2Apqx","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_011RgDE2BgVtHcPucx7iv4s5","name":"Read","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/autoka/schema.py"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":7,"cache_creation_input_tokens":1131,"cache_read_input_tokens":10503,"cache_creation":{"ephemeral_5m_input_tokens":1131,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"aa13ad75-0bae-4d0b-940d-7d9515230730"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_011RgDE2BgVtHcPucx7iv4s5","type":"tool_result","content":"1\t# -----------------------------------------------------------------------------\n2\t# Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n3\t# Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n4\t# schema.py : modèle de données standardisé (Vehicle) + normalisation centrale\n5\t# -----------------------------------------------------------------------------\n6\t\"\"\"Schéma standard d'une annonce de véhicule usagé.\n7\t\n8\tChaque connecteur, peu importe le site source, produit des objets `Vehicle`\n9\tconformes à ce schéma. `finalize()` applique la couche de normalisation\n10\tcommune (autoka/normalize.py) : prix, kilométrage, année/marque/modèle\n11\tdéduits du titre, transmission/carburant/carrosserie canoniques, région\n12\tadministrative — les connecteurs restent simples et remplissent le brut.\n13\t\"\"\"\n14\tfrom __future__ import annotations\n15\t\n16\timport hashlib\n17\timport json\n18\tfrom dataclasses import dataclass, field, asdict\n19\t\n20\tfrom .normalize import ( # ré-exportés pour les connecteurs\n21\t city_gps,\n22\t infer_region,\n23\t normalize_body,\n24\t normalize_drivetrain,\n25\t normalize_fuel,\n26\t normalize_make,\n27\t normalize_transmission,\n28\t parse_mileage,\n29\t parse_price,\n30\t parse_year,\n31\t price_is_from,\n32\t split_title,\n33\t strip_accents,\n34\t)\n35\t\n36\t__all__ = [\n37\t \"Vehicle\", \"parse_price\", \"parse_mileage\", \"parse_year\", \"split_title\",\n38\t \"normalize_make\", \"normalize_transmission\", \"normalize_fuel\",\n39\t \"normalize_drivetrain\", \"normalize_body\", \"infer_region\", \"strip_accents\",\n40\t \"city_gps\",\n41\t]\n42\t\n43\t\n44\t@dataclass\n45\tclass Vehicle:\n46\t \"\"\"Annonce de véhicule usagé standardisée Auto-Ka.\"\"\"\n47\t\n48\t source: str # id de la source (voir data/sources.json)\n49\t external_id: str # identifiant chez la source (stock, VIN, slug)\n50\t url: str # page de l'annonce chez le concessionnaire\n51\t kind: str = \"auto\" # verticale : auto | moto | scooter\n52\t title: str = \"\" # ex. \"Toyota RAV4 XLE 2019\"\n53\t make: str = \"\" # Toyota, Honda, ...\n54\t model: str = \"\" # RAV4, Civic, ...\n55\t trim: str = \"\" # XLE AWD, Sport, ...\n56\t year: int | None = None\n57\t price: float | None = None # $ CAD affiché\n58\t price_label: str = \"\" # texte original (ex. \"21 495 $ + tx\")\n59\t mileage_km: float | None = None\n60\t mileage_label: str = \"\" # texte original (ex. \"45 678 km\")\n61\t transmission: str = \"\" # Automatique | Manuelle\n62\t fuel: str = \"\" # Essence | Diesel | Hybride | Hybride rechargeable | Électrique\n63\t drivetrain: str = \"\" # Traction | Propulsion | Intégrale / 4x4\n64\t body_type: str = \"\" # VUS | Berline | Camionnette | ...\n65\t exterior_color: str = \"\"\n66\t interior_color: str = \"\"\n67\t engine: str = \"\" # ex. \"2.5L 4 cyl.\"\n68\t doors: int | None = None\n69\t seats: int | None = None\n70\t vin: str = \"\"\n71\t stock_number: str = \"\"\n72\t dealer_name: str = \"\" # nom d'affichage du commerce\n73\t city: str = \"\" # ville du concessionnaire\n74\t region: str = \"\" # région administrative (déduite de city)\n75\t lat: float | None = None # GPS du concessionnaire (déduit de city —\n76\t lng: float | None = None # data/villes_gps.json ; rayon de recherche)\n77\t description: str = \"\"\n78\t features: list[str] = field(default_factory=list) # équipements (texte source)\n79\t details: dict = field(default_factory=dict) # champs structurés (JSON)\n80\t images: list[str] = field(default_factory=list) # URLs absolues\n81\t carfax_url: str = \"\"\n82\t\n83\t @property\n84\t def uid(self) -> str:\n85\t return f\"{self.source}:{self.external_id}\"\n86\t\n87\t def content_hash(self) -> str:\n88\t \"\"\"Hash du contenu pour la détection de changements (pseudo-webhook).\"\"\"\n89\t payload = asdict(self)\n90\t blob = json.dumps(payload, sort_keys=True, ensure_ascii=False)\n91\t return hashlib.sha256(blob.encode(\"utf-8\")).hexdigest()\n92\t\n93\t def finalize(self) -> \"Vehicle\":\n94\t \"\"\"Applique la normalisation commune. Appelé par le pipeline d'ingestion.\n95\t\n96\t Idempotent ; ne remplace jamais une valeur explicite du connecteur.\n97\t \"\"\"\n98\t self.title = \" \".join((self.title or \"\").split())\n99\t\n100\t # année / marque / modèle déduits du titre si absents\n101\t t_year, t_make, t_model = split_title(self.title)\n102\t if self.year is None:\n103\t self.year = t_year\n104\t if not self.make:\n105\t self.make = t_make\n106\t if not self.model and t_model:\n107\t # retirer la version du modèle déduit si elle duplique trim\n108\t self.model = t_model.split(\" \")[0]\n109\t self.make = normalize_make(self.make)\n110\t self.model = \" \".join(self.model.split())\n111\t\n112\t if self.price is None:\n113\t self.price = parse_price(self.price_label)\n114\t if self.mileage_km is None:\n115\t self.mileage_km = parse_mileage(self.mileage_label or self.description)\n116\t\n117\t self.transmission = normalize_transmission(self.transmission) or self.transmission\n118\t self.fuel = normalize_fuel(self.fuel) or self.fuel\n119\t self.drivetrain = normalize_drivetrain(self.drivetrain) or self.drivetrain\n120\t self.body_type = normalize_body(self.body_type) or self.body_type\n121\t\n122\t # replis conservateurs depuis le titre/la version quand la source\n123\t # n'expose pas le champ (jetons explicites seulement : AWD, PHEV…)\n124\t badge = f\"{self.title} {self.trim}\"\n125\t if not self.drivetrain:\n126\t from .normalize import infer_drivetrain_from_text\n127\t self.drivetrain = infer_drivetrain_from_text(badge)\n128\t if not self.fuel:\n129\t from .normalize import infer_fuel_from_text\n130\t self.fuel = infer_fuel_from_text(badge)\n131\t\n132\t if not self.region:\n133\t self.region = infer_region(self.city)\n134\t\n135\t # géolocalisation du concessionnaire (précision « ville » — suffit\n136\t # pour la recherche par rayon) si le connecteur ne l'a pas fournie\n137\t if self.lat is None or self.lng is None:\n138\t gps = city_gps(self.city)\n139\t if gps:\n140\t self.lat, self.lng = gps\n141\t\n142\t if self.price_label and price_is_from(self.price_label):\n143\t self.details[\"price_from\"] = True\n144\t\n145\t # année plausible seulement\n146\t if self.year is not None and not (1980 <= self.year <= 2027):\n147\t self.year = None\n148\t\n149\t # dédoublonner les images en préservant l'ordre\n150\t seen: set[str] = set()\n151\t self.images = [u for u in self.images\n152\t if u and not (u in seen or seen.add(u))]\n153\t return self\n154\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n"}]},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"50a26498-0310-4372-8fe7-46eb9ea2af55","timestamp":"2026-08-25T14:16:32.296Z"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcGWM5RKa4Terq2Apqx","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01U12T3PRNTiKBFoMvNDLZb7","name":"Read","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/autoka/db.py"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":7,"cache_creation_input_tokens":1131,"cache_read_input_tokens":10503,"cache_creation":{"ephemeral_5m_input_tokens":1131,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"4dee8cf8-7a9d-4bd9-b785-6128b09329cb"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01U12T3PRNTiKBFoMvNDLZb7","type":"tool_result","content":"1\t# -----------------------------------------------------------------------------\n2\t# Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n3\t# Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n4\t# db.py : persistance SQLite — upsert avec détection de changements,\n5\t# cycle de vie avec délai de grâce (2 syncs), détection de dérive,\n6\t# historique de prix (baisses de prix = signal clé en auto usagée),\n7\t# cache des pages détail.\n8\t# -----------------------------------------------------------------------------\n9\tfrom __future__ import annotations\n10\t\n11\timport json\n12\timport sqlite3\n13\timport statistics\n14\timport time\n15\tfrom pathlib import Path\n16\t\n17\tfrom .schema import Vehicle\n18\t\n19\tDB_PATH = Path(__file__).resolve().parent.parent / \"data\" / \"autoka.db\"\n20\t\n21\t# Nombre d'exécutions consécutives où une annonce doit être absente de la\n22\t# source avant d'être désactivée (délai de grâce contre les ratés ponctuels).\n23\tMISS_GRACE = 2\n24\t\n25\t# Dérive : si une source retourne <= DRIFT_RATIO × sa médiane historique\n26\t# (médiane >= DRIFT_MIN_BASE annonces), on alerte et on suspend les retraits.\n27\tDRIFT_RATIO = 0.25\n28\tDRIFT_MIN_BASE = 8\n29\tDRIFT_HISTORY = 5\n30\t\n31\t_SCHEMA = \"\"\"\n32\tCREATE TABLE IF NOT EXISTS vehicles (\n33\t uid TEXT PRIMARY KEY,\n34\t source TEXT NOT NULL,\n35\t external_id TEXT NOT NULL,\n36\t url TEXT,\n37\t kind TEXT DEFAULT 'auto',\n38\t title TEXT,\n39\t make TEXT,\n40\t model TEXT,\n41\t trim TEXT,\n42\t year INTEGER,\n43\t price REAL,\n44\t price_label TEXT,\n45\t mileage_km REAL,\n46\t mileage_label TEXT,\n47\t transmission TEXT,\n48\t fuel TEXT,\n49\t drivetrain TEXT,\n50\t body_type TEXT,\n51\t exterior_color TEXT,\n52\t interior_color TEXT,\n53\t engine TEXT,\n54\t doors INTEGER,\n55\t seats INTEGER,\n56\t vin TEXT,\n57\t stock_number TEXT,\n58\t dealer_name TEXT,\n59\t city TEXT,\n60\t region TEXT,\n61\t description TEXT,\n62\t features TEXT, -- JSON (liste de textes source)\n63\t details TEXT, -- JSON (champs structurés)\n64\t images TEXT, -- JSON\n65\t carfax_url TEXT,\n66\t content_hash TEXT,\n67\t first_seen REAL,\n68\t last_seen REAL,\n69\t updated_at REAL,\n70\t miss_count INTEGER DEFAULT 0,\n71\t active INTEGER DEFAULT 1\n72\t);\n73\tCREATE INDEX IF NOT EXISTS idx_vehicles_source ON vehicles(source);\n74\tCREATE INDEX IF NOT EXISTS idx_vehicles_make ON vehicles(make);\n75\tCREATE INDEX IF NOT EXISTS idx_vehicles_region ON vehicles(region);\n76\tCREATE INDEX IF NOT EXISTS idx_vehicles_active ON vehicles(active);\n77\tCREATE INDEX IF NOT EXISTS idx_vehicles_price ON vehicles(price);\n78\t\n79\tCREATE TABLE IF NOT EXISTS sync_log (\n80\t id INTEGER PRIMARY KEY AUTOINCREMENT,\n81\t source TEXT,\n82\t ts REAL,\n83\t found INTEGER,\n84\t added INTEGER,\n85\t updated INTEGER,\n86\t removed INTEGER,\n87\t ok INTEGER,\n88\t message TEXT,\n89\t stats TEXT -- JSON : taux de champs null, missed, alerte…\n90\t);\n91\t\n92\tCREATE TABLE IF NOT EXISTS detail_cache (\n93\t source TEXT NOT NULL,\n94\t external_id TEXT NOT NULL,\n95\t key TEXT, -- hash du contenu « liste » de l'annonce\n96\t payload TEXT, -- JSON opaque propre au connecteur\n97\t fetched_at REAL,\n98\t PRIMARY KEY (source, external_id)\n99\t);\n100\t\n101\tCREATE TABLE IF NOT EXISTS price_log (\n102\t uid TEXT NOT NULL,\n103\t ts REAL NOT NULL,\n104\t price REAL -- prix observé (NULL = retiré de l'affichage)\n105\t);\n106\tCREATE INDEX IF NOT EXISTS idx_price_log_uid ON price_log(uid);\n107\t\"\"\"\n108\t\n109\t\n110\t# Colonnes ajoutées après la v1 — migration automatique des bases existantes.\n111\t_MIGRATIONS = {\n112\t \"vehicles\": {\n113\t \"kind\": \"TEXT DEFAULT 'auto'\",\n114\t # GPS du concessionnaire (déduit de city — data/villes_gps.json) :\n115\t # permet la recherche par rayon autour d'un point\n116\t \"lat\": \"REAL\",\n117\t \"lng\": \"REAL\",\n118\t # dédoublonnage inter-sources par VIN (autoka/dedup.py) :\n119\t # dup_of = uid de l'annonce canonique (NULL = canonique ou unique) ;\n120\t # dup_sources = JSON des autres offres du même VIN (sur la canonique)\n121\t \"dup_of\": \"TEXT\",\n122\t \"dup_sources\": \"TEXT\",\n123\t },\n124\t}\n125\t\n126\t\n127\tdef connect() -> sqlite3.Connection:\n128\t DB_PATH.parent.mkdir(parents=True, exist_ok=True)\n129\t con = sqlite3.connect(DB_PATH, timeout=30)\n130\t con.row_factory = sqlite3.Row\n131\t # WAL : plusieurs processus de sync peuvent écrire sans se bloquer\n132\t con.execute(\"PRAGMA journal_mode=WAL\")\n133\t con.execute(\"PRAGMA busy_timeout=15000\")\n134\t con.executescript(_SCHEMA)\n135\t for table, cols in _MIGRATIONS.items():\n136\t existing = {r[\"name\"] for r in con.execute(f\"PRAGMA table_info({table})\")}\n137\t for col, decl in cols.items():\n138\t if col not in existing:\n139\t con.execute(f\"ALTER TABLE {table} ADD COLUMN {col} {decl}\")\n140\t # index sur des colonnes issues de migrations : après l'ALTER TABLE\n141\t con.execute(\"CREATE INDEX IF NOT EXISTS idx_vehicles_kind ON vehicles(kind)\")\n142\t con.execute(\n143\t \"CREATE INDEX IF NOT EXISTS idx_vehicles_latlng ON vehicles(lat, lng)\")\n144\t con.execute(\"CREATE INDEX IF NOT EXISTS idx_vehicles_vin ON vehicles(vin)\")\n145\t con.execute(\n146\t \"CREATE INDEX IF NOT EXISTS idx_vehicles_dup_of ON vehicles(dup_of)\")\n147\t con.commit()\n148\t return con\n149\t\n150\t\n151\t# ---------------------------------------------------------------------------\n152\t# Synchronisation d'une source\n153\t# ---------------------------------------------------------------------------\n154\t\n155\tdef _drift_alert(con: sqlite3.Connection, source: str, found: int,\n156\t null_price_rate: float) -> str | None:\n157\t \"\"\"Détecte une dérive du connecteur (chute du volume ou des prix extraits).\"\"\"\n158\t hist = con.execute(\n159\t \"SELECT found, stats FROM sync_log WHERE source=? AND ok=1\"\n160\t \" ORDER BY ts DESC LIMIT ?\", (source, DRIFT_HISTORY)).fetchall()\n161\t if len(hist) < 3:\n162\t return None\n163\t med_found = statistics.median(r[\"found\"] for r in hist)\n164\t if med_found >= DRIFT_MIN_BASE and found <= DRIFT_RATIO * med_found:\n165\t return (f\"dérive: {found} annonce(s) trouvée(s) contre une médiane de \"\n166\t f\"{med_found:.0f} — retraits suspendus, vérifier le connecteur\")\n167\t if found >= DRIFT_MIN_BASE and null_price_rate >= 0.8:\n168\t rates = []\n169\t for r in hist:\n170\t try:\n171\t rates.append(json.loads(r[\"stats\"] or \"{}\")[\"null_price_rate\"])\n172\t except (KeyError, ValueError, TypeError):\n173\t continue\n174\t if rates and statistics.median(rates) <= 0.3:\n175\t return (f\"dérive: {null_price_rate:.0%} des annonces sans prix \"\n176\t f\"(habituellement {statistics.median(rates):.0%}) — \"\n177\t \"le format de la source a probablement changé\")\n178\t return None\n179\t\n180\t\n181\tdef sync_source(con: sqlite3.Connection, source: str,\n182\t vehicles: list[Vehicle]) -> dict:\n183\t \"\"\"Synchronise les annonces d'une source.\n184\t\n185\t - nouvelle annonce -> insertion\n186\t - annonce modifiée -> mise à jour (comparaison de content_hash)\n187\t - annonce disparue -> miss_count += 1, puis active=0 après MISS_GRACE\n188\t exécutions consécutives (délai de grâce) — véhicule vendu ou retiré\n189\t - dérive détectée -> alerte consignée, retraits suspendus\n190\t \"\"\"\n191\t now = time.time()\n192\t added = updated = 0\n193\t seen_uids = set()\n194\t\n195\t n = len(vehicles)\n196\t null_price = sum(1 for v in vehicles if v.price is None)\n197\t null_km = sum(1 for v in vehicles if v.mileage_km is None)\n198\t null_price_rate = round(null_price / n, 3) if n else 0.0\n199\t\n200\t alert = _drift_alert(con, source, n, null_price_rate)\n201\t\n202\t for veh in vehicles:\n203\t seen_uids.add(veh.uid)\n204\t h = veh.content_hash()\n205\t row = con.execute(\"SELECT content_hash, price FROM vehicles WHERE uid=?\",\n206\t (veh.uid,)).fetchone()\n207\t params = dict(\n208\t uid=veh.uid, source=veh.source, external_id=veh.external_id,\n209\t url=veh.url, kind=veh.kind or \"auto\",\n210\t title=veh.title, make=veh.make, model=veh.model,\n211\t trim=veh.trim, year=veh.year, price=veh.price,\n212\t price_label=veh.price_label, mileage_km=veh.mileage_km,\n213\t mileage_label=veh.mileage_label, transmission=veh.transmission,\n214\t fuel=veh.fuel, drivetrain=veh.drivetrain, body_type=veh.body_type,\n215\t exterior_color=veh.exterior_color, interior_color=veh.interior_color,\n216\t engine=veh.engine, doors=veh.doors, seats=veh.seats, vin=veh.vin,\n217\t stock_number=veh.stock_number, dealer_name=veh.dealer_name,\n218\t city=veh.city, region=veh.region, lat=veh.lat, lng=veh.lng,\n219\t description=veh.description,\n220\t features=json.dumps(veh.features, ensure_ascii=False),\n221\t details=json.dumps(veh.details, ensure_ascii=False),\n222\t images=json.dumps(veh.images, ensure_ascii=False),\n223\t carfax_url=veh.carfax_url, content_hash=h, now=now,\n224\t )\n225\t if row is None:\n226\t con.execute(\n227\t \"\"\"INSERT INTO vehicles (uid, source, external_id, url, kind,\n228\t title, make, model, trim, year, price, price_label,\n229\t mileage_km, mileage_label, transmission, fuel, drivetrain,\n230\t body_type, exterior_color, interior_color, engine, doors,\n231\t seats, vin, stock_number, dealer_name, city, region,\n232\t lat, lng, description, features, details, images,\n233\t carfax_url, content_hash, first_seen, last_seen,\n234\t updated_at, miss_count, active)\n235\t VALUES (:uid,:source,:external_id,:url,:kind,:title,:make,\n236\t :model,:trim,:year,:price,:price_label,:mileage_km,\n237\t :mileage_label,:transmission,:fuel,:drivetrain,:body_type,\n238\t :exterior_color,:interior_color,:engine,:doors,:seats,:vin,\n239\t :stock_number,:dealer_name,:city,:region,:lat,:lng,\n240\t :description,:features,:details,:images,:carfax_url,\n241\t :content_hash,:now,:now,:now,0,1)\"\"\",\n242\t params)\n243\t if veh.price is not None: # prix initial = départ de l'historique\n244\t con.execute(\"INSERT INTO price_log (uid, ts, price) VALUES (?,?,?)\",\n245\t (veh.uid, now, veh.price))\n246\t added += 1\n247\t elif row[\"content_hash\"] != h:\n248\t con.execute(\n249\t \"\"\"UPDATE vehicles SET url=:url, kind=:kind, title=:title,\n250\t make=:make, model=:model, trim=:trim, year=:year, price=:price,\n251\t price_label=:price_label, mileage_km=:mileage_km,\n252\t mileage_label=:mileage_label, transmission=:transmission,\n253\t fuel=:fuel, drivetrain=:drivetrain, body_type=:body_type,\n254\t exterior_color=:exterior_color, interior_color=:interior_color,\n255\t engine=:engine, doors=:doors, seats=:seats, vin=:vin,\n256\t stock_number=:stock_number, dealer_name=:dealer_name,\n257\t city=:city, region=:region, lat=:lat, lng=:lng,\n258\t description=:description,\n259\t features=:features, details=:details, images=:images,\n260\t carfax_url=:carfax_url, content_hash=:content_hash,\n261\t last_seen=:now, updated_at=:now, miss_count=0, active=1\n262\t WHERE uid=:uid\"\"\", params)\n263\t if veh.price != row[\"price\"]: # changement de prix -> historique\n264\t con.execute(\"INSERT INTO price_log (uid, ts, price) VALUES (?,?,?)\",\n265\t (veh.uid, now, veh.price))\n266\t updated += 1\n267\t else:\n268\t con.execute(\n269\t \"UPDATE vehicles SET last_seen=?, miss_count=0, active=1 WHERE uid=?\",\n270\t (now, veh.uid))\n271\t\n272\t # Annonces de cette source qui n'apparaissent plus : délai de grâce,\n273\t # puis désactivation (véhicule vendu). Suspendu si dérive détectée.\n274\t removed = missed = 0\n275\t if not alert:\n276\t for r in con.execute(\n277\t \"SELECT uid, miss_count FROM vehicles WHERE source=? AND active=1\",\n278\t (source,)).fetchall():\n279\t if r[\"uid\"] in seen_uids:\n280\t continue\n281\t missed += 1\n282\t if r[\"miss_count\"] + 1 >= MISS_GRACE:\n283\t con.execute(\n284\t \"UPDATE vehicles SET active=0, miss_count=?, updated_at=?\"\n285\t \" WHERE uid=?\", (r[\"miss_count\"] + 1, now, r[\"uid\"]))\n286\t removed += 1\n287\t else:\n288\t con.execute(\"UPDATE vehicles SET miss_count=miss_count+1 WHERE uid=?\",\n289\t (r[\"uid\"],))\n290\t\n291\t stats = {\n292\t \"null_price_rate\": null_price_rate,\n293\t \"null_km_rate\": round(null_km / n, 3) if n else 0.0,\n294\t \"missed\": missed,\n295\t }\n296\t if alert:\n297\t stats[\"alert\"] = alert\n298\t con.execute(\n299\t \"INSERT INTO sync_log (source, ts, found, added, updated, removed, ok,\"\n300\t \" message, stats) VALUES (?,?,?,?,?,?,1,?,?)\",\n301\t (source, now, n, added, updated, removed, alert or \"ok\",\n302\t json.dumps(stats, ensure_ascii=False)))\n303\t con.commit()\n304\t out = {\"source\": source, \"found\": n, \"added\": added,\n305\t \"updated\": updated, \"removed\": removed}\n306\t if alert:\n307\t out[\"alert\"] = alert\n308\t return out\n309\t\n310\t\n311\tdef log_failure(con: sqlite3.Connection, source: str, message: str) -> None:\n312\t con.execute(\n313\t \"INSERT INTO sync_log (source, ts, found, added, updated, removed, ok, message)\"\n314\t \" VALUES (?,?,0,0,0,0,0,?)\", (source, time.time(), message))\n315\t con.commit()\n316\t\n317\t\n318\t# ---------------------------------------------------------------------------\n319\t# Cache des pages détail (« détail si nouveau/modifié »)\n320\t# ---------------------------------------------------------------------------\n321\t\n322\tdef get_cached_detail(con: sqlite3.Connection, source: str,\n323\t external_id: str, key: str) -> dict | None:\n324\t \"\"\"Payload détail mis en cache si la clé (hash liste) n'a pas changé.\"\"\"\n325\t row = con.execute(\n326\t \"SELECT key, payload FROM detail_cache WHERE source=? AND external_id=?\",\n327\t (source, external_id)).fetchone()\n328\t if row and row[\"key\"] == key and row[\"payload\"]:\n329\t try:\n330\t return json.loads(row[\"payload\"])\n331\t except ValueError:\n332\t return None\n333\t return None\n334\t\n335\t\n336\tdef put_cached_detail(con: sqlite3.Connection, source: str,\n337\t external_id: str, key: str, payload: dict) -> None:\n338\t con.execute(\n339\t \"INSERT INTO detail_cache (source, external_id, key, payload, fetched_at)\"\n340\t \" VALUES (?,?,?,?,?)\"\n341\t \" ON CONFLICT(source, external_id) DO UPDATE SET\"\n342\t \" key=excluded.key, payload=excluded.payload, fetched_at=excluded.fetched_at\",\n343\t (source, external_id, key, json.dumps(payload, ensure_ascii=False),\n344\t time.time()))\n345\t con.commit()\n346\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n"}]},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"f43394ca-582b-47f7-8675-cde312220716","timestamp":"2026-08-25T14:16:32.609Z"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcGWM5RKa4Terq2Apqx","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01QVHc6Tve4bLBy59n9BgVkk","name":"Read","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/autoka/connectors/__init__.py"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":7,"cache_creation_input_tokens":1131,"cache_read_input_tokens":10503,"cache_creation":{"ephemeral_5m_input_tokens":1131,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"a8bc0c34-684f-42e6-8e94-62ab2c3f59d5"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01QVHc6Tve4bLBy59n9BgVkk","type":"tool_result","content":"1\t# -----------------------------------------------------------------------------\n2\t# Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n3\t# Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n4\t# connectors/__init__.py : registre AUTO-DÉCOUVRANT des connecteurs\n5\t# Tout module de ce paquet contenant une sous-classe de BaseConnector avec un\n6\t# source_id non vide est enregistré automatiquement — aucun fichier partagé\n7\t# à modifier pour ajouter un connecteur.\n8\t# -----------------------------------------------------------------------------\n9\tfrom __future__ import annotations\n10\t\n11\timport importlib\n12\timport pkgutil\n13\timport sys\n14\t\n15\tfrom .base import BaseConnector\n16\t\n17\tCONNECTORS: dict[str, type[BaseConnector]] = {}\n18\t\n19\tfor _mod in pkgutil.iter_modules(__path__):\n20\t if _mod.name in (\"base\", \"__init__\") or _mod.name.startswith(\"_\"):\n21\t continue\n22\t try:\n23\t module = importlib.import_module(f\"{__name__}.{_mod.name}\")\n24\t except Exception as exc: # un connecteur cassé ne bloque pas les autres\n25\t print(f\"[auto-ka] connecteur '{_mod.name}' ignoré : {exc}\", file=sys.stderr)\n26\t continue\n27\t for obj in vars(module).values():\n28\t if (isinstance(obj, type) and issubclass(obj, BaseConnector)\n29\t and obj is not BaseConnector and getattr(obj, \"source_id\", \"\")):\n30\t CONNECTORS[obj.source_id] = obj\n31\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n"}]},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"1b70cf3f-7240-4a02-9a3f-10236a305527","timestamp":"2026-08-25T14:16:32.978Z"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcGWM5RKa4Terq2Apqx","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_014d5p8FcWLisavMCEXkbK4J","name":"Read","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/autoka/connectors/_resilient.py"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":7,"cache_creation_input_tokens":1131,"cache_read_input_tokens":10503,"cache_creation":{"ephemeral_5m_input_tokens":1131,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"375645ec-0b22-49f4-b11f-c25c90b47fab"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_014d5p8FcWLisavMCEXkbK4J","type":"tool_result","content":"1\t# =============================================================================\n2\t# Groupe KA — connecteurs : chaîne de fetch anti-bot RÉSILIENTE (commune)\n3\t# Auteur : Simon-Pierre Boucher \n4\t# Fichier : connectors/_resilient.py\n5\t# -----------------------------------------------------------------------------\n6\t# But : rendre les connecteurs durables dans le temps. Quand un site jusque-là\n7\t# ouvert déploie un anti-bot (Cloudflare / Akamai / Incapsula / PerimeterX) ou\n8\t# renvoie 403/429/503, la requête directe N'ÉCHOUE PLUS silencieusement : elle\n9\t# ESCALADE automatiquement à travers une chaîne de secours :\n10\t#\n11\t# 1. Direct — la session du connecteur (curl_cffi impersonate si\n12\t# dispo, sinon requests) : rapide et gratuit.\n13\t# 2. Oxylabs (résid.) — proxy résidentiel Canada (-cc-CA) : IP propre.\n14\t# 3. Scrapfly (ASP) — bypass anti-bot géré + rendu JS optionnel.\n15\t# 4. Bright Data — Web Unlocker : déblocage premium, dernier recours.\n16\t#\n17\t# Le premier backend qui renvoie un 200 non vide gagne. Si TOUS échouent, on\n18\t# renvoie la dernière réponse (avec son code d'erreur) pour que le connecteur\n19\t# journalise l'échec comme avant — aucun changement de comportement en cas\n20\t# d'échec total, aucun blocage silencieux.\n21\t#\n22\t# Conception :\n23\t# - Aucun effet de bord à l'import ; toute brique non configurée est sautée.\n24\t# - Les clés sont lues de os.environ, avec repli sur le .env de l'app puis\n25\t# ~/.claude/.env, et acceptent les deux noms Scrapfly (SCRAPFLY_KEY /\n26\t# SCRAPFLY_API_KEY). => aucune modif de .env nécessaire.\n27\t# - `_ResilientResponse` imite requests.Response (.text/.content/.status_code/\n28\t# .url/.headers/.json()/.ok/.raise_for_status()) : les connecteurs existants\n29\t# continuent de fonctionner sans modification.\n30\t# - Coupe-circuit par hôte : après plusieurs escalades totalement infructueuses\n31\t# sur un même hôte, on saute l'escalade payante pendant un temps de repos\n32\t# (évite de brûler du quota Scrapfly/Bright Data sur une source morte).\n33\t# =============================================================================\n34\tfrom __future__ import annotations\n35\t\n36\timport json as _json\n37\timport os\n38\timport time\n39\tfrom pathlib import Path\n40\tfrom urllib.parse import quote, urlsplit\n41\t\n42\timport requests\n43\t\n44\t# -- curl_cffi est OPTIONNEL (meilleur fingerprint TLS s'il est présent) ------\n45\ttry: # pragma: no cover\n46\t from curl_cffi import requests as _cffi # type: ignore\n47\t _HAS_CFFI = True\n48\texcept Exception: # noqa: BLE001\n49\t _cffi = None\n50\t _HAS_CFFI = False\n51\t\n52\t# Codes HTTP typiques d'un blocage anti-bot (≠ 401/404/410/500 « métier » :\n53\t# 401 = auth manquante, 403/429 = bot bloqué, 5xx CF = challenge/edge).\n54\tBLOCK_STATUS = {403, 429, 503, 520, 521, 522, 523, 524, 526, 1020}\n55\t\n56\t# Marqueurs de page-challenge (Cloudflare/Akamai/Incapsula/PerimeterX/DataDome).\n57\t_CHALLENGE_MARKERS = (\n58\t \"just a moment\", \"cf-browser-verification\", \"cf-challenge\",\n59\t \"attention required\", \"access denied\", \"request unsuccessful\",\n60\t \"px-captcha\", \"perimeterx\", \"incapsula\", \"_incapsula_\", \"datadome\",\n61\t \"captcha-delivery\", \"please enable javascript and cookies\",\n62\t \"checking your browser\", \"ddos protection by\",\n63\t)\n64\t\n65\t_UA = (\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 \"\n66\t \"(KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36\")\n67\t\n68\t# Coupe-circuit en mémoire : hôte -> (timestamp_jusquà, échecs_consécutifs)\n69\t_COOLDOWN: dict[str, tuple[float, int]] = {}\n70\t_COOLDOWN_HITS = 3 # nb d'échecs totaux avant repos\n71\t_COOLDOWN_SECONDS = 900.0 # 15 min de repos pour un hôte « mort »\n72\t\n73\t# -- chargement paresseux des secrets ----------------------------------------\n74\t_ENV_CACHE: dict[str, str] | None = None\n75\t\n76\t\n77\tdef _load_env_files() -> dict[str, str]:\n78\t \"\"\"Parse les .env candidats une seule fois (repli si os.environ vide).\"\"\"\n79\t global _ENV_CACHE\n80\t if _ENV_CACHE is not None:\n81\t return _ENV_CACHE\n82\t out: dict[str, str] = {}\n83\t candidates = []\n84\t # .env de l'app (remonte quelques niveaux depuis ce module)\n85\t here = Path(__file__).resolve()\n86\t for up in range(2, 6):\n87\t try:\n88\t candidates.append(here.parents[up] / \".env\")\n89\t except IndexError:\n90\t break\n91\t candidates.append(Path.home() / \".claude\" / \".env\")\n92\t for path in candidates:\n93\t try:\n94\t if not path.is_file():\n95\t continue\n96\t for line in path.read_text(encoding=\"utf-8\", errors=\"ignore\").splitlines():\n97\t line = line.strip()\n98\t if not line or line.startswith(\"#\") or \"=\" not in line:\n99\t continue\n100\t k, _, v = line.partition(\"=\")\n101\t k, v = k.strip(), v.strip().strip('\"').strip(\"'\")\n102\t # ne pas écraser une valeur déjà trouvée (priorité app > global)\n103\t if k and k not in out:\n104\t out[k] = v\n105\t except Exception: # noqa: BLE001\n106\t continue\n107\t _ENV_CACHE = out\n108\t return out\n109\t\n110\t\n111\tdef _secret(*names: str) -> str | None:\n112\t \"\"\"Cherche une clé dans os.environ puis dans les .env (par ordre de noms).\"\"\"\n113\t for n in names:\n114\t v = os.environ.get(n)\n115\t if v:\n116\t return v\n117\t env = _load_env_files()\n118\t for n in names:\n119\t v = env.get(n)\n120\t if v:\n121\t return v\n122\t return None\n123\t\n124\t\n125\t# -- réponse compatible requests.Response ------------------------------------\n126\tclass _ResilientResponse:\n127\t \"\"\"Imite le minimum utile d'une requests.Response pour les connecteurs.\"\"\"\n128\t\n129\t def __init__(self, url: str, status_code: int, text: str,\n130\t headers: dict | None = None, via: str = \"direct\") -> None:\n131\t self.url = url\n132\t self.status_code = int(status_code or 0)\n133\t self._text = text or \"\"\n134\t self.headers = headers or {}\n135\t self.encoding = \"utf-8\"\n136\t self.via = via # backend gagnant (diagnostic)\n137\t\n138\t @property\n139\t def text(self) -> str:\n140\t return self._text\n141\t\n142\t @property\n143\t def content(self) -> bytes:\n144\t return self._text.encode(\"utf-8\", errors=\"ignore\")\n145\t\n146\t @property\n147\t def ok(self) -> bool:\n148\t return 200 <= self.status_code < 400\n149\t\n150\t def json(self, **kw):\n151\t return _json.loads(self._text)\n152\t\n153\t def raise_for_status(self):\n154\t if 400 <= self.status_code < 600:\n155\t raise requests.HTTPError(\n156\t f\"{self.status_code} via {self.via} pour {self.url}\",\n157\t response=self) # type: ignore[arg-type]\n158\t return None\n159\t\n160\t def __repr__(self) -> str: # pragma: no cover\n161\t return f\"<_ResilientResponse [{self.status_code}] via {self.via}>\"\n162\t\n163\t\n164\t# -- détection de blocage -----------------------------------------------------\n165\tdef is_blocked(resp) -> bool:\n166\t \"\"\"True si la réponse ressemble à un blocage anti-bot (≠ erreur métier).\"\"\"\n167\t if resp is None:\n168\t return True\n169\t code = getattr(resp, \"status_code\", 0) or 0\n170\t if code in BLOCK_STATUS:\n171\t return True\n172\t # 200 mais page-challenge servie\n173\t if code == 200:\n174\t try:\n175\t body = (resp.text or \"\")[:4000].lower()\n176\t except Exception: # noqa: BLE001\n177\t return False\n178\t server = str(resp.headers.get(\"Server\", \"\")).lower() if getattr(resp, \"headers\", None) else \"\"\n179\t if any(m in body for m in _CHALLENGE_MARKERS):\n180\t return True\n181\t if \"cloudflare\" in server and (\"captcha\" in body or \"challenge\" in body):\n182\t return True\n183\t return False\n184\t\n185\t\n186\tdef _host(url: str) -> str:\n187\t try:\n188\t return urlsplit(url).netloc.lower()\n189\t except Exception: # noqa: BLE001\n190\t return url\n191\t\n192\t\n193\tdef _cooling(host: str) -> bool:\n194\t until, _ = _COOLDOWN.get(host, (0.0, 0))\n195\t return time.time() < until\n196\t\n197\t\n198\tdef _note_failure(host: str) -> None:\n199\t until, hits = _COOLDOWN.get(host, (0.0, 0))\n200\t hits += 1\n201\t if hits >= _COOLDOWN_HITS:\n202\t _COOLDOWN[host] = (time.time() + _COOLDOWN_SECONDS, 0)\n203\t else:\n204\t _COOLDOWN[host] = (until, hits)\n205\t\n206\t\n207\tdef _note_success(host: str) -> None:\n208\t _COOLDOWN.pop(host, None)\n209\t\n210\t\n211\t# -- backends d'escalade ------------------------------------------------------\n212\tdef _try_oxylabs(url: str, timeout: int, country: str,\n213\t headers: dict | None) -> _ResilientResponse | None:\n214\t endpoint = _secret(\"OXYLABS_PROXY\") # pr.oxylabs.io:7777\n215\t user = _secret(\"OXYLABS_PROXY_USER\") # customer-... (sans -cc-XX)\n216\t pwd = _secret(\"OXYLABS_PROXY_PASS\")\n217\t if not (endpoint and user and pwd):\n218\t return None\n219\t cc = (country or \"ca\").upper()\n220\t puser = f\"{user}-cc-{cc}\"\n221\t proxy = f\"http://{quote(puser, safe='')}:{quote(pwd, safe='')}@{endpoint}\"\n222\t proxies = {\"http\": proxy, \"https\": proxy}\n223\t hdrs = {\"User-Agent\": _UA}\n224\t if headers:\n225\t hdrs.update(headers)\n226\t try:\n227\t r = requests.get(url, proxies=proxies, headers=hdrs, timeout=timeout,\n228\t verify=False) # noqa: S501 (proxy MITM du CA Oxylabs)\n229\t return _ResilientResponse(url, r.status_code, r.text,\n230\t dict(r.headers), via=\"oxylabs\")\n231\t except Exception: # noqa: BLE001\n232\t return None\n233\t\n234\t\n235\tdef _try_scrapfly(url: str, timeout: int, country: str, render_js: bool,\n236\t headers: dict | None) -> _ResilientResponse | None:\n237\t key = _secret(\"SCRAPFLY_KEY\", \"SCRAPFLY_API_KEY\")\n238\t if not key:\n239\t return None\n240\t params = {\"key\": key, \"url\": url, \"country\": country or \"ca\",\n241\t \"asp\": \"true\", \"proxy_pool\": \"public_residential_pool\"}\n242\t if render_js:\n243\t params[\"render_js\"] = \"true\"\n244\t if headers:\n245\t for k, v in headers.items():\n246\t params[f\"headers[{k}]\"] = v\n247\t try:\n248\t r = requests.get(\"https://api.scrapfly.io/scrape\", params=params,\n249\t timeout=max(timeout, 180))\n250\t result = (r.json() or {}).get(\"result\") or {}\n251\t return _ResilientResponse(\n252\t url, result.get(\"status_code\") or 0, result.get(\"content\") or \"\",\n253\t (result.get(\"response_headers\") or {}), via=\"scrapfly\")\n254\t except Exception: # noqa: BLE001\n255\t return None\n256\t\n257\t\n258\tdef _try_brightdata(url: str, timeout: int,\n259\t headers: dict | None) -> _ResilientResponse | None:\n260\t key = _secret(\"BRIGHTDATA_API_KEY\")\n261\t zone = _secret(\"BRIGHTDATA_ZONE\") or \"web_unlocker1\"\n262\t if not key:\n263\t return None\n264\t try:\n265\t r = requests.post(\n266\t \"https://api.brightdata.com/request\",\n267\t headers={\"Authorization\": f\"Bearer {key}\",\n268\t \"Content-Type\": \"application/json\"},\n269\t json={\"zone\": zone, \"url\": url, \"format\": \"raw\"},\n270\t timeout=max(timeout, 120))\n271\t return _ResilientResponse(url, r.status_code, r.text,\n272\t dict(r.headers), via=\"brightdata\")\n273\t except Exception: # noqa: BLE001\n274\t return None\n275\t\n276\t\n277\t# -- API publique -------------------------------------------------------------\n278\tdef escalate(url: str, *, timeout: int = 30, country: str = \"ca\",\n279\t render_js: bool = False, headers: dict | None = None,\n280\t original=None):\n281\t \"\"\"Tente la chaîne de secours et renvoie la meilleure réponse.\n282\t\n283\t Renvoie un `_ResilientResponse` 200 dès qu'un backend réussit ; sinon la\n284\t dernière réponse tentée (ou `original`) pour préserver le comportement\n285\t d'échec du connecteur. Respecte le coupe-circuit par hôte.\n286\t \"\"\"\n287\t host = _host(url)\n288\t if _cooling(host):\n289\t return original # source au repos : on ne brûle pas de quota payant\n290\t\n291\t last = original\n292\t for backend in (\n293\t lambda: _try_oxylabs(url, timeout, country, headers),\n294\t lambda: _try_scrapfly(url, timeout, country, render_js, headers),\n295\t lambda: _try_brightdata(url, timeout, headers),\n296\t ):\n297\t resp = backend()\n298\t if resp is None:\n299\t continue\n300\t last = resp\n301\t if resp.status_code == 200 and resp.text and not is_blocked(resp):\n302\t _note_success(host)\n303\t return resp\n304\t time.sleep(0.4)\n305\t\n306\t _note_failure(host)\n307\t return last if last is not None else original\n308\t\n309\t\n310\tdef escalate_if_blocked(resp, url: str, *, timeout: int = 30,\n311\t country: str = \"ca\", render_js: bool = False,\n312\t headers: dict | None = None):\n313\t \"\"\"Renvoie `resp` s'il est bon ; sinon lance l'escalade anti-bot.\"\"\"\n314\t if not is_blocked(resp):\n315\t return resp\n316\t better = escalate(url, timeout=timeout, country=country,\n317\t render_js=render_js, headers=headers, original=resp)\n318\t return better if better is not None else resp\n319\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n"}]},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"3d7ae683-062b-49ec-9430-6d59efa482d5","timestamp":"2026-08-25T14:16:32.982Z"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcGfAecCXosKPwRTSkG","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_0165JdLNdV5GZaWd5EtWRJw3","name":"Read","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/autoka/ingest.py"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":7,"cache_creation_input_tokens":13187,"cache_read_input_tokens":11634,"cache_creation":{"ephemeral_5m_input_tokens":13187,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"811d7efc-c939-4980-bbca-6b18764ce8d9"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_0165JdLNdV5GZaWd5EtWRJw3","type":"tool_result","content":"1\t# -----------------------------------------------------------------------------\n2\t# Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n3\t# Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n4\t# ingest.py : pipeline d'ingestion — exécute les connecteurs et synchronise\n5\t# la base (ajouts / mises à jour / retraits) = inventaire à jour\n6\t# -----------------------------------------------------------------------------\n7\tfrom __future__ import annotations\n8\t\n9\timport sys\n10\timport time\n11\timport traceback\n12\t\n13\tfrom . import db\n14\tfrom .connectors import CONNECTORS\n15\t\n16\t\n17\tdef run(sources: list[str] | None = None) -> list[dict]:\n18\t \"\"\"Exécute l'ingestion pour toutes les sources (ou celles demandées).\"\"\"\n19\t con = db.connect()\n20\t results = []\n21\t targets = sources or list(CONNECTORS.keys())\n22\t for sid in targets:\n23\t cls = CONNECTORS.get(sid)\n24\t if cls is None:\n25\t print(f\"[auto-ka] connecteur inconnu : {sid}\", file=sys.stderr)\n26\t continue\n27\t t0 = time.time()\n28\t print(f\"[auto-ka] sync {sid} ...\")\n29\t try:\n30\t vehicles = cls().fetch()\n31\t finalized, dropped = [], 0\n32\t for veh in vehicles:\n33\t try:\n34\t finalized.append(veh.finalize())\n35\t except Exception: # une annonce malformée ne bloque pas la source\n36\t dropped += 1\n37\t stats = db.sync_source(con, sid, finalized)\n38\t stats[\"seconds\"] = round(time.time() - t0, 1)\n39\t if dropped:\n40\t stats[\"dropped\"] = dropped\n41\t if stats.get(\"alert\"):\n42\t print(f\"[auto-ka] ⚠ ALERTE {sid} : {stats['alert']}\")\n43\t print(f\"[auto-ka] {stats}\")\n44\t results.append(stats)\n45\t except Exception as exc: # robustesse : une source ne bloque pas les autres\n46\t db.log_failure(con, sid, f\"{exc}\")\n47\t traceback.print_exc()\n48\t results.append({\"source\": sid, \"error\": str(exc)})\n49\t # dédoublonnage inter-sources par VIN — recalculé après chaque cycle\n50\t try:\n51\t from . import dedup\n52\t dedup.recompute(con)\n53\t except Exception:\n54\t traceback.print_exc()\n55\t con.close()\n56\t return results\n57\t\n58\t\n59\tdef watch(interval_seconds: int = 7200) -> None:\n60\t \"\"\"Boucle de rafraîchissement périodique (pseudo-webhook par sondage).\"\"\"\n61\t while True:\n62\t run()\n63\t print(f\"[auto-ka] prochaine synchronisation dans {interval_seconds}s\")\n64\t time.sleep(interval_seconds)\n65\t\n66\t\n67\tif __name__ == \"__main__\":\n68\t run(sys.argv[1:] or None)\n69\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n"}]},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"17d72989-a532-4e0a-9a7c-cd1f6d2b16e5","timestamp":"2026-08-25T14:16:34.942Z"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcGfAecCXosKPwRTSkG","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01XeBxPasebvQZYbjhy9Kdt9","name":"Read","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/autoka/normalize.py","limit":100},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":7,"cache_creation_input_tokens":13187,"cache_read_input_tokens":11634,"cache_creation":{"ephemeral_5m_input_tokens":13187,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"1720a882-020a-4291-8517-443652b85810"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01XeBxPasebvQZYbjhy9Kdt9","type":"tool_result","content":"1\t# -----------------------------------------------------------------------------\n2\t# Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n3\t# Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n4\t# normalize.py : normalisation des champs véhicule — prix, kilométrage, année,\n5\t# marque/modèle, transmission, carburant, motricité, carrosserie,\n6\t# ville -> région administrative.\n7\t# -----------------------------------------------------------------------------\n8\tfrom __future__ import annotations\n9\t\n10\timport re\n11\timport unicodedata\n12\t\n13\t__all__ = [\n14\t \"strip_accents\", \"parse_price\", \"price_is_from\", \"parse_mileage\",\n15\t \"parse_year\", \"normalize_make\", \"split_title\", \"normalize_transmission\",\n16\t \"normalize_fuel\", \"normalize_drivetrain\", \"normalize_body\", \"infer_region\",\n17\t \"city_gps\", \"MAKES\",\n18\t]\n19\t\n20\t\n21\tdef strip_accents(text: str) -> str:\n22\t return \"\".join(c for c in unicodedata.normalize(\"NFD\", text)\n23\t if unicodedata.category(c) != \"Mn\")\n24\t\n25\t\n26\t# ---------------------------------------------------------------------------\n27\t# Prix et kilométrage\n28\t# ---------------------------------------------------------------------------\n29\t\n30\t_PRICE_RE = re.compile(r\"(\\d{1,3}(?:[ ,.]\\d{3})+|\\d{3,6})(?:[,.](\\d{2}))?\\s*\\$\")\n31\t_PRICE_BARE_RE = re.compile(r\"\\$\\s*(\\d{1,3}(?:[ ,.]\\d{3})+|\\d{3,6})\")\n32\t\n33\t\n34\tdef parse_price(label: str | None) -> float | None:\n35\t \"\"\"« 21 495 $ », « $21,495 », « 21495$ » -> 21495.0 (None si absent/0).\"\"\"\n36\t if not label:\n37\t return None\n38\t m = _PRICE_RE.search(label) or _PRICE_BARE_RE.search(label)\n39\t if not m:\n40\t return None\n41\t raw = re.sub(r\"[ ,.]\", \"\", m.group(1))\n42\t try:\n43\t value = float(raw)\n44\t except ValueError:\n45\t return None\n46\t # bornes de vraisemblance pour une auto usagée\n47\t if value < 300 or value > 500_000:\n48\t return None\n49\t return value\n50\t\n51\t\n52\tdef price_is_from(label: str) -> bool:\n53\t return bool(re.search(r\"à partir|a partir|starting|from\", label, re.I))\n54\t\n55\t\n56\t_KM_RE = re.compile(r\"(\\d{1,3}(?:[ ,.]\\d{3})+|\\d+)\\s*km\", re.I)\n57\t\n58\t\n59\tdef parse_mileage(label: str | None) -> float | None:\n60\t \"\"\"« 45 678 km », « 45,678 KM » -> 45678.0.\"\"\"\n61\t if not label:\n62\t return None\n63\t m = _KM_RE.search(label)\n64\t if not m:\n65\t return None\n66\t raw = re.sub(r\"[ ,.]\", \"\", m.group(1))\n67\t try:\n68\t value = float(raw)\n69\t except ValueError:\n70\t return None\n71\t if value < 0 or value > 900_000:\n72\t return None\n73\t return value\n74\t\n75\t\n76\t_YEAR_RE = re.compile(r\"\\b(19[89]\\d|20[0-3]\\d)\\b\")\n77\t\n78\t\n79\tdef parse_year(text: str | None) -> int | None:\n80\t if not text:\n81\t return None\n82\t m = _YEAR_RE.search(text)\n83\t return int(m.group(1)) if m else None\n84\t\n85\t\n86\t# ---------------------------------------------------------------------------\n87\t# Marques (canoniques) — clé = version sans accents/majuscules/espaces\n88\t# ---------------------------------------------------------------------------\n89\t\n90\tMAKES = [\n91\t \"Acura\", \"Alfa Romeo\", \"Aston Martin\", \"Audi\", \"Bentley\", \"BMW\", \"Buick\",\n92\t \"Cadillac\", \"Chevrolet\", \"Chrysler\", \"Dodge\", \"Ferrari\", \"Fiat\", \"Fisker\",\n93\t \"Ford\", \"Genesis\", \"GMC\", \"Honda\", \"Hummer\", \"Hyundai\", \"Infiniti\",\n94\t \"Jaguar\", \"Jeep\", \"Kia\", \"Lamborghini\", \"Land Rover\", \"Lexus\", \"Lincoln\",\n95\t \"Lotus\", \"Maserati\", \"Mazda\", \"McLaren\", \"Mercedes-Benz\", \"Mercury\",\n96\t \"MINI\", \"Mitsubishi\", \"Nissan\", \"Oldsmobile\", \"Plymouth\", \"Polestar\",\n97\t \"Pontiac\", \"Porsche\", \"RAM\", \"Rivian\", \"Rolls-Royce\", \"Saab\", \"Saturn\",\n98\t \"Scion\", \"Smart\", \"Subaru\", \"Suzuki\", \"Tesla\", \"Toyota\", \"VinFast\",\n99\t \"Volkswagen\", \"Volvo\",\n100\t]\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n"}]},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"efded4bd-3f3d-4206-84f5-1a4cce58fb0f","timestamp":"2026-08-25T14:16:35.261Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"aa77f553c30839219","tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","description":"Finding /Users/simon-pierreboucher/auto-ka/autoka/connect…","usage":{"total_tokens":24867,"tool_uses":11,"duration_ms":9156},"last_tool_name":"Glob","uuid":"37aa352f-44ac-4c7c-a51d-0efa6b56e5f6","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcGfAecCXosKPwRTSkG","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01UfWxzaKnhHsx79No3RphsP","name":"Glob","input":{"pattern":"/Users/simon-pierreboucher/auto-ka/autoka/connectors/*.py"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":7,"cache_creation_input_tokens":13187,"cache_read_input_tokens":11634,"cache_creation":{"ephemeral_5m_input_tokens":13187,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"aa6505fe-f85f-4cd9-8659-8b5e972afb09"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01UfWxzaKnhHsx79No3RphsP","type":"tool_result","content":"autoka/connectors/__init__.py\nautoka/connectors/okaze.py\nautoka/connectors/yannicklaberge.py\nautoka/connectors/clubautozone.py\nautoka/connectors/jlkauto.py\nautoka/connectors/ototr.py\nautoka/connectors/megacentre.py\nautoka/connectors/vvu_dealers.py\nautoka/connectors/convertus_fc.py\nautoka/connectors/gatsby_dealers.py\nautoka/connectors/stefoychrysler.py\nautoka/connectors/dupontford.py\nautoka/connectors/autodurocher.py\nautoka/connectors/albioccasion.py\nautoka/connectors/central_dealers.py\nautoka/connectors/hgregoire.py\nautoka/connectors/montjolichrysler.py\nautoka/connectors/classeauto.py\nautoka/connectors/occasionbeaucage.py\nautoka/connectors/desmeules.py\nautoka/connectors/d2c_dealers.py\nautoka/connectors/sm360_dealers.py\nautoka/connectors/magnetis_dealers.py\nautoka/connectors/automobileendirect.py\nautoka/connectors/leprixdugros.py\nautoka/connectors/occasioncharlevoix.py\nautoka/connectors/moto_dealers.py\nautoka/connectors/kijiji.py\nautoka/connectors/autotrader.py\nautoka/connectors/cargurus.py\nautoka/connectors/otogo.py\nautoka/connectors/_resilient.py\nautoka/connectors/base.py\nautoka/connectors/autousagee.py"}]},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"fdfce9d4-162e-4ceb-b21d-55a3b7048c62","timestamp":"2026-08-25T14:16:35.366Z"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcEdiXZ1KAUb8SP5DCC","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_015F7DsyVCzdiEThUyHj1REn","name":"Agent","input":{"description":"Explorer page détail frontend","subagent_type":"Explore","prompt":"Explore le frontend du projet /Users/simon-pierreboucher/auto-ka/frontend (Vite + TypeScript, agrégateur d'annonces autos usagées Québec, style \"Groupe Ka\"). Thoroughness: very thorough.\n\nJe prépare un \"major upgrade\" de la page détail d'une annonce individuelle (fiche véhicule). J'ai besoin de :\n\n1. **Structure** : framework (React? vanilla?), routing, fichiers principaux dans src/.\n2. **Page détail actuelle** : trouve le composant/fichier qui affiche une annonce individuelle. Décris PRÉCISÉMENT sa structure actuelle : sections dans l'ordre (galerie, prix, specs, description, carte, scores…), quelles données de l'annonce il affiche, et lesquelles des données disponibles il N'affiche PAS ou affiche pauvrement.\n3. **Composants réutilisables** : galerie photo (lightbox ? swipe ?), carte (Leaflet ?), graphiques/analyses de prix, badges \"bon prix/marché\", KA Scores, section quartier — qu'est-ce qui existe déjà ?\n4. **Style** : variables CSS, dark/light mode, conventions visuelles (fichier CSS principal).\n5. **Standard Groupe Ka ordre des sections** : vérifie si la page détail respecte l'ordre DOM = ordre visuel (galerie → prix/badge → description → inclusions → détails → analyses → carte → scores → quartier), pas de `order:` CSS entre breakpoints.\n6. Comment le build fonctionne (vite build → dist servi par FastAPI ?).\n\nRapport structuré avec chemins + numéros de ligne des sections clés de la page détail. Max ~800 mots."},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":1415,"cache_read_input_tokens":35599,"cache_creation":{"ephemeral_5m_input_tokens":1415,"ephemeral_1h_input_tokens":0},"output_tokens":4,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"be578c99-8a22-47c2-ba0d-2a52a3503ebf"}} {"type":"claude","event":{"type":"system","subtype":"task_started","task_id":"a6781332982e4f0b5","tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","description":"Explorer page détail frontend","task_type":"local_agent","prompt":"Explore le frontend du projet /Users/simon-pierreboucher/auto-ka/frontend (Vite + TypeScript, agrégateur d'annonces autos usagées Québec, style \"Groupe Ka\"). Thoroughness: very thorough.\n\nJe prépare un \"major upgrade\" de la page détail d'une annonce individuelle (fiche véhicule). J'ai besoin de :\n\n1. **Structure** : framework (React? vanilla?), routing, fichiers principaux dans src/.\n2. **Page détail actuelle** : trouve le composant/fichier qui affiche une annonce individuelle. Décris PRÉCISÉMENT sa structure actuelle : sections dans l'ordre (galerie, prix, specs, description, carte, scores…), quelles données de l'annonce il affiche, et lesquelles des données disponibles il N'affiche PAS ou affiche pauvrement.\n3. **Composants réutilisables** : galerie photo (lightbox ? swipe ?), carte (Leaflet ?), graphiques/analyses de prix, badges \"bon prix/marché\", KA Scores, section quartier — qu'est-ce qui existe déjà ?\n4. **Style** : variables CSS, dark/light mode, conventions visuelles (fichier CSS principal).\n5. **Standard Groupe Ka ordre des sections** : vérifie si la page détail respecte l'ordre DOM = ordre visuel (galerie → prix/badge → description → inclusions → détails → analyses → carte → scores → quartier), pas de `order:` CSS entre breakpoints.\n6. Comment le build fonctionne (vite build → dist servi par FastAPI ?).\n\nRapport structuré avec chemins + numéros de ligne des sections clés de la page détail. Max ~800 mots.","uuid":"144dd6e8-fcfa-45f1-b6e5-4fb4f6b08b7c","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"type":"text","text":"Explore le frontend du projet /Users/simon-pierreboucher/auto-ka/frontend (Vite + TypeScript, agrégateur d'annonces autos usagées Québec, style \"Groupe Ka\"). Thoroughness: very thorough.\n\nJe prépare un \"major upgrade\" de la page détail d'une annonce individuelle (fiche véhicule). J'ai besoin de :\n\n1. **Structure** : framework (React? vanilla?), routing, fichiers principaux dans src/.\n2. **Page détail actuelle** : trouve le composant/fichier qui affiche une annonce individuelle. Décris PRÉCISÉMENT sa structure actuelle : sections dans l'ordre (galerie, prix, specs, description, carte, scores…), quelles données de l'annonce il affiche, et lesquelles des données disponibles il N'affiche PAS ou affiche pauvrement.\n3. **Composants réutilisables** : galerie photo (lightbox ? swipe ?), carte (Leaflet ?), graphiques/analyses de prix, badges \"bon prix/marché\", KA Scores, section quartier — qu'est-ce qui existe déjà ?\n4. **Style** : variables CSS, dark/light mode, conventions visuelles (fichier CSS principal).\n5. **Standard Groupe Ka ordre des sections** : vérifie si la page détail respecte l'ordre DOM = ordre visuel (galerie → prix/badge → description → inclusions → détails → analyses → carte → scores → quartier), pas de `order:` CSS entre breakpoints.\n6. Comment le build fonctionne (vite build → dist servi par FastAPI ?).\n\nRapport structuré avec chemins + numéros de ligne des sections clés de la page détail. Max ~800 mots."}]},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"8d069f36-4e66-43b5-889c-9bbdd08ad119","timestamp":"2026-08-25T14:16:35.383Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"a6781332982e4f0b5","tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","description":"Running find /Users/simon-pierreboucher/auto-ka/frontend …","usage":{"total_tokens":8541,"tool_uses":1,"duration_ms":1249},"last_tool_name":"Bash","uuid":"8db2dda2-393f-4c38-8704-1d55cc20ac33","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcGqYV8sEnwoEp1XNwV","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01HPYBQt62HCiAWtvBZMnG7n","name":"Bash","input":{"command":"find /Users/simon-pierreboucher/auto-ka/frontend -type f -name \"*.json\" | head -20"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":3,"cache_creation_input_tokens":824,"cache_read_input_tokens":7706,"cache_creation":{"ephemeral_5m_input_tokens":824,"ephemeral_1h_input_tokens":0},"output_tokens":4,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"f68c8f7e-bbf0-4110-9066-f5fd68e627c2"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01HPYBQt62HCiAWtvBZMnG7n","type":"tool_result","content":"/Users/simon-pierreboucher/auto-ka/frontend/node_modules/jsesc/package.json\n/Users/simon-pierreboucher/auto-ka/frontend/node_modules/@types/babel__template/package.json\n/Users/simon-pierreboucher/auto-ka/frontend/node_modules/@types/react-dom/package.json\n/Users/simon-pierreboucher/auto-ka/frontend/node_modules/@types/babel__generator/package.json\n/Users/simon-pierreboucher/auto-ka/frontend/node_modules/@types/babel__traverse/package.json\n/Users/simon-pierreboucher/auto-ka/frontend/node_modules/@types/prop-types/package.json\n/Users/simon-pierreboucher/auto-ka/frontend/node_modules/@types/estree/package.json\n/Users/simon-pierreboucher/auto-ka/frontend/node_modules/@types/babel__core/package.json\n/Users/simon-pierreboucher/auto-ka/frontend/node_modules/@types/react/package.json\n/Users/simon-pierreboucher/auto-ka/frontend/node_modules/browserslist/package.json\n/Users/simon-pierreboucher/auto-ka/frontend/node_modules/csstype/package.json\n/Users/simon-pierreboucher/auto-ka/frontend/node_modules/@rolldown/pluginutils/package.json\n/Users/simon-pierreboucher/auto-ka/frontend/node_modules/loose-envify/package.json\n/Users/simon-pierreboucher/auto-ka/frontend/node_modules/ms/package.json\n/Users/simon-pierreboucher/auto-ka/frontend/node_modules/node-releases/package.json\n/Users/simon-pierreboucher/auto-ka/frontend/node_modules/node-releases/data/processed/envs.json\n/Users/simon-pierreboucher/auto-ka/frontend/node_modules/node-releases/data/release-schedule/release-schedule.json\n/Users/simon-pierreboucher/auto-ka/frontend/node_modules/lru-cache/package.json\n/Users/simon-pierreboucher/auto-ka/frontend/node_modules/escalade/package.json\n/Users/simon-pierreboucher/auto-ka/frontend/node_modules/nanoid/async/package.json","is_error":false}]},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"be232bb5-a47d-4582-91ab-e42e671bd93a","timestamp":"2026-08-25T14:16:36.686Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"aa77f553c30839219","tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","description":"Reading autoka/connectors/base.py","usage":{"total_tokens":28067,"tool_uses":12,"duration_ms":11460},"last_tool_name":"Read","uuid":"11ece807-1052-41c1-ae25-ddb18132593d","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcGqWVqbUDnDg83t2Un","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01J6mGB9KSCP4iHoQqgzK3sB","name":"Read","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/autoka/connectors/base.py"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":7,"cache_creation_input_tokens":3196,"cache_read_input_tokens":24821,"cache_creation":{"ephemeral_5m_input_tokens":3196,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"22cf21a0-f7ed-426b-b1be-d8eba7e07c79"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"a6781332982e4f0b5","tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","description":"Reading frontend/package.json","usage":{"total_tokens":10170,"tool_uses":2,"duration_ms":2385},"last_tool_name":"Read","uuid":"d79f80b9-3f48-427e-99fa-c0357e8889fc","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcGvuCMcfx3MxwvihYa","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01YERARe33uVLAf9Vxw44kup","name":"Read","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/frontend/package.json"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":5,"cache_creation_input_tokens":1609,"cache_read_input_tokens":8530,"cache_creation":{"ephemeral_5m_input_tokens":1609,"ephemeral_1h_input_tokens":0},"output_tokens":18,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"e330add1-d71d-4f81-82ec-fc3015802f6a"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01J6mGB9KSCP4iHoQqgzK3sB","type":"tool_result","content":"1\t# -----------------------------------------------------------------------------\n2\t# Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n3\t# Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n4\t# connectors/base.py : classe de base des connecteurs + backends de fetch\n5\t# (requests direct, ou Firecrawl pour JS/Cloudflare)\n6\t# -----------------------------------------------------------------------------\n7\tfrom __future__ import annotations\n8\t\n9\timport os\n10\timport time\n11\t\n12\timport requests\n13\t\n14\tfrom ..schema import Vehicle\n15\t\n16\tUSER_AGENT = (\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) \"\n17\t \"AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126 Safari/537.36 \"\n18\t \"AutoKaBot/1.0 (+contact@spboucher.ai)\")\n19\t\n20\tFIRECRAWL_API = \"https://api.firecrawl.dev/v1/scrape\"\n21\tSCRAPFLY_API = \"https://api.scrapfly.io/scrape\"\n22\t\n23\t\n24\tclass BaseConnector:\n25\t \"\"\"Un connecteur = un adaptateur propre à un site de concessionnaire.\n26\t\n27\t Sous-classes : définir `source_id` et implémenter `fetch()` qui retourne\n28\t la liste complète des véhicules actuellement affichés sur le site.\n29\t Le pipeline (ingest.py) s'occupe du diff avec la base de données.\n30\t \"\"\"\n31\t\n32\t source_id: str = \"\"\n33\t request_delay: float = 0.6 # politesse entre requêtes\n34\t timeout: int = 30\n35\t use_detail_cache: bool = True # cache BD des pages détail\n36\t\n37\t def __init__(self) -> None:\n38\t self.session = requests.Session()\n39\t self.session.headers[\"User-Agent\"] = USER_AGENT\n40\t self._last_request = 0.0\n41\t self._detail_con = None\n42\t\n43\t # -- backends -------------------------------------------------------------\n44\t def get(self, url: str, **kw) -> requests.Response:\n45\t \"\"\"GET direct avec throttling poli.\n46\t\n47\t Retry (2×) sur les connexions keep-alive fermées par le serveur —\n48\t fréquent chez D2C Media / SM360 après une période d'inactivité.\n49\t \"\"\"\n50\t wait = self.request_delay - (time.time() - self._last_request)\n51\t if wait > 0:\n52\t time.sleep(wait)\n53\t last_exc: Exception | None = None\n54\t for attempt in range(3):\n55\t try:\n56\t resp = self.session.get(url, timeout=self.timeout, **kw)\n57\t self._last_request = time.time()\n58\t resp.raise_for_status()\n59\t return resp\n60\t except (requests.exceptions.ConnectionError,\n61\t requests.exceptions.ChunkedEncodingError) as exc:\n62\t last_exc = exc\n63\t self.session.close() # repartir sur une connexion neuve\n64\t time.sleep(1.5 * (attempt + 1))\n65\t self._last_request = time.time()\n66\t raise last_exc # type: ignore[misc]\n67\t\n68\t def get_rendered(self, url: str, wait_ms: int = 0) -> str:\n69\t \"\"\"Récupère le HTML rendu (JavaScript exécuté) via Firecrawl.\n70\t\n71\t Nécessite FIRECRAWL_API_KEY dans l'environnement (.env).\n72\t À utiliser pour les sites SPA ou derrière Cloudflare.\n73\t \"\"\"\n74\t key = os.environ.get(\"FIRECRAWL_API_KEY\")\n75\t if not key:\n76\t raise RuntimeError(\"FIRECRAWL_API_KEY manquant (voir .env)\")\n77\t payload: dict = {\"url\": url, \"formats\": [\"html\"]}\n78\t if wait_ms:\n79\t payload[\"waitFor\"] = wait_ms\n80\t resp = requests.post(\n81\t FIRECRAWL_API,\n82\t json=payload,\n83\t headers={\"Authorization\": f\"Bearer {key}\"},\n84\t timeout=120,\n85\t )\n86\t resp.raise_for_status()\n87\t data = resp.json()\n88\t return (data.get(\"data\") or {}).get(\"html\", \"\")\n89\t\n90\t def get_scrapfly(self, url: str, render_js: bool = False,\n91\t asp: bool = True) -> str:\n92\t \"\"\"Récupère une page via Scrapfly (anti-bot robuste, rendu JS optionnel).\n93\t\n94\t À privilégier sur Firecrawl quand le site bloque, est lent, ou que le\n95\t rendu Firecrawl perd de l'information. Nécessite SCRAPFLY_API_KEY.\n96\t - asp=True : contournement anti-bot (Cloudflare, etc.)\n97\t - render_js=True : exécute le JavaScript (SPA)\n98\t \"\"\"\n99\t key = os.environ.get(\"SCRAPFLY_API_KEY\")\n100\t if not key:\n101\t raise RuntimeError(\"SCRAPFLY_API_KEY manquant (voir .env)\")\n102\t params = {\n103\t \"key\": key,\n104\t \"url\": url,\n105\t \"country\": \"ca\",\n106\t }\n107\t if asp:\n108\t params[\"asp\"] = \"true\"\n109\t if render_js:\n110\t params[\"render_js\"] = \"true\"\n111\t resp = requests.get(SCRAPFLY_API, params=params, timeout=120)\n112\t resp.raise_for_status()\n113\t data = resp.json()\n114\t result = data.get(\"result\") or {}\n115\t return result.get(\"content\", \"\")\n116\t\n117\t def detail(self, external_id: str, key: str, fetch_fn) -> dict:\n118\t \"\"\"Payload « page détail » avec cache : `fetch_fn` n'est appelé que si\n119\t l'annonce est nouvelle ou si sa clé (hash du contenu liste) a changé.\n120\t\n121\t Permet d'extraire les champs riches (description, équipements, VIN…)\n122\t sans revisiter chaque page détail à chaque synchronisation.\n123\t `fetch_fn` doit retourner un dict JSON-sérialisable.\n124\t \"\"\"\n125\t if not self.use_detail_cache:\n126\t return fetch_fn() or {}\n127\t from .. import db\n128\t if self._detail_con is None:\n129\t self._detail_con = db.connect()\n130\t cached = db.get_cached_detail(self._detail_con, self.source_id,\n131\t str(external_id), key)\n132\t if cached is not None:\n133\t return cached\n134\t payload = fetch_fn() or {}\n135\t db.put_cached_detail(self._detail_con, self.source_id,\n136\t str(external_id), key, payload)\n137\t return payload\n138\t\n139\t # -- contrat --------------------------------------------------------------\n140\t def fetch(self) -> list[Vehicle]:\n141\t raise NotImplementedError\n142\t\n143\t\n144\t# =============================================================================\n145\t# Résilience anti-bot (Groupe KA) — auto-escalade de get() sans toucher au corps.\n146\t# Ajouté par l'orchestrateur KA : enrobe BaseConnector.get pour qu'un blocage\n147\t# anti-bot (403/429/503/challenge) ou une coupure réseau déclenche la chaîne\n148\t# de secours (Oxylabs résidentiel -> Scrapfly ASP -> Bright Data). Voir\n149\t# connectors/_resilient.py. Idempotent (marqueur _KA_RESILIENT_WRAPPED).\n150\t# =============================================================================\n151\tif not getattr(BaseConnector, \"_KA_RESILIENT_WRAPPED\", False):\n152\t import requests as _ka_requests # noqa: E402\n153\t from . import _resilient as _kar # noqa: E402\n154\t\n155\t _ka_orig_get = BaseConnector.get\n156\t\n157\t def _ka_full_url(url, kw):\n158\t try:\n159\t return _ka_requests.Request(\"GET\", url,\n160\t params=kw.get(\"params\")).prepare().url\n161\t except Exception: # noqa: BLE001\n162\t return url\n163\t\n164\t def _ka_resilient_get(self, url, **kw):\n165\t timeout = getattr(self, \"timeout\", 30)\n166\t headers = kw.get(\"headers\")\n167\t try:\n168\t return _ka_orig_get(self, url, **kw)\n169\t except _ka_requests.HTTPError as exc:\n170\t r = getattr(exc, \"response\", None)\n171\t if r is not None and _kar.is_blocked(r):\n172\t target = getattr(r, \"url\", None) or _ka_full_url(url, kw)\n173\t better = _kar.escalate_if_blocked(\n174\t r, target, timeout=timeout, headers=headers)\n175\t if better is not None and getattr(better, \"status_code\", 0) == 200:\n176\t return better\n177\t raise\n178\t except (_ka_requests.ConnectionError, _ka_requests.Timeout):\n179\t better = _kar.escalate(_ka_full_url(url, kw),\n180\t timeout=timeout, headers=headers)\n181\t if better is not None and getattr(better, \"status_code\", 0) == 200:\n182\t return better\n183\t raise\n184\t\n185\t def _ka_get_resilient(self, url, *, render_js=False, country=\"ca\", **kw):\n186\t \"\"\"Fetch anti-bot explicite : force la chaîne de secours au besoin.\n187\t\n188\t Comme get() mais tente d'abord le direct puis escalade même sur 200-\n189\t challenge, avec rendu JS optionnel. Renvoie une réponse compatible\n190\t requests (.text/.content/.status_code/.json()...).\n191\t \"\"\"\n192\t timeout = getattr(self, \"timeout\", 30)\n193\t headers = kw.get(\"headers\")\n194\t try:\n195\t resp = _ka_orig_get(self, url, **kw)\n196\t except _ka_requests.HTTPError as exc:\n197\t resp = getattr(exc, \"response\", None)\n198\t except (_ka_requests.ConnectionError, _ka_requests.Timeout):\n199\t resp = None\n200\t target = _ka_full_url(url, kw)\n201\t if resp is not None and getattr(resp, \"url\", None):\n202\t target = resp.url\n203\t return _kar.escalate_if_blocked(resp, target, timeout=timeout,\n204\t country=country, render_js=render_js,\n205\t headers=headers)\n206\t\n207\t BaseConnector.get = _ka_resilient_get\n208\t BaseConnector.get_resilient = _ka_get_resilient\n209\t BaseConnector._KA_RESILIENT_WRAPPED = True\n210\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n"}]},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"14bbde05-1712-4f1b-b725-6e51cff992be","timestamp":"2026-08-25T14:16:37.665Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"aa77f553c30839219","tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","description":"Reading autoka/web.py","usage":{"total_tokens":28069,"tool_uses":13,"duration_ms":11639},"last_tool_name":"Read","uuid":"af80ef7e-3a66-423f-9dd0-6f809e07154b","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcGqWVqbUDnDg83t2Un","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01WDwKgGbTdpg7kVshd3RFLJ","name":"Read","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/autoka/web.py"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":7,"cache_creation_input_tokens":3196,"cache_read_input_tokens":24821,"cache_creation":{"ephemeral_5m_input_tokens":3196,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"3e6d9b73-fe84-4af7-ae6b-e35df6c13ac4"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01WDwKgGbTdpg7kVshd3RFLJ","type":"tool_result","content":"1\t# -----------------------------------------------------------------------------\n2\t# Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n3\t# Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n4\t# web.py : API FastAPI (JSON) + service du frontend React (frontend/dist)\n5\t# -----------------------------------------------------------------------------\n6\tfrom __future__ import annotations\n7\t\n8\timport json\n9\timport threading\n10\timport time\n11\tfrom pathlib import Path\n12\t\n13\tfrom fastapi import BackgroundTasks, Body, FastAPI, HTTPException, Query\n14\tfrom fastapi.middleware.cors import CORSMiddleware\n15\tfrom fastapi.middleware.gzip import GZipMiddleware\n16\tfrom fastapi.responses import FileResponse, RedirectResponse\n17\tfrom fastapi.staticfiles import StaticFiles\n18\t\n19\tfrom . import auth, db, ingest, seo\n20\t\n21\tROOT = Path(__file__).resolve().parent.parent\n22\tSOURCES_PATH = ROOT / \"data\" / \"sources.json\"\n23\tFRONTEND_DIST = ROOT / \"frontend\" / \"dist\"\n24\t\n25\tapp = FastAPI(title=\"Auto-Ka API\", version=\"1.0\",\n26\t description=\"Agrégateur de voitures usagées — province de Québec\")\n27\tapp.add_middleware(CORSMiddleware, allow_origins=[\"*\"],\n28\t allow_methods=[\"*\"], allow_headers=[\"*\"])\n29\tapp.add_middleware(GZipMiddleware, minimum_size=1000)\n30\t\n31\t_sync_lock = threading.Lock()\n32\t\n33\t\n34\tdef _row_to_dict(row) -> dict:\n35\t d = dict(row)\n36\t d[\"features\"] = json.loads(d.get(\"features\") or \"[]\")\n37\t d[\"images\"] = json.loads(d.get(\"images\") or \"[]\")\n38\t d[\"details\"] = json.loads(d.get(\"details\") or \"{}\")\n39\t # autres offres du même VIN (dédoublonnage inter-sources — autoka/dedup.py)\n40\t if d.get(\"dup_sources\"):\n41\t try:\n42\t d[\"dup_sources\"] = json.loads(d[\"dup_sources\"])\n43\t except ValueError:\n44\t d[\"dup_sources\"] = []\n45\t return d\n46\t\n47\t\n48\tdef _apply_filters(sql: str, args: list, *, make=None, model=None, body_type=None,\n49\t fuel=None, transmission=None, drivetrain=None, region=None,\n50\t city=None, source=None, year_min=None, year_max=None,\n51\t price_min=None, price_max=None, km_max=None, q=None) -> str:\n52\t if make:\n53\t sql += \" AND make=?\"; args.append(make)\n54\t if model:\n55\t sql += \" AND model LIKE ?\"; args.append(f\"{model}%\")\n56\t if body_type:\n57\t sql += \" AND body_type=?\"; args.append(body_type)\n58\t if fuel:\n59\t if fuel == \"Hybride\": # inclut l'hybride rechargeable\n60\t sql += \" AND fuel IN ('Hybride','Hybride rechargeable')\"\n61\t else:\n62\t sql += \" AND fuel=?\"; args.append(fuel)\n63\t if transmission:\n64\t sql += \" AND transmission=?\"; args.append(transmission)\n65\t if drivetrain:\n66\t sql += \" AND drivetrain=?\"; args.append(drivetrain)\n67\t if region:\n68\t sql += \" AND region=?\"; args.append(region)\n69\t if city:\n70\t sql += \" AND city LIKE ?\"; args.append(f\"%{city}%\")\n71\t if source:\n72\t sql += \" AND source=?\"; args.append(source)\n73\t if year_min is not None:\n74\t sql += \" AND year IS NOT NULL AND year>=?\"; args.append(year_min)\n75\t if year_max is not None:\n76\t sql += \" AND year IS NOT NULL AND year<=?\"; args.append(year_max)\n77\t if price_min is not None:\n78\t sql += \" AND price IS NOT NULL AND price>=?\"; args.append(price_min)\n79\t if price_max is not None:\n80\t sql += \" AND price IS NOT NULL AND price<=?\"; args.append(price_max)\n81\t if km_max is not None:\n82\t sql += \" AND mileage_km IS NOT NULL AND mileage_km<=?\"; args.append(km_max)\n83\t if q:\n84\t sql += (\" AND (title LIKE ? OR make LIKE ? OR model LIKE ?\"\n85\t \" OR dealer_name LIKE ? OR city LIKE ?)\")\n86\t args += [f\"%{q}%\"] * 5\n87\t return sql\n88\t\n89\t\n90\t_SORTS = {\n91\t \"price_asc\": \"price IS NULL, price ASC\",\n92\t \"price_desc\": \"price IS NULL, price DESC\",\n93\t \"km_asc\": \"mileage_km IS NULL, mileage_km ASC\",\n94\t \"year_desc\": \"year IS NULL, year DESC\",\n95\t \"recent\": \"first_seen DESC\",\n96\t}\n97\t\n98\t\n99\t@app.get(\"/api/vehicles\")\n100\tdef list_vehicles(\n101\t kind: str = \"auto\",\n102\t make: str | None = None,\n103\t model: str | None = None,\n104\t body_type: str | None = None,\n105\t fuel: str | None = None,\n106\t transmission: str | None = None,\n107\t drivetrain: str | None = None,\n108\t region: str | None = None,\n109\t city: str | None = None,\n110\t source: str | None = None,\n111\t year_min: int | None = None,\n112\t year_max: int | None = None,\n113\t price_min: float | None = None,\n114\t price_max: float | None = None,\n115\t km_max: float | None = None,\n116\t q: str | None = None,\n117\t sort: str = \"recent\",\n118\t active: int = 1,\n119\t dedup: int = 1,\n120\t limit: int = Query(60, le=500),\n121\t offset: int = 0,\n122\t):\n123\t con = db.connect()\n124\t sql = \"SELECT * FROM vehicles WHERE 1=1\"\n125\t args: list = []\n126\t if active in (0, 1):\n127\t sql += \" AND active=?\"; args.append(active)\n128\t if dedup: # masquer les doublons inter-sources (même VIN)\n129\t sql += \" AND dup_of IS NULL\"\n130\t if kind and kind != \"tous\":\n131\t sql += \" AND kind=?\"; args.append(kind)\n132\t sql = _apply_filters(sql, args, make=make, model=model, body_type=body_type,\n133\t fuel=fuel, transmission=transmission,\n134\t drivetrain=drivetrain, region=region, city=city,\n135\t source=source, year_min=year_min, year_max=year_max,\n136\t price_min=price_min, price_max=price_max,\n137\t km_max=km_max, q=q)\n138\t total = con.execute(f\"SELECT COUNT(*) c FROM ({sql})\", args).fetchone()[\"c\"]\n139\t sql += f\" ORDER BY {_SORTS.get(sort, _SORTS['recent'])} LIMIT ? OFFSET ?\"\n140\t args += [limit, offset]\n141\t rows = [_row_to_dict(r) for r in con.execute(sql, args).fetchall()]\n142\t con.close()\n143\t return {\"total\": total, \"count\": len(rows), \"vehicles\": rows}\n144\t\n145\t\n146\t@app.get(\"/api/vehicles/{uid}\")\n147\tdef get_vehicle(uid: str):\n148\t con = db.connect()\n149\t row = con.execute(\"SELECT * FROM vehicles WHERE uid=?\", (uid,)).fetchone()\n150\t d = None\n151\t if row is not None:\n152\t d = _row_to_dict(row)\n153\t d[\"price_history\"] = [dict(r) for r in con.execute(\n154\t \"SELECT ts, price FROM price_log WHERE uid=? ORDER BY ts DESC LIMIT 10\",\n155\t (uid,)).fetchall()]\n156\t # véhicules similaires : même marque+modèle, autres sources incluses\n157\t if d.get(\"make\") and d.get(\"model\"):\n158\t base_model = d[\"model\"].split()[0]\n159\t d[\"similar\"] = [_row_to_dict(r) for r in con.execute(\n160\t \"SELECT * FROM vehicles WHERE active=1 AND dup_of IS NULL\"\n161\t \" AND make=? AND model LIKE ?\"\n162\t \" AND uid<>? ORDER BY price IS NULL, price ASC LIMIT 6\",\n163\t (d[\"make\"], f\"{base_model}%\", uid)).fetchall()]\n164\t else:\n165\t d[\"similar\"] = []\n166\t con.close()\n167\t if d is None:\n168\t raise HTTPException(404, \"Véhicule introuvable\")\n169\t return d\n170\t\n171\t\n172\t@app.get(\"/api/vehicles/{uid}/recalls\")\n173\tdef vehicle_recalls(uid: str):\n174\t \"\"\"Rappels Transports Canada visant ce véhicule (marque/modèle/année).\"\"\"\n175\t from . import recalls as recalls_mod\n176\t con = db.connect()\n177\t row = con.execute(\"SELECT make, model, year FROM vehicles WHERE uid=?\",\n178\t (uid,)).fetchone()\n179\t if row is None:\n180\t con.close()\n181\t raise HTTPException(404, \"Véhicule introuvable\")\n182\t try:\n183\t items = recalls_mod.for_vehicle(con, row[\"make\"], row[\"model\"],\n184\t row[\"year\"])\n185\t finally:\n186\t con.close()\n187\t return {\"uid\": uid, \"make\": row[\"make\"], \"model\": row[\"model\"],\n188\t \"year\": row[\"year\"], \"count\": len(items), \"recalls\": items}\n189\t\n190\t\n191\t@app.get(\"/api/dealers\")\n192\tdef dealers():\n193\t \"\"\"Coordonnées des concessionnaires suivis (autoka/dealers.py).\"\"\"\n194\t from . import dealers as dealers_mod\n195\t con = db.connect()\n196\t try:\n197\t rows = dealers_mod.list_dealers(con)\n198\t finally:\n199\t con.close()\n200\t return {\"count\": len(rows), \"dealers\": rows}\n201\t\n202\t\n203\t@app.get(\"/api/facets\")\n204\tdef facets(make: str | None = None, kind: str = \"auto\"):\n205\t \"\"\"Valeurs distinctes pour construire les filtres du frontend.\n206\t\n207\t `make` (optionnel) restreint la liste des modèles à cette marque —\n208\t utilisé par le sélecteur « Modèle » dépendant de « Marque ».\n209\t \"\"\"\n210\t con = db.connect()\n211\t kf = \"\" if kind in (\"\", \"tous\") else f\" AND kind='{'moto' if kind=='moto' else 'scooter' if kind=='scooter' else 'auto'}'\"\n212\t kf += \" AND dup_of IS NULL\" # compter chaque véhicule une seule fois\n213\t model_sql = (\"SELECT model, COUNT(*) n FROM vehicles\"\n214\t \" WHERE active=1 AND model<>''\" + kf)\n215\t model_args: list = []\n216\t if make:\n217\t model_sql += \" AND make=?\"\n218\t model_args.append(make)\n219\t out = {\n220\t \"makes\": [dict(r) for r in con.execute(\n221\t \"SELECT make, COUNT(*) n FROM vehicles WHERE active=1\" + kf + \" AND make<>''\"\n222\t \" GROUP BY make ORDER BY n DESC\")],\n223\t \"models\": [dict(r) for r in con.execute(\n224\t model_sql + \" GROUP BY model ORDER BY n DESC LIMIT 80\", model_args)],\n225\t \"body_types\": [r[\"body_type\"] for r in con.execute(\n226\t \"SELECT DISTINCT body_type FROM vehicles WHERE active=1\" + kf + \"\"\n227\t \" AND body_type<>'' ORDER BY body_type\")],\n228\t \"fuels\": [r[\"fuel\"] for r in con.execute(\n229\t \"SELECT DISTINCT fuel FROM vehicles WHERE active=1\" + kf + \" AND fuel<>''\"\n230\t \" ORDER BY fuel\")],\n231\t \"regions\": [dict(r) for r in con.execute(\n232\t \"SELECT region, COUNT(*) n FROM vehicles WHERE active=1\" + kf + \" AND region<>''\"\n233\t \" GROUP BY region ORDER BY n DESC\")],\n234\t \"sources\": [dict(r) for r in con.execute(\n235\t \"SELECT source, dealer_name, COUNT(*) n FROM vehicles WHERE active=1\" + kf + \"\"\n236\t \" GROUP BY source ORDER BY n DESC\")],\n237\t \"years\": [dict(r) for r in con.execute(\n238\t \"SELECT MIN(year) y_min, MAX(year) y_max FROM vehicles\"\n239\t \" WHERE active=1\" + kf + \" AND year IS NOT NULL\")],\n240\t }\n241\t con.close()\n242\t return out\n243\t\n244\t\n245\t@app.get(\"/api/sources\")\n246\tdef sources():\n247\t registry = json.loads(SOURCES_PATH.read_text(encoding=\"utf-8\"))[\"sources\"]\n248\t con = db.connect()\n249\t counts = {r[\"source\"]: r[\"n\"] for r in con.execute(\n250\t \"SELECT source, COUNT(*) n FROM vehicles WHERE active=1 GROUP BY source\")}\n251\t last = {r[\"source\"]: r[\"ts\"] for r in con.execute(\n252\t \"SELECT source, MAX(ts) ts FROM sync_log WHERE ok=1 GROUP BY source\")}\n253\t con.close()\n254\t for s in registry:\n255\t s[\"active_listings\"] = counts.get(s[\"id\"], 0)\n256\t s[\"last_sync\"] = last.get(s[\"id\"])\n257\t return {\"sources\": registry}\n258\t\n259\t\n260\t@app.get(\"/api/stats\")\n261\tdef stats(syncs_since_h: float | None = None):\n262\t con = db.connect()\n263\t row = con.execute(\n264\t \"\"\"SELECT COUNT(*) total,\n265\t COUNT(DISTINCT source) sources,\n266\t COUNT(DISTINCT region) regions,\n267\t AVG(price) avg_price,\n268\t AVG(mileage_km) avg_km,\n269\t AVG(year) avg_year\n270\t FROM vehicles WHERE active=1 AND kind='auto'\n271\t AND dup_of IS NULL\"\"\").fetchone()\n272\t by_region = [dict(r) for r in con.execute(\n273\t \"SELECT region, COUNT(*) n, ROUND(AVG(price)) avg_price FROM vehicles\"\n274\t \" WHERE active=1 AND kind='auto' AND dup_of IS NULL\"\n275\t \" AND region<>'' GROUP BY region ORDER BY n DESC\")]\n276\t by_make = [dict(r) for r in con.execute(\n277\t \"SELECT make, COUNT(*) n, ROUND(AVG(price)) avg_price FROM vehicles\"\n278\t \" WHERE active=1 AND kind='auto' AND dup_of IS NULL\"\n279\t \" AND make<>'' GROUP BY make ORDER BY n DESC LIMIT 20\")]\n280\t by_body = [dict(r) for r in con.execute(\n281\t \"SELECT body_type, COUNT(*) n FROM vehicles WHERE active=1 AND kind='auto'\"\n282\t \" AND dup_of IS NULL\"\n283\t \" AND body_type<>'' GROUP BY body_type ORDER BY n DESC\")]\n284\t # baisses de prix récentes (signal d'aubaine)\n285\t drops = [dict(r) for r in con.execute(\n286\t \"\"\"SELECT v.uid, v.title, v.year, v.price, v.images, v.dealer_name, v.city,\n287\t p.prev_price\n288\t FROM vehicles v JOIN (\n289\t SELECT uid, price prev_price,\n290\t ROW_NUMBER() OVER (PARTITION BY uid ORDER BY ts DESC) rn\n291\t FROM price_log) p ON p.uid=v.uid AND p.rn=2\n292\t WHERE v.active=1 AND kind='auto' AND v.dup_of IS NULL\n293\t AND v.price IS NOT NULL AND p.prev_price > v.price\n294\t ORDER BY (p.prev_price - v.price) DESC LIMIT 12\"\"\")]\n295\t for d in drops:\n296\t d[\"images\"] = json.loads(d.get(\"images\") or \"[]\")[:1]\n297\t # fenêtre de sync paramétrable (supervision api-ka) : ?syncs_since_h=6\n298\t # retourne toutes les entrées de la fenêtre (les ~20 dernières sinon)\n299\t if syncs_since_h is not None:\n300\t log = [dict(r) for r in con.execute(\n301\t \"SELECT * FROM sync_log WHERE ts >= ? ORDER BY ts DESC LIMIT 4000\",\n302\t (time.time() - syncs_since_h * 3600,))]\n303\t if len(log) < 20: # fenêtre trop courte -> minimum utile\n304\t log = [dict(r) for r in con.execute(\n305\t \"SELECT * FROM sync_log ORDER BY ts DESC LIMIT 20\")]\n306\t else:\n307\t log = [dict(r) for r in con.execute(\n308\t \"SELECT * FROM sync_log ORDER BY ts DESC LIMIT 20\")]\n309\t # enrichissements vague 2 : doublons VIN masqués, rappels TC, dealers\n310\t extra = {\"vin_duplicates_masked\": con.execute(\n311\t \"SELECT COUNT(*) c FROM vehicles WHERE active=1 AND dup_of IS NOT NULL\"\n312\t ).fetchone()[\"c\"]}\n313\t for key, query in (\n314\t (\"recalls_total\", \"SELECT COUNT(DISTINCT recall_number) c FROM recalls\"),\n315\t (\"dealers_total\", \"SELECT COUNT(*) c FROM dealers\")):\n316\t try:\n317\t extra[key] = con.execute(query).fetchone()[\"c\"]\n318\t except Exception: # table pas encore créée\n319\t extra[key] = 0\n320\t con.close()\n321\t return {**dict(row), **extra, \"by_region\": by_region, \"by_make\": by_make,\n322\t \"by_body\": by_body, \"price_drops\": drops, \"recent_syncs\": log}\n323\t\n324\t\n325\t@app.get(\"/api/stats/detailed\")\n326\tdef stats_detailed():\n327\t \"\"\"Agrégats complets du marché (source unique : autoka/marketstats.py).\"\"\"\n328\t from . import marketstats\n329\t return marketstats.compute()\n330\t\n331\t\n332\t# --- Module Stats commun Groupe KA (contrat ka/stats/SPEC.md) ----------------\n333\t\n334\tKA_SITE = {\n335\t \"wordmark\": \"Auto·Ka\",\n336\t \"accent\": \"#ff5a2a\",\n337\t \"domain\": \"www.auto-ka.com\",\n338\t \"tagline\": \"Voitures usagées · tout le Québec · toujours à jour\",\n339\t}\n340\t\n341\t\n342\t@app.get(\"/api/stats/dashboard\")\n343\tdef stats_dashboard(\n344\t period: str = \"30j\",\n345\t from_: str | None = Query(None, alias=\"from\"),\n346\t to: str | None = None,\n347\t):\n348\t \"\"\"Tableau de bord analytique — contrat commun Groupe KA (cache 5 min).\"\"\"\n349\t from . import statsdash\n350\t try:\n351\t return statsdash.dashboard(period, from_, to)\n352\t except ValueError:\n353\t raise HTTPException(400, \"Dates invalides (format attendu : YYYY-MM-DD)\")\n354\t\n355\t\n356\t@app.get(\"/api/stats/report\")\n357\tdef stats_report(\n358\t period: str = \"30j\",\n359\t from_: str | None = Query(None, alias=\"from\"),\n360\t to: str | None = None,\n361\t mode: str = \"complet\",\n362\t):\n363\t \"\"\"Rapport PDF estampillé Groupe-KA — 5 modes (SPEC v2) : complet,\n364\t synthese, tendances, repartitions, donnees. Mode inconnu → complet.\"\"\"\n365\t from fastapi.responses import Response\n366\t from . import kapdf, statsdash\n367\t try:\n368\t dash = statsdash.dashboard(period, from_, to)\n369\t except ValueError:\n370\t raise HTTPException(400, \"Dates invalides (format attendu : YYYY-MM-DD)\")\n371\t mode = mode if mode in kapdf.REPORT_MODES else \"complet\"\n372\t pdf = kapdf.GroupeKAReport(site=KA_SITE, dashboard=dash, mode=mode).build()\n373\t return Response(\n374\t content=pdf, media_type=\"application/pdf\",\n375\t headers={\"Content-Disposition\":\n376\t f'attachment; filename=\"{kapdf.filename(\"auto-ka\", period, mode)}\"'})\n377\t\n378\t\n379\t@app.get(\"/api/stats/catalog\")\n380\tdef stats_catalog(\n381\t period: str = \"30j\",\n382\t from_: str | None = Query(None, alias=\"from\"),\n383\t to: str | None = None,\n384\t):\n385\t \"\"\"v3 — blocs composables pour le constructeur de rapports personnalisés.\"\"\"\n386\t from . import kapdf, statsdash\n387\t try:\n388\t dash = statsdash.dashboard(period, from_, to)\n389\t except ValueError:\n390\t raise HTTPException(400, \"Dates invalides (format attendu : YYYY-MM-DD)\")\n391\t return {\"updated\": dash.get(\"updated\"), \"period\": dash.get(\"period\"),\n392\t \"blocks\": kapdf.catalog(dash)}\n393\t\n394\t\n395\t@app.post(\"/api/stats/report/custom\")\n396\tdef stats_report_custom(spec: dict = Body(...)):\n397\t \"\"\"v3 — rapport PDF personnalisé : {\"title\", \"period\", \"from\", \"to\",\n398\t \"blocks\": [{\"key\": \"series:…\", \"render\": \"bar\"}, …]} (SPEC.md §3bis).\"\"\"\n399\t from fastapi.responses import Response\n400\t from . import kapdf, statsdash\n401\t period = str(spec.get(\"period\") or \"30j\")\n402\t try:\n403\t dash = statsdash.dashboard(period, str(spec.get(\"from\") or \"\") or None,\n404\t str(spec.get(\"to\") or \"\") or None)\n405\t except ValueError:\n406\t raise HTTPException(400, \"Dates invalides (format attendu : YYYY-MM-DD)\")\n407\t known = {b[\"key\"] for b in kapdf.catalog(dash)}\n408\t blocks = [b for b in (spec.get(\"blocks\") or [])\n409\t if isinstance(b, dict) and b.get(\"key\") in known][:40]\n410\t if not blocks:\n411\t raise HTTPException(400, \"Aucun bloc valide dans la composition\")\n412\t pdf = kapdf.GroupeKAReport(\n413\t site=KA_SITE, dashboard=dash, mode=kapdf.CUSTOM_MODE,\n414\t spec={\"title\": str(spec.get(\"title\") or \"\")[:80], \"blocks\": blocks},\n415\t ).build()\n416\t fname = kapdf.filename(\"auto-ka\", period, kapdf.CUSTOM_MODE)\n417\t return Response(\n418\t content=pdf, media_type=\"application/pdf\",\n419\t headers={\"Content-Disposition\":\n420\t f'attachment; filename=\"{fname}\"'})\n421\t\n422\t\n423\t@app.get(\"/api/stats/rapport.pdf\")\n424\tdef rapport_pdf():\n425\t \"\"\"Rapport PDF « Le marché de l'occasion » — vue d'ensemble.\"\"\"\n426\t from fastapi.responses import Response\n427\t from . import pdfgen\n428\t return Response(\n429\t content=pdfgen.rapport_pdf(), media_type=\"application/pdf\",\n430\t headers={\"Content-Disposition\":\n431\t 'attachment; filename=\"auto-ka-rapport-marche.pdf\"'})\n432\t\n433\t\n434\t@app.post(\"/api/sync\")\n435\tdef trigger_sync(background: BackgroundTasks, source: str | None = None):\n436\t \"\"\"Déclenche une synchronisation (équivalent d'un webhook entrant).\"\"\"\n437\t def _job():\n438\t with _sync_lock:\n439\t ingest.run([source] if source else None)\n440\t background.add_task(_job)\n441\t return {\"status\": \"démarré\", \"source\": source or \"toutes\"}\n442\t\n443\t\n444\t# --- Connexion KA ID (SSO Groupe KA) — AVANT le catch-all du SPA -------------\n445\tapp.include_router(auth.router)\n446\tapp.include_router(auth.fav_router) # favoris « Mon univers Ka » (hub central)\n447\t\n448\t# --- SEO : rendu serveur des pages publiques, sitemaps, robots.txt -----------\n449\tapp.include_router(seo.router)\n450\t\n451\t\n452\t# --- Frontend React (build Vite) --------------------------------------------\n453\tif FRONTEND_DIST.exists():\n454\t app.mount(\"/assets\", StaticFiles(directory=FRONTEND_DIST / \"assets\"), name=\"assets\")\n455\t\n456\t # Documentation statique (/doc/) — servie avant le catch-all SPA\n457\t doc_dir = FRONTEND_DIST / \"doc\"\n458\t if doc_dir.is_dir():\n459\t @app.get(\"/doc\", include_in_schema=False)\n460\t def doc_slash():\n461\t return RedirectResponse(\"/doc/\", status_code=308)\n462\t\n463\t app.mount(\"/doc\", StaticFiles(directory=doc_dir, html=True), name=\"doc\")\n464\t\n465\t @app.get(\"/{full_path:path}\")\n466\t def spa(full_path: str):\n467\t target = FRONTEND_DIST / full_path\n468\t if full_path and target.is_file():\n469\t return FileResponse(target)\n470\t # Chemin inconnu : vrai 404 (le HTML embarque quand même le SPA,\n471\t # l'utilisateur voit la page « introuvable » de React)\n472\t return seo.render_404(\"/\" + full_path)\n473\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n"}]},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"37a1b605-2920-41f2-adde-2da773f1ba1c","timestamp":"2026-08-25T14:16:37.839Z"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01YERARe33uVLAf9Vxw44kup","type":"tool_result","content":"1\t{\n2\t \"name\": \"auto-ka-frontend\",\n3\t \"author\": \"Simon-Pierre Boucher \",\n4\t \"private\": true,\n5\t \"version\": \"1.0.0\",\n6\t \"type\": \"module\",\n7\t \"scripts\": {\n8\t \"dev\": \"vite\",\n9\t \"build\": \"tsc -b && vite build\",\n10\t \"preview\": \"vite preview\"\n11\t },\n12\t \"dependencies\": {\n13\t \"react\": \"^18.3.1\",\n14\t \"react-dom\": \"^18.3.1\",\n15\t \"react-router-dom\": \"^6.26.0\"\n16\t },\n17\t \"devDependencies\": {\n18\t \"@types/react\": \"^18.3.3\",\n19\t \"@types/react-dom\": \"^18.3.0\",\n20\t \"@vitejs/plugin-react\": \"^4.3.1\",\n21\t \"typescript\": \"^5.5.4\",\n22\t \"vite\": \"^5.4.0\"\n23\t }\n24\t}\n25\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n"}]},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"916cc7d0-a9b3-4466-b784-29520f73189a","timestamp":"2026-08-25T14:16:37.773Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"a6781332982e4f0b5","tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","description":"Running ls -la /Users/simon-pierreboucher/auto-ka/fronten…","usage":{"total_tokens":10188,"tool_uses":3,"duration_ms":2647},"last_tool_name":"Bash","uuid":"222006a3-9597-4c2a-9493-b3878b348341","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcGvuCMcfx3MxwvihYa","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01JysbKnBkRHb9W6gmV9GdiR","name":"Bash","input":{"command":"ls -la /Users/simon-pierreboucher/auto-ka/frontend/ | grep -E \"^-\""},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":5,"cache_creation_input_tokens":1609,"cache_read_input_tokens":8530,"cache_creation":{"ephemeral_5m_input_tokens":1609,"ephemeral_1h_input_tokens":0},"output_tokens":18,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"e21de165-297a-40e8-9fcf-19b54344d35c"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01JysbKnBkRHb9W6gmV9GdiR","type":"tool_result","content":"-rw-r--r-- 1 simon-pierreboucher staff 6148 Aug 13 04:15 .DS_Store\n-rw-r--r-- 1 simon-pierreboucher staff 1501 Aug 22 14:46 index.html\n-rw-r--r-- 1 simon-pierreboucher staff 60665 Aug 17 20:26 package-lock.json\n-rw-r--r-- 1 simon-pierreboucher staff 551 Aug 12 08:19 package.json\n-rw-r--r-- 1 simon-pierreboucher staff 510 Aug 12 08:19 tsconfig.json\n-rw-r--r-- 1 simon-pierreboucher staff 478 Aug 24 01:16 tsconfig.tsbuildinfo\n-rw-r--r-- 1 simon-pierreboucher staff 512 Aug 12 08:19 vite.config.ts","is_error":false}]},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"6e1962f3-0369-47d1-83e8-49645a07ac8a","timestamp":"2026-08-25T14:16:38.068Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"a6781332982e4f0b5","tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","description":"Running find /Users/simon-pierreboucher/auto-ka/frontend/…","usage":{"total_tokens":11015,"tool_uses":4,"duration_ms":4294},"last_tool_name":"Bash","uuid":"ba2d7176-1e43-46fc-9aef-c236c1cc4eaa","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcH2w6EtWd6YTxkFf9x","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01SgUuyXDG3cSuKavb3n9HMv","name":"Bash","input":{"command":"find /Users/simon-pierreboucher/auto-ka/frontend/src -type f \\( -name \"*.tsx\" -o -name \"*.ts\" -o -name \"*.css\" \\) | sort"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":7,"cache_creation_input_tokens":823,"cache_read_input_tokens":10139,"cache_creation":{"ephemeral_5m_input_tokens":823,"ephemeral_1h_input_tokens":0},"output_tokens":1,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"1066870c-1e25-4ef6-97c5-06d9823b84ad"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01SgUuyXDG3cSuKavb3n9HMv","type":"tool_result","content":"/Users/simon-pierreboucher/auto-ka/frontend/src/App.tsx\n/Users/simon-pierreboucher/auto-ka/frontend/src/account.tsx\n/Users/simon-pierreboucher/auto-ka/frontend/src/api.ts\n/Users/simon-pierreboucher/auto-ka/frontend/src/components/Charts.tsx\n/Users/simon-pierreboucher/auto-ka/frontend/src/components/FavButton.tsx\n/Users/simon-pierreboucher/auto-ka/frontend/src/components/VehicleCard.tsx\n/Users/simon-pierreboucher/auto-ka/frontend/src/ka/GroupeKaBadge.tsx\n/Users/simon-pierreboucher/auto-ka/frontend/src/ka/KaFooter.tsx\n/Users/simon-pierreboucher/auto-ka/frontend/src/ka/stats/kacharts.tsx\n/Users/simon-pierreboucher/auto-ka/frontend/src/ka/tokens.css\n/Users/simon-pierreboucher/auto-ka/frontend/src/main.tsx\n/Users/simon-pierreboucher/auto-ka/frontend/src/pages/Contact.tsx\n/Users/simon-pierreboucher/auto-ka/frontend/src/pages/Home.tsx\n/Users/simon-pierreboucher/auto-ka/frontend/src/pages/Profil.tsx\n/Users/simon-pierreboucher/auto-ka/frontend/src/pages/SeoListing.tsx\n/Users/simon-pierreboucher/auto-ka/frontend/src/pages/Sources.tsx\n/Users/simon-pierreboucher/auto-ka/frontend/src/pages/Stats.tsx\n/Users/simon-pierreboucher/auto-ka/frontend/src/pages/Vehicle.tsx\n/Users/simon-pierreboucher/auto-ka/frontend/src/styles.css\n/Users/simon-pierreboucher/auto-ka/frontend/src/vite-env.d.ts","is_error":false}]},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"ba52090b-e0b8-4818-8f30-0172a45bf842","timestamp":"2026-08-25T14:16:39.705Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"aa77f553c30839219","tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","description":"Reading autoka/recalls.py","usage":{"total_tokens":38640,"tool_uses":14,"duration_ms":13643},"last_tool_name":"Read","uuid":"4550f4bc-cb72-4769-9d72-05c56c3ec189","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcH27izkRXLev7Bgavd","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01LLjuaYJ69zD1YCpKX77ox5","name":"Read","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/autoka/recalls.py"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":7,"cache_creation_input_tokens":10567,"cache_read_input_tokens":28017,"cache_creation":{"ephemeral_5m_input_tokens":10567,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"b47d04a0-26f4-4c57-b56b-2fc4608de42c"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01LLjuaYJ69zD1YCpKX77ox5","type":"tool_result","content":"1\t# -----------------------------------------------------------------------------\n2\t# Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n3\t# Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n4\t# recalls.py : rappels de sécurité — Base de données des rappels de véhicules\n5\t# de Transports Canada (données ouvertes, gratuit)\n6\t#\n7\t# Source : dump mensuel complet CSV du jeu de données « Vehicle Recalls\n8\t# Database » (ouvert.canada.ca, jeu 1ec92326-47ef-4110-b7ca-959fab03f96d) :\n9\t# https://opendatatc.tc.canada.ca/vrdb_full_monthly.csv (~200 Mo)\n10\t# 1 ligne = 1 rappel × marque × modèle × année-modèle. L'API REST officielle\n11\t# (tc.api.canada.ca) exige une clé délivrée manuellement — le CSV ouvert est\n12\t# la voie sans clé, rafraîchi mensuellement par TC.\n13\t#\n14\t# Table `recalls` (make/model/year normalisés en MAJUSCULES sans accents) +\n15\t# croisement par (make, model, year) avec les annonces : le modèle TC est\n16\t# souvent plus court que le nôtre (« CIVIC » vs « Civic Sport Touring ») —\n17\t# on matche si l'un préfixe l'autre au premier mot près, année exacte.\n18\t#\n19\t# Peuplement one-shot / mensuel : python3 -m autoka.recalls [--limit-years N]\n20\t# -----------------------------------------------------------------------------\n21\tfrom __future__ import annotations\n22\t\n23\timport csv\n24\timport io\n25\timport sqlite3\n26\timport sys\n27\timport time\n28\timport unicodedata\n29\t\n30\timport requests\n31\t\n32\tCSV_URL = \"https://opendatatc.tc.canada.ca/vrdb_full_monthly.csv\"\n33\t\n34\t_SCHEMA = \"\"\"\n35\tCREATE TABLE IF NOT EXISTS recalls (\n36\t recall_number TEXT NOT NULL,\n37\t make TEXT NOT NULL, -- MAJUSCULES sans accents (norme TC)\n38\t model TEXT NOT NULL, -- MAJUSCULES sans accents (norme TC)\n39\t year INTEGER, -- année-modèle visée\n40\t date TEXT, -- date du rappel (YYYY-MM-DD)\n41\t component TEXT, -- système visé (FR, repli EN)\n42\t description TEXT, -- description (FR, repli EN)\n43\t category TEXT, -- Car / Truck / Motorcycle... (norme TC)\n44\t units_affected INTEGER,\n45\t PRIMARY KEY (recall_number, make, model, year)\n46\t);\n47\tCREATE INDEX IF NOT EXISTS idx_recalls_mmy ON recalls(make, model, year);\n48\t\"\"\"\n49\t\n50\t# alias marques Auto-Ka -> marque TC quand l'orthographe diffère\n51\t_MAKE_ALIASES = {\n52\t \"MERCEDES-BENZ\": (\"MERCEDES-BENZ\", \"MERCEDES\"),\n53\t \"LAND ROVER\": (\"LAND ROVER\", \"LANDROVER\"),\n54\t \"VOLKSWAGEN\": (\"VOLKSWAGEN\", \"VW\"),\n55\t \"CHEVROLET\": (\"CHEVROLET\", \"CHEV\"),\n56\t \"MINI\": (\"MINI\", \"BMW MINI\"),\n57\t}\n58\t\n59\t\n60\tdef _norm(text: str | None) -> str:\n61\t \"\"\"MAJUSCULES sans accents, espaces réduits — clé de croisement.\"\"\"\n62\t if not text:\n63\t return \"\"\n64\t t = unicodedata.normalize(\"NFKD\", text)\n65\t t = \"\".join(c for c in t if not unicodedata.combining(c))\n66\t return \" \".join(t.upper().split())\n67\t\n68\t\n69\tdef ensure_schema(con: sqlite3.Connection) -> None:\n70\t con.executescript(_SCHEMA)\n71\t con.commit()\n72\t\n73\t\n74\t# ---------------------------------------------------------------------------\n75\t# Peuplement depuis le dump CSV mensuel de Transports Canada\n76\t# ---------------------------------------------------------------------------\n77\t\n78\tdef _fr_or_en(fr: str, en: str) -> str:\n79\t fr = (fr or \"\").strip()\n80\t if fr and fr.lower() not in (\"translation not available\", \"non saisie\"):\n81\t return fr\n82\t return (en or \"\").strip()\n83\t\n84\t\n85\tdef populate(con: sqlite3.Connection, csv_path: str | None = None,\n86\t min_year: int = 1980) -> dict:\n87\t \"\"\"(Re)charge la table depuis le dump complet (téléchargé si besoin).\n88\t\n89\t `min_year` écarte les années-modèles antérieures au parc plausible\n90\t d'Auto-Ka (schema.py borne les annonces à 1980+).\n91\t \"\"\"\n92\t ensure_schema(con)\n93\t t0 = time.time()\n94\t if csv_path:\n95\t fh = open(csv_path, encoding=\"utf-8\", errors=\"replace\", newline=\"\")\n96\t else:\n97\t print(f\"[auto-ka] rappels TC : téléchargement {CSV_URL} ...\")\n98\t resp = requests.get(CSV_URL, timeout=600)\n99\t resp.raise_for_status()\n100\t fh = io.StringIO(resp.content.decode(\"utf-8\", errors=\"replace\"))\n101\t\n102\t con.execute(\"DELETE FROM recalls\")\n103\t n = kept = 0\n104\t with fh:\n105\t for row in csv.DictReader(fh):\n106\t n += 1\n107\t try:\n108\t year = int(float(row.get(\"YEAR\") or 0)) or None\n109\t except ValueError:\n110\t year = None\n111\t if year is not None and year < min_year:\n112\t continue\n113\t make = _norm(row.get(\"MAKE_NAME_NM\"))\n114\t model = _norm(row.get(\"MODEL_NAME_NM\"))\n115\t if not make or not row.get(\"RECALL_NUMBER_NUM\"):\n116\t continue\n117\t try:\n118\t units = int(float((row.get(\"UNIT_AFFECTED_NBR\") or \"0\")\n119\t .replace(\",\", \"\")))\n120\t except ValueError:\n121\t units = 0\n122\t con.execute(\n123\t \"\"\"INSERT OR REPLACE INTO recalls (recall_number, make, model,\n124\t year, date, component, description, category, units_affected)\n125\t VALUES (?,?,?,?,?,?,?,?,?)\"\"\",\n126\t (row[\"RECALL_NUMBER_NUM\"], make, model, year,\n127\t (row.get(\"RECALL_DATE_DTE\") or \"\")[:10],\n128\t _fr_or_en(row.get(\"SYSTEM_TYPE_FTXT\"), row.get(\"SYSTEM_TYPE_ETXT\")),\n129\t _fr_or_en(row.get(\"COMMENT_FTXT\"), row.get(\"COMMENT_ETXT\")),\n130\t row.get(\"CATEGORY_ETXT\") or \"\",\n131\t units))\n132\t kept += 1\n133\t con.commit()\n134\t total = con.execute(\"SELECT COUNT(*) c FROM recalls\").fetchone()[\"c\"]\n135\t out = {\"csv_rows\": n, \"kept\": kept, \"recalls_rows\": total,\n136\t \"seconds\": round(time.time() - t0, 1)}\n137\t print(f\"[auto-ka] rappels TC : {out}\")\n138\t return out\n139\t\n140\t\n141\t# ---------------------------------------------------------------------------\n142\t# Croisement avec une annonce (make/model/year normalisés)\n143\t# ---------------------------------------------------------------------------\n144\t\n145\tdef for_vehicle(con: sqlite3.Connection, make: str, model: str,\n146\t year: int | None) -> list[dict]:\n147\t \"\"\"Rappels TC visant ce (marque, modèle, année) — année exacte requise.\n148\t\n149\t Le modèle TC est générique (« CIVIC », « F-150 ») alors que le nôtre porte\n150\t parfois la version ; on matche par préfixe dans les deux sens, ancré sur\n151\t le premier mot pour éviter les faux positifs.\n152\t \"\"\"\n153\t if not make or not model or year is None:\n154\t return []\n155\t ensure_schema(con)\n156\t n_make, n_model = _norm(make), _norm(model)\n157\t makes = _MAKE_ALIASES.get(n_make, (n_make,))\n158\t first_word = n_model.split()[0]\n159\t\n160\t q = f\"\"\"SELECT recall_number, make, model, year, date, component,\n161\t description, category, units_affected\n162\t FROM recalls\n163\t WHERE make IN ({','.join('?' * len(makes))}) AND year=?\n164\t AND (model=? OR model LIKE ? OR ? LIKE model || ' %'\n165\t OR (length(model) >= 3 AND ? LIKE model || '%'))\n166\t ORDER BY date DESC\"\"\"\n167\t rows = con.execute(q, (*makes, year, n_model, f\"{first_word} %\",\n168\t n_model, first_word)).fetchall()\n169\t seen: set[str] = set()\n170\t out = []\n171\t for r in rows:\n172\t if r[\"recall_number\"] in seen:\n173\t continue\n174\t seen.add(r[\"recall_number\"])\n175\t out.append(dict(r))\n176\t return out\n177\t\n178\t\n179\tif __name__ == \"__main__\":\n180\t from . import db\n181\t con = db.connect()\n182\t path = sys.argv[1] if len(sys.argv) > 1 else None\n183\t populate(con, csv_path=path)\n184\t con.close()\n185\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n"}]},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"deb8c797-28ed-43cf-8441-51c6aa362d18","timestamp":"2026-08-25T14:16:39.843Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"aa77f553c30839219","tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","description":"Reading autoka/dealers.py","usage":{"total_tokens":38642,"tool_uses":15,"duration_ms":13962},"last_tool_name":"Read","uuid":"1ec9bfec-830d-4a35-9b08-e90e28582d85","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcH27izkRXLev7Bgavd","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01EsEs63iMhwLZdD6eGsFyzT","name":"Read","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/autoka/dealers.py","limit":80},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":7,"cache_creation_input_tokens":10567,"cache_read_input_tokens":28017,"cache_creation":{"ephemeral_5m_input_tokens":10567,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"9c4ce208-8016-4623-a93a-6d07bb42c8ad"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01EsEs63iMhwLZdD6eGsFyzT","type":"tool_result","content":"1\t# -----------------------------------------------------------------------------\n2\t# Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n3\t# Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n4\t# dealers.py : coordonnées des concessionnaires (adresse, téléphone, GPS)\n5\t#\n6\t# 1 source = 1 site de concessionnaire (sauf portails/marketplaces) : on\n7\t# visite UNE page par site (l'accueil suffit — l'adresse et le téléphone\n8\t# sont dans l'en-tête/le pied de page, et la plupart des plateformes (D2C,\n9\t# SM360, Convertus…) émettent un JSON-LD AutoDealer/LocalBusiness complet).\n10\t# Extraction : JSON-LD d'abord (address/telephone/geo), replis regex\n11\t# (lien tel:, adresse avec code postal canadien). GPS par défaut : centre\n12\t# de la ville de la source (data/villes_gps.json).\n13\t#\n14\t# Budget : ~138 requêtes UNE fois (cache en base — on ne re-visite que les\n15\t# sources absentes de la table), throttle 1 s.\n16\t#\n17\t# One-shot : python3 -m autoka.dealers [--refresh]\n18\t# -----------------------------------------------------------------------------\n19\tfrom __future__ import annotations\n20\t\n21\timport json\n22\timport re\n23\timport sqlite3\n24\timport time\n25\tfrom pathlib import Path\n26\t\n27\timport requests\n28\t\n29\tfrom .normalize import city_gps\n30\t\n31\tSOURCES_PATH = Path(__file__).resolve().parent.parent / \"data\" / \"sources.json\"\n32\t\n33\tUSER_AGENT = (\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) \"\n34\t \"AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126 Safari/537.36 \"\n35\t \"AutoKaBot/1.0 (+contact@spboucher.ai)\")\n36\t\n37\t_SCHEMA = \"\"\"\n38\tCREATE TABLE IF NOT EXISTS dealers (\n39\t source TEXT PRIMARY KEY, -- id de la source (data/sources.json)\n40\t name TEXT,\n41\t address TEXT,\n42\t phone TEXT,\n43\t website TEXT,\n44\t city TEXT,\n45\t lat REAL,\n46\t lng REAL,\n47\t fetched_at REAL\n48\t);\n49\t\"\"\"\n50\t\n51\t_LD_RE = re.compile(\n52\t r']*type=[\"\\']application/ld\\+json[\"\\'][^>]*>(.*?)', re.S)\n53\t_TEL_RE = re.compile(r'href=[\"\\']tel:([+\\d][\\d\\s().\\-]{6,18}\\d)[\"\\']', re.I)\n54\t# « 123 rue Untel, Ville (QC) J0X 1A0 » — ancré sur le code postal canadien\n55\t# (MAJUSCULES obligatoires et ; : # { } exclus : évite les couleurs hex et\n56\t# variables CSS inline des thèmes D2C qui imitent le motif postal)\n57\t_ADDR_RE = re.compile(\n58\t r\"(\\d{1,5}[^<>{}|;:#\\n]{5,90}?\\b[A-Z]\\d[A-Z]\\s?\\d[A-Z]\\d\\b)\")\n59\t_STYLE_RE = re.compile(r\"<(style|script)[^>]*>.*?\", re.S | re.I)\n60\t_PHONE_TXT_RE = re.compile(r\"(? None:\n67\t con.executescript(_SCHEMA)\n68\t con.commit()\n69\t\n70\t\n71\tdef _iter_ld(html: str):\n72\t for blob in _LD_RE.findall(html):\n73\t try:\n74\t data = json.loads(blob.strip())\n75\t except ValueError:\n76\t continue\n77\t stack = data if isinstance(data, list) else [data]\n78\t for item in stack:\n79\t if isinstance(item, dict):\n80\t yield from _flatten_ld(item)\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n"}]},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"a318cb7d-255c-46e6-8bd6-831cb1d69517","timestamp":"2026-08-25T14:16:40.163Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"aa77f553c30839219","tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","description":"Reading autoka/marketstats.py","usage":{"total_tokens":38644,"tool_uses":16,"duration_ms":14014},"last_tool_name":"Read","uuid":"843dcf42-f027-4f27-aa29-2b2ae1918366","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcH27izkRXLev7Bgavd","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01GUhGfG5SPppbYBQgaJz4bq","name":"Read","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/autoka/marketstats.py"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":7,"cache_creation_input_tokens":10567,"cache_read_input_tokens":28017,"cache_creation":{"ephemeral_5m_input_tokens":10567,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"bd165f18-1f9d-4f2b-af42-5f2f2000fac1"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01GUhGfG5SPppbYBQgaJz4bq","type":"tool_result","content":"1\t# -----------------------------------------------------------------------------\n2\t# Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n3\t# Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n4\t# marketstats.py : agrégats du marché — source unique pour /api/stats/detailed\n5\t# et le rapport PDF (autoka/pdfgen.py).\n6\t# -----------------------------------------------------------------------------\n7\tfrom __future__ import annotations\n8\t\n9\timport statistics\n10\timport time\n11\t\n12\tfrom . import db\n13\t\n14\t# bornes des classes de prix (k$) — dernière classe ouverte\n15\tPRICE_BUCKETS = [0, 5, 10, 15, 20, 25, 30, 40, 50, 75, 100]\n16\tKM_BUCKETS = [0, 20, 40, 60, 80, 100, 130, 160, 200] # en milliers de km\n17\t\n18\t\n19\tdef compute() -> dict:\n20\t \"\"\"Tous les agrégats du marché sur l'inventaire actif.\"\"\"\n21\t con = db.connect()\n22\t now = time.time()\n23\t\n24\t prices = [r[\"price\"] for r in con.execute(\n25\t \"SELECT price FROM vehicles WHERE active=1 AND kind='auto' AND price IS NOT NULL\")]\n26\t kms = [r[\"mileage_km\"] for r in con.execute(\n27\t \"SELECT mileage_km FROM vehicles WHERE active=1 AND kind='auto' AND mileage_km IS NOT NULL\")]\n28\t\n29\t head = con.execute(\n30\t \"\"\"SELECT COUNT(*) total, COUNT(DISTINCT source) sources,\n31\t COUNT(DISTINCT region) regions, AVG(price) avg_price,\n32\t AVG(mileage_km) avg_km, AVG(year) avg_year,\n33\t SUM(CASE WHEN first_seen > ? THEN 1 ELSE 0 END) new_7d,\n34\t SUM(CASE WHEN fuel IN ('Électrique') THEN 1 ELSE 0 END) ev,\n35\t SUM(CASE WHEN fuel LIKE 'Hybride%' THEN 1 ELSE 0 END) hybrid\n36\t FROM vehicles WHERE active=1 AND kind='auto'\"\"\", (now - 7 * 86400,)).fetchone()\n37\t\n38\t # histogramme des prix\n39\t price_hist = []\n40\t for i, lo in enumerate(PRICE_BUCKETS):\n41\t hi = PRICE_BUCKETS[i + 1] if i + 1 < len(PRICE_BUCKETS) else None\n42\t n = sum(1 for p in prices\n43\t if p >= lo * 1000 and (hi is None or p < hi * 1000))\n44\t label = f\"{lo}–{hi}k\" if hi else f\"{lo}k+\"\n45\t price_hist.append({\"label\": label, \"n\": n})\n46\t\n47\t # histogramme kilométrage\n48\t km_hist = []\n49\t for i, lo in enumerate(KM_BUCKETS):\n50\t hi = KM_BUCKETS[i + 1] if i + 1 < len(KM_BUCKETS) else None\n51\t n = sum(1 for k in kms\n52\t if k >= lo * 1000 and (hi is None or k < hi * 1000))\n53\t label = f\"{lo}–{hi}k\" if hi else f\"{lo}k+\"\n54\t km_hist.append({\"label\": label, \"n\": n})\n55\t\n56\t # répartition par année (2010+ ; avant regroupé)\n57\t year_rows = con.execute(\n58\t \"SELECT year, COUNT(*) n FROM vehicles WHERE active=1 AND kind='auto'\"\n59\t \" AND year IS NOT NULL GROUP BY year ORDER BY year\").fetchall()\n60\t year_hist, older = [], 0\n61\t for r in year_rows:\n62\t if r[\"year\"] < 2012:\n63\t older += r[\"n\"]\n64\t else:\n65\t year_hist.append({\"label\": str(r[\"year\"]), \"n\": r[\"n\"]})\n66\t if older:\n67\t year_hist.insert(0, {\"label\": \"≤2011\", \"n\": older})\n68\t\n69\t def _rows(sql, args=()):\n70\t return [dict(r) for r in con.execute(sql, args).fetchall()]\n71\t\n72\t out = {\n73\t \"generated_at\": now,\n74\t \"total\": head[\"total\"],\n75\t \"sources\": head[\"sources\"],\n76\t \"regions\": head[\"regions\"],\n77\t \"avg_price\": head[\"avg_price\"],\n78\t \"median_price\": statistics.median(prices) if prices else None,\n79\t \"avg_km\": head[\"avg_km\"],\n80\t \"median_km\": statistics.median(kms) if kms else None,\n81\t \"avg_year\": head[\"avg_year\"],\n82\t \"new_7d\": head[\"new_7d\"],\n83\t \"electrified_pct\": round(100.0 * (head[\"ev\"] + head[\"hybrid\"])\n84\t / head[\"total\"], 1) if head[\"total\"] else 0,\n85\t \"ev\": head[\"ev\"], \"hybrid\": head[\"hybrid\"],\n86\t \"price_hist\": price_hist,\n87\t \"km_hist\": km_hist,\n88\t \"year_hist\": year_hist,\n89\t \"by_make\": _rows(\n90\t \"SELECT make label, COUNT(*) n, ROUND(AVG(price)) avg_price\"\n91\t \" FROM vehicles WHERE active=1 AND kind='auto' AND make<>''\"\n92\t \" GROUP BY make ORDER BY n DESC LIMIT 14\"),\n93\t \"by_region\": _rows(\n94\t \"SELECT region label, COUNT(*) n, ROUND(AVG(price)) avg_price\"\n95\t \" FROM vehicles WHERE active=1 AND kind='auto' AND region<>''\"\n96\t \" GROUP BY region ORDER BY n DESC\"),\n97\t \"by_body\": _rows(\n98\t \"SELECT body_type label, COUNT(*) n FROM vehicles WHERE active=1 AND kind='auto'\"\n99\t \" AND body_type<>'' GROUP BY body_type ORDER BY n DESC\"),\n100\t \"by_fuel\": _rows(\n101\t \"SELECT fuel label, COUNT(*) n FROM vehicles WHERE active=1 AND kind='auto'\"\n102\t \" AND fuel<>'' GROUP BY fuel ORDER BY n DESC\"),\n103\t \"top_models\": _rows(\n104\t \"SELECT make || ' ' || model label, COUNT(*) n,\"\n105\t \" ROUND(AVG(price)) avg_price, ROUND(AVG(mileage_km)) avg_km\"\n106\t \" FROM vehicles WHERE active=1 AND kind='auto' AND make<>'' AND model<>''\"\n107\t \" GROUP BY make, model ORDER BY n DESC LIMIT 15\"),\n108\t \"top_dealers\": _rows(\n109\t \"SELECT dealer_name label, COUNT(*) n, ROUND(AVG(price)) avg_price\"\n110\t \" FROM vehicles WHERE active=1 AND kind='auto' AND dealer_name<>''\"\n111\t \" GROUP BY dealer_name ORDER BY n DESC LIMIT 12\"),\n112\t \"avg_price_by_year\": _rows(\n113\t \"SELECT year label, ROUND(AVG(price)) n FROM vehicles\"\n114\t \" WHERE active=1 AND kind='auto' AND year>=2012 AND price IS NOT NULL\"\n115\t \" GROUP BY year ORDER BY year\"),\n116\t \"price_drops\": _rows(\n117\t \"\"\"SELECT v.uid, v.title, v.year, v.price, v.dealer_name, v.city,\n118\t p.prev_price\n119\t FROM vehicles v JOIN (\n120\t SELECT uid, price prev_price,\n121\t ROW_NUMBER() OVER (PARTITION BY uid ORDER BY ts DESC) rn\n122\t FROM price_log) p ON p.uid=v.uid AND p.rn=2\n123\t WHERE v.active=1 AND kind='auto' AND v.price IS NOT NULL\n124\t AND p.prev_price > v.price\n125\t ORDER BY (p.prev_price - v.price) DESC LIMIT 12\"\"\"),\n126\t }\n127\t con.close()\n128\t return out\n129\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n"}]},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"e638460f-c287-4ed9-8718-bffda3093e06","timestamp":"2026-08-25T14:16:40.217Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"a6781332982e4f0b5","tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","description":"Reading frontend/src/pages/Vehicle.tsx","usage":{"total_tokens":11652,"tool_uses":5,"duration_ms":5876},"last_tool_name":"Read","uuid":"f94dfd60-48bb-45c8-b9e0-d4fdabd40136","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcH9sZAqo916g1c3KsT","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01SaF8ukfw56B7Px5i63sNZu","name":"Read","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/frontend/src/pages/Vehicle.tsx"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":6,"cache_creation_input_tokens":634,"cache_read_input_tokens":10962,"cache_creation":{"ephemeral_5m_input_tokens":634,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"4784fbc1-b106-4d0e-acca-85c617600c46"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"a6781332982e4f0b5","tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","description":"Reading frontend/src/App.tsx","usage":{"total_tokens":11654,"tool_uses":6,"duration_ms":5880},"last_tool_name":"Read","uuid":"240a013b-e6b1-410d-8976-ac9fae17bc39","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcH9sZAqo916g1c3KsT","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_013ymSRXR5W3E3TtFmNhF96t","name":"Read","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/frontend/src/App.tsx"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":6,"cache_creation_input_tokens":634,"cache_read_input_tokens":10962,"cache_creation":{"ephemeral_5m_input_tokens":634,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"c755d88e-ee3d-4fbf-9fd7-414da2cf65d9"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01SaF8ukfw56B7Px5i63sNZu","type":"tool_result","content":"1\t// -----------------------------------------------------------------------------\n2\t// Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n3\t// Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n4\t// Vehicle.tsx : fiche véhicule — galerie, specs, historique de prix, similaires\n5\t// -----------------------------------------------------------------------------\n6\timport { useEffect, useState } from \"react\";\n7\timport { Link, useParams } from \"react-router-dom\";\n8\timport { VehicleDetail, fetchVehicle, fmtDate, fmtKm, fmtPrice } from \"../api\";\n9\timport VehicleCard from \"../components/VehicleCard\";\n10\timport FavButton from \"../components/FavButton\";\n11\t\n12\texport default function VehiclePage() {\n13\t const { uid } = useParams<{ uid: string }>();\n14\t const [v, setV] = useState(null);\n15\t const [error, setError] = useState(false);\n16\t const [img, setImg] = useState(0);\n17\t\n18\t useEffect(() => {\n19\t setV(null); setError(false); setImg(0);\n20\t if (uid) fetchVehicle(uid).then(setV).catch(() => setError(true));\n21\t window.scrollTo(0, 0);\n22\t }, [uid]);\n23\t\n24\t useEffect(() => {\n25\t if (v) document.title = `${v.title} — ${fmtPrice(v.price)} | Auto·Ka`;\n26\t }, [v]);\n27\t\n28\t if (error)\n29\t return (\n30\t
\n31\t
🚗
\n32\t

Véhicule introuvable

\n33\t

Il a peut-être été vendu — l'inventaire évolue chaque jour.

\n34\t

← Retour à la recherche

\n35\t
\n36\t );\n37\t\n38\t if (!v)\n39\t return (\n40\t
\n41\t
\n42\t
\n43\t
\n44\t
\n45\t
\n46\t
\n47\t );\n48\t\n49\t const prevPrice = v.price_history.find(\n50\t (h) => h.price != null && v.price != null && h.price !== v.price\n51\t )?.price;\n52\t\n53\t const specs: [string, string][] = [\n54\t [\"Année\", v.year ? String(v.year) : \"—\"],\n55\t [\"Kilométrage\", fmtKm(v.mileage_km)],\n56\t [\"Transmission\", v.transmission || \"—\"],\n57\t [\"Carburant\", v.fuel || \"—\"],\n58\t [\"Motricité\", v.drivetrain || \"—\"],\n59\t [\"Carrosserie\", v.body_type || \"—\"],\n60\t [\"Moteur\", v.engine || \"—\"],\n61\t [\"Couleur ext.\", v.exterior_color || \"—\"],\n62\t [\"Couleur int.\", v.interior_color || \"—\"],\n63\t [\"Portes\", v.doors ? String(v.doors) : \"—\"],\n64\t [\"Places\", v.seats ? String(v.seats) : \"—\"],\n65\t [\"NIV (VIN)\", v.vin || \"—\"],\n66\t [\"No de stock\", v.stock_number || \"—\"],\n67\t ].filter(([, val]) => val !== \"—\") as [string, string][];\n68\t\n69\t return (\n70\t
\n71\t

\n72\t ← Retour à la recherche\n73\t

\n74\t
\n75\t
\n76\t {v.dealer_name || v.source} — {v.city}{v.region ? ` · ${v.region}` : \"\"}\n77\t

{v.title}

\n78\t
\n79\t
\n80\t
{fmtPrice(v.price)}
\n81\t {prevPrice != null && v.price != null && prevPrice > v.price && (\n82\t
{fmtPrice(prevPrice)}
\n83\t )}\n84\t
\n85\t
\n86\t\n87\t
\n88\t
\n89\t
\n90\t
\n91\t {v.images.length > 0 ? (\n92\t \n93\t {v.title}\n94\t \n95\t ) : (\n96\t
🚗
\n97\t )}\n98\t \n99\t
\n100\t {v.images.length > 1 && (\n101\t
\n102\t {v.images.map((u, i) => (\n103\t setImg(i)}\n110\t />\n111\t ))}\n112\t
\n113\t )}\n114\t
\n115\t\n116\t {v.description && (\n117\t
\n118\t

📝 Description du concessionnaire

\n119\t
{v.description}
\n120\t
\n121\t )}\n122\t
\n123\t\n124\t
\n125\t
\n126\t

🔧 Caractéristiques

\n127\t \n128\t \n129\t {specs.map(([k, val]) => (\n130\t \n131\t \n132\t \n133\t \n134\t ))}\n135\t \n136\t
{k}{val}
\n137\t \n138\t Voir chez {v.dealer_name || \"le concessionnaire\"} →\n139\t \n140\t {v.carfax_url && (\n141\t \n148\t 📋 Rapport Carfax\n149\t \n150\t )}\n151\t
\n152\t annonce originale — prix et disponibilité confirmés à la source\n153\t
\n154\t
\n155\t\n156\t {v.features.length > 0 && (\n157\t
\n158\t

✨ Équipements ({v.features.length})

\n159\t
\n160\t {v.features.map((f) => (\n161\t {f}\n162\t ))}\n163\t
\n164\t
\n165\t )}\n166\t\n167\t {v.price_history.length > 1 && (\n168\t
\n169\t

📉 Historique de prix

\n170\t
\n171\t {v.price_history.map((h, i) => {\n172\t const next = v.price_history[i + 1];\n173\t const dir =\n174\t next?.price != null && h.price != null\n175\t ? h.price < next.price ? \"down\" : h.price > next.price ? \"up\" : \"\"\n176\t : \"\";\n177\t return (\n178\t
\n179\t {fmtDate(h.ts)}\n180\t {fmtPrice(h.price)}\n181\t
\n182\t );\n183\t })}\n184\t
\n185\t
\n186\t )}\n187\t\n188\t
\n189\t

ℹ️ Suivi Auto-Ka

\n190\t \n191\t \n192\t \n193\t \n194\t \n195\t \n196\t
Repéré le{fmtDate(v.first_seen)}
Vérifié le{fmtDate(v.updated_at)}
Statut{v.active ? \"En vente\" : \"Retiré / vendu\"}
\n197\t
\n198\t
\n199\t
\n200\t\n201\t {v.similar.length > 0 && (\n202\t
\n203\t Comparer\n204\t

\n205\t {v.make} {v.model} similaires au Québec\n206\t

\n207\t
\n208\t {v.similar.map((s) => (\n209\t \n210\t ))}\n211\t
\n212\t
\n213\t )}\n214\t
\n215\t );\n216\t}\n217\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n"}]},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"48ff0fe0-f555-4c85-8cbd-91a9c12c6135","timestamp":"2026-08-25T14:16:41.267Z"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_013ymSRXR5W3E3TtFmNhF96t","type":"tool_result","content":"1\t// -----------------------------------------------------------------------------\n2\t// Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n3\t// Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n4\t// App.tsx : layout global (header + ticker en direct + footer encre) et routage\n5\t// -----------------------------------------------------------------------------\n6\timport { useEffect, useState } from \"react\";\n7\timport { NavLink, Route, Routes, useLocation, useNavigate } from \"react-router-dom\";\n8\timport {\n9\t fetchFacets, fetchSources, fetchStats, logout, registerSourceNames,\n10\t} from \"./api\";\n11\timport { AccountProvider, useAccount } from \"./account\";\n12\timport GroupeKaBadge from \"./ka/GroupeKaBadge\";\n13\timport KaFooter from \"./ka/KaFooter\";\n14\timport Home from \"./pages/Home\";\n15\timport ContactPage from \"./pages/Contact\";\n16\timport VehiclePage from \"./pages/Vehicle\";\n17\timport SourcesPage from \"./pages/Sources\";\n18\timport StatsPage from \"./pages/Stats\";\n19\timport ProfilPage from \"./pages/Profil\";\n20\timport SeoListing from \"./pages/SeoListing\";\n21\t\n22\tfunction Ticker() {\n23\t const [items, setItems] = useState([]);\n24\t\n25\t useEffect(() => {\n26\t Promise.all([fetchStats(), fetchFacets(), fetchSources()])\n27\t .then(([stats, facets, src]) => {\n28\t registerSourceNames(src.sources);\n29\t const parts: string[] = [\n30\t `${stats.total.toLocaleString(\"fr-CA\")} véhicules à vendre`,\n31\t `${stats.sources} concessionnaires connectés`,\n32\t ];\n33\t if (stats.avg_price != null)\n34\t parts.push(`Prix moyen ${Math.round(stats.avg_price).toLocaleString(\"fr-CA\")} $`);\n35\t for (const r of stats.by_region.slice(0, 8))\n36\t parts.push(`${r.region} · ${r.n}`);\n37\t for (const m of facets.makes.slice(0, 8))\n38\t parts.push(`${m.make} · ${m.n}`);\n39\t parts.push(\"Directement des sites des concessionnaires\");\n40\t setItems(parts);\n41\t })\n42\t .catch(() => setItems([\"Auto-Ka — voitures usagées à vendre au Québec\"]));\n43\t }, []);\n44\t\n45\t if (items.length === 0) return null;\n46\t // contenu doublé pour une boucle de défilement continue\n47\t return (\n48\t
\n49\t
\n50\t {[...items, ...items].map((t, i) => (\n51\t {t}\n52\t ))}\n53\t
\n54\t
\n55\t );\n56\t}\n57\t\n58\t/** Bouton « Connexion » (SSO KA ID) ou avatar + menu compte si connecté */\n59\tfunction AccountMenu() {\n60\t const { me, enabled } = useAccount();\n61\t const [menuOpen, setMenuOpen] = useState(false);\n62\t const loc = useLocation();\n63\t const nav = useNavigate();\n64\t\n65\t // menu ouvert = verrou du scroll d'arrière-plan (ka-scroll-lock sur )\n66\t // + fermeture par Escape et par tap extérieur au niveau document\n67\t useEffect(() => {\n68\t if (!menuOpen) return;\n69\t document.documentElement.classList.add(\"ka-scroll-lock\");\n70\t const onKey = (e: KeyboardEvent) => { if (e.key === \"Escape\") setMenuOpen(false); };\n71\t const onDown = (e: PointerEvent) => {\n72\t if (!(e.target as Element | null)?.closest(\".account\")) setMenuOpen(false);\n73\t };\n74\t window.addEventListener(\"keydown\", onKey);\n75\t document.addEventListener(\"pointerdown\", onDown);\n76\t return () => {\n77\t document.documentElement.classList.remove(\"ka-scroll-lock\");\n78\t window.removeEventListener(\"keydown\", onKey);\n79\t document.removeEventListener(\"pointerdown\", onDown);\n80\t };\n81\t }, [menuOpen]);\n82\t\n83\t if (!enabled) return null;\n84\t if (!me) {\n85\t const next = encodeURIComponent(loc.pathname + loc.search);\n86\t return (\n87\t \n88\t KA\n89\t Connexion\n90\t \n91\t );\n92\t }\n93\t return (\n94\t
\n95\t setMenuOpen(!menuOpen)}\n98\t aria-expanded={menuOpen}\n99\t aria-haspopup=\"menu\"\n100\t aria-label={`Compte : ${me.name || me.email}`}\n101\t >\n102\t {me.picture\n103\t ? \"\"\n104\t : {(me.name || me.email).charAt(0).toUpperCase()}}\n105\t \n106\t {menuOpen && (\n107\t <>\n108\t
setMenuOpen(false)} aria-hidden=\"true\" />\n109\t
\n110\t
\n111\t {me.name || \"Mon compte\"}\n112\t {me.email}\n113\t {me.ka_id && {me.ka_id}}\n114\t \n115\t Compte Groupe KA — le même KA-ID sur toutes les plateformes\n116\t \n117\t
\n118\t setMenuOpen(false)}\n123\t >\n124\t Mon profil\n125\t \n126\t setMenuOpen(false)}\n133\t >\n134\t Mes favoris — Mon univers Ka ↗\n135\t \n136\t {\n139\t await logout();\n140\t setMenuOpen(false);\n141\t nav(\"/\");\n142\t window.location.reload();\n143\t }}\n144\t >\n145\t Se déconnecter\n146\t \n147\t
\n148\t \n149\t )}\n150\t
\n151\t );\n152\t}\n153\t\n154\t/* Liens de navigation — partagés entre la nav desktop et le menu mobile */\n155\tconst NAV_LINKS = [\n156\t { to: \"/\", label: \"Autos\", icon: \"🚗\", end: true },\n157\t { to: \"/motos\", label: \"Motos\", icon: \"🏍️\", end: false },\n158\t { to: \"/scooters\", label: \"Scooters\", icon: \"🛵\", end: false },\n159\t { to: \"/stats\", label: \"Stats\", icon: \"📊\", end: false },\n160\t { to: \"/sources\", label: \"Sources\", icon: \"🗂\", end: false },\n161\t { to: \"/contact\", label: \"Contact\", icon: \"✉️\", end: false },\n162\t];\n163\t\n164\tfunction Header() {\n165\t const [open, setOpen] = useState(false);\n166\t const location = useLocation();\n167\t\n168\t // fermer le menu à chaque navigation + verrouiller le défilement en dessous\n169\t useEffect(() => { setOpen(false); }, [location]);\n170\t useEffect(() => {\n171\t if (!open) return;\n172\t document.documentElement.classList.add(\"ka-scroll-lock\");\n173\t const onKey = (e: KeyboardEvent) => { if (e.key === \"Escape\") setOpen(false); };\n174\t window.addEventListener(\"keydown\", onKey);\n175\t return () => {\n176\t document.documentElement.classList.remove(\"ka-scroll-lock\");\n177\t window.removeEventListener(\"keydown\", onKey);\n178\t };\n179\t }, [open]);\n180\t\n181\t return (\n182\t <>\n183\t {/* .menu-open remonte le header au-dessus du backdrop (posé HORS du\n184\t header, en frère) */}\n185\t
\n186\t
\n187\t \n188\t AutoKa\n189\t Voitures usagées · tout le Québec · toujours à jour\n190\t \n191\t \n192\t \n204\t \n205\t setOpen(!open)}\n210\t >\n211\t \n212\t \n213\t
\n214\t\n215\t {/* menu déroulant mobile */}\n216\t
\n217\t {NAV_LINKS.map((l, i) => (\n218\t `mm-link ${isActive ? \"active\" : \"\"}`}\n224\t onClick={() => setOpen(false)}\n225\t >\n226\t {l.icon}\n227\t {l.label}\n228\t →\n229\t \n230\t ))}\n231\t
\n232\t \n233\t
\n234\t
\n235\t Agrégateur indépendant — mis à jour automatiquement, chaque fiche\n236\t renvoie à l'annonce originale du concessionnaire.\n237\t
\n238\t
\n239\t
\n240\t {open &&
setOpen(false)} aria-hidden=\"true\" />}\n241\t \n242\t {/* variante mobile du badge (le badge du header est masqué < 1024 px) */}\n243\t
\n244\t \n245\t
\n246\t \n247\t );\n248\t}\n249\t\n250\texport default function App() {\n251\t return (\n252\t \n253\t
\n254\t
\n255\t \n256\t } />\n257\t } />\n258\t } />\n259\t {/* pages programmatiques (SEO) — servies pré-rendues par le serveur */}\n260\t } />\n261\t } />\n262\t } />\n263\t } />\n264\t } />\n265\t } />\n266\t } />\n267\t } />\n268\t } />\n269\t } />\n270\t } />\n271\t } />\n272\t } />\n273\t \n277\t
🧭
\n278\t

Page introuvable

\n279\t

Le lien demandé n'existe pas.

\n280\t
\n281\t }\n282\t />\n283\t \n284\t \n285\t \n286\t \n287\t );\n288\t}\n289\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n"}]},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"24d0def6-f0d8-4257-a801-1faa1fdb45d4","timestamp":"2026-08-25T14:16:41.268Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"a6781332982e4f0b5","tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","description":"Reading frontend/src/styles.css","usage":{"total_tokens":11656,"tool_uses":7,"duration_ms":6027},"last_tool_name":"Read","uuid":"230924dc-3512-437d-bdec-08504382184d","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcH9sZAqo916g1c3KsT","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01U9kY6UMqPnW56gee1HvanH","name":"Read","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/frontend/src/styles.css"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":6,"cache_creation_input_tokens":634,"cache_read_input_tokens":10962,"cache_creation":{"ephemeral_5m_input_tokens":634,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"d669c79d-2982-4636-b2e9-2e87b39d2808"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01U9kY6UMqPnW56gee1HvanH","type":"tool_result","content":"1\t/* -----------------------------------------------------------------------------\n2\t Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n3\t Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n4\t styles.css : classes MÉTIER par-dessus le socle Groupe KA (ka/tokens.css).\n5\t · Le socle (palette papier/encre, typo, ombres décalées, breakpoints,\n6\t composants partagés) vient de ka/tokens.css, importé AVANT ce fichier.\n7\t · Ici : SEUL l'accent du site est surchargé + les classes propres à\n8\t Auto-Ka (fiches véhicules, filtres, stats, compte KA ID).\n9\t · Accent Auto-Ka : orange brûlé #ff5a2a sur encre.\n10\t----------------------------------------------------------------------------- */\n11\t:root {\n12\t /* ---- ACCENT Auto-Ka — seules variables surchargées des tokens ka-ui ---- */\n13\t --accent: #ff5a2a;\n14\t --accent-soft: #ffe8de;\n15\t --accent-deep: #cc3f16;\n16\t --on-accent: #ffffff;\n17\t /* alias rétro-compatibles avec le socle */\n18\t --lime: var(--accent);\n19\t --lime-soft: var(--accent-soft);\n20\t /* variables métier locales (absentes des tokens) */\n21\t --good: #1c7a4d;\n22\t --good-soft: #e2f4e9;\n23\t}\n24\t\n25\t/* — surcharges locales du socle (layout historique d'Auto-Ka) — */\n26\th1, h2, h3, h4 { margin: 0; }\n27\ta { text-decoration: none; }\n28\tbutton { font-family: inherit; }\n29\t\n30\t.mono { font-family: var(--font-mono); }\n31\t.kicker { color: var(--accent-deep); }\n32\t.kicker::before { background: var(--accent); }\n33\t\n34\t.container { max-width: 1280px; padding: 0 24px; }\n35\t@media (max-width: 640px) { .container { padding: 0 16px; } .header-inner { height: 56px; } }\n36\t\n37\t/* ================= Header ================= */\n38\t.header {\n39\t position: sticky; top: 0; z-index: var(--z-header, 500);\n40\t background: var(--paper);\n41\t border-bottom: 2px solid var(--ink);\n42\t}\n43\t.header-inner { display: flex; align-items: center; gap: 20px; height: 64px; }\n44\t.brand {\n45\t position: relative;\n46\t font-family: var(--font-display); font-weight: 700; font-size: 26px;\n47\t letter-spacing: -0.04em; display: flex; align-items: center; line-height: 1;\n48\t}\n49\t/* Cible tactile ≥44 px pour le logo (102×32 au naturel) */\n50\t.brand::after { content: \"\"; position: absolute; inset: -8px; }\n51\t.brand .ka {\n52\t background: var(--ink); color: var(--accent); padding: 2px 7px 4px;\n53\t border-radius: 6px; margin-left: 3px; transform: rotate(-2deg);\n54\t transition: transform 0.2s ease;\n55\t}\n56\t.brand:hover .ka { transform: rotate(0deg); }\n57\t.brand-tag {\n58\t font-family: var(--font-mono); font-size: 10.5px; color: var(--ink-3);\n59\t letter-spacing: 0.08em; text-transform: uppercase; margin-left: 12px;\n60\t}\n61\t@media (max-width: 860px) { .brand-tag { display: none; } }\n62\t.nav {\n63\t margin-left: auto; display: flex; gap: 4px;\n64\t overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none;\n65\t}\n66\t.nav::-webkit-scrollbar { display: none; }\n67\t.nav a { flex: none; }\n68\t.nav a {\n69\t padding: 9px 16px; border-radius: 999px; font-weight: 600; font-size: 14px;\n70\t color: var(--ink-2); border: 1.5px solid transparent;\n71\t transition: all 0.15s ease; min-height: 44px; display: inline-flex; align-items: center;\n72\t}\n73\t.nav a:hover { border-color: var(--ink); color: var(--ink); }\n74\t.nav a.active { background: var(--ink); color: var(--accent); }\n75\t@media (max-width: 640px) {\n76\t .nav a { padding: 8px 11px; font-size: 13px; }\n77\t}\n78\t\n79\t/* — badge « Un service Groupe KA » (composant ka/GroupeKaBadge) — */\n80\t.header .gk-badge { flex: none; margin-left: 2px; }\n81\t@media (max-width: 1023px) { .header .gk-badge { display: none; } }\n82\t/* variante mobile : petite barre sous le ticker, tactile ≥ 44 px */\n83\t.gk-mobile {\n84\t display: none; align-items: center; justify-content: center;\n85\t min-height: 44px; padding: 5px 16px;\n86\t background: var(--surface-2); border-bottom: 1.5px solid var(--line);\n87\t}\n88\t@media (max-width: 1023px) { .gk-mobile { display: flex; } }\n89\t\n90\t/* ================= Ticker ================= */\n91\t.ticker {\n92\t background: var(--ink); color: var(--accent); overflow: hidden;\n93\t font-family: var(--font-mono); font-size: 11.5px; letter-spacing: 0.1em;\n94\t text-transform: uppercase; padding: 7px 0; white-space: nowrap;\n95\t border-bottom: 1px solid rgba(255, 90, 42, 0.25);\n96\t}\n97\t.ticker-track { display: inline-flex; gap: 0; animation: ticker 40s linear infinite; will-change: transform; }\n98\t.ticker span { padding: 0 26px; position: relative; }\n99\t.ticker span::after { content: \"◆\"; position: absolute; right: -6px; opacity: 0.5; font-size: 8px; top: 3px; }\n100\t@keyframes ticker { from { transform: translateX(0); } to { transform: translateX(-50%); } }\n101\t@media (prefers-reduced-motion: reduce) {\n102\t .ticker-track { animation: none; }\n103\t * { transition-duration: 0.01ms !important; }\n104\t}\n105\t\n106\t/* ================= Hero ================= */\n107\t.hero { padding: 46px 0 8px; }\n108\t.hero h1 {\n109\t font-size: clamp(30px, 5vw, 52px); font-weight: 700; line-height: 1.04;\n110\t max-width: 820px;\n111\t}\n112\t.hero h1 em { font-style: normal; color: var(--accent-deep); position: relative; }\n113\t.hero p.sub {\n114\t margin: 14px 0 0; color: var(--ink-2); font-size: 16.5px; max-width: 640px;\n115\t}\n116\t.hero-stats { display: flex; gap: 28px; margin-top: 22px; flex-wrap: wrap; }\n117\t.hstat { font-family: var(--font-mono); font-size: 12px; color: var(--ink-2); }\n118\t.hstat b { display: block; font-family: var(--font-display); font-size: 26px; color: var(--ink); letter-spacing: -0.02em; }\n119\t\n120\t/* ================= Filtres ================= */\n121\t.filters {\n122\t background: var(--surface); border: 2px solid var(--ink);\n123\t border-radius: var(--r-card); box-shadow: var(--shadow-off);\n124\t padding: 16px; margin: 26px 0 8px;\n125\t display: grid; gap: 10px;\n126\t grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));\n127\t}\n128\t.filters .full { grid-column: 1 / -1; }\n129\t.f-field { display: flex; flex-direction: column; gap: 4px; }\n130\t.f-field label {\n131\t font-family: var(--font-mono); font-size: 10px; text-transform: uppercase;\n132\t letter-spacing: 0.12em; color: var(--ink-3); font-weight: 600;\n133\t}\n134\t.f-field select, .f-field input {\n135\t border: 1.5px solid var(--line-strong); border-radius: var(--r-ctl);\n136\t background: var(--surface); font: inherit; font-size: 14px;\n137\t padding: 9px 10px; min-height: 44px; color: var(--ink);\n138\t}\n139\t.f-field select:focus, .f-field input:focus {\n140\t outline: 2px solid var(--accent); outline-offset: 1px;\n141\t}\n142\t.f-actions { display: flex; align-items: flex-end; gap: 8px; }\n143\t.btn {\n144\t font-family: var(--font-display); font-weight: 600; font-size: 14.5px;\n145\t border: 2px solid var(--ink); border-radius: var(--r-ctl);\n146\t background: var(--ink); color: var(--paper); cursor: pointer;\n147\t padding: 9px 18px; min-height: 44px;\n148\t transition: transform 0.12s ease, box-shadow 0.12s ease;\n149\t}\n150\t.btn:hover { transform: translate(-2px, -2px); box-shadow: 4px 4px 0 var(--accent); }\n151\t.btn.ghost { background: transparent; color: var(--ink); }\n152\t.btn.ghost:hover { box-shadow: 4px 4px 0 var(--ink); }\n153\t\n154\t.result-bar {\n155\t display: flex; align-items: center; gap: 14px; margin: 22px 0 14px; flex-wrap: wrap;\n156\t}\n157\t.result-bar h2 { font-size: 20px; }\n158\t.result-bar .count { color: var(--accent-deep); }\n159\t.sort-box { margin-left: auto; display: flex; align-items: center; gap: 8px; }\n160\t.sort-box label { font-family: var(--font-mono); font-size: 11px; text-transform: uppercase; color: var(--ink-3); }\n161\t.sort-box select {\n162\t border: 1.5px solid var(--line-strong); border-radius: var(--r-ctl);\n163\t background: var(--surface); font: inherit; font-size: 13.5px; padding: 7px 9px;\n164\t}\n165\t\n166\t/* ================= Grille véhicules ================= */\n167\t.vgrid {\n168\t display: grid; gap: 22px;\n169\t grid-template-columns: repeat(auto-fill, minmax(285px, 1fr));\n170\t padding-bottom: 30px;\n171\t}\n172\t.vcard {\n173\t background: var(--surface); border: 2px solid var(--ink);\n174\t border-radius: var(--r-card); overflow: hidden; position: relative;\n175\t display: flex; flex-direction: column;\n176\t transition: transform 0.15s ease, box-shadow 0.15s ease;\n177\t box-shadow: var(--shadow-flat);\n178\t}\n179\t.vcard:hover { transform: translate(-3px, -3px); box-shadow: var(--shadow-off); }\n180\t.vcard .photo {\n181\t aspect-ratio: 4 / 3; background: var(--surface-2); position: relative; overflow: hidden;\n182\t}\n183\t.vcard .photo img { width: 100%; height: 100%; object-fit: cover; }\n184\t.vcard .photo .nopic {\n185\t position: absolute; inset: 0; display: grid; place-items: center;\n186\t color: var(--ink-3); font-size: 40px;\n187\t}\n188\t.vcard .year-chip {\n189\t position: absolute; top: 10px; left: 10px;\n190\t background: var(--ink); color: var(--paper); font-family: var(--font-mono);\n191\t font-size: 11.5px; font-weight: 600; padding: 3px 9px; border-radius: 999px;\n192\t}\n193\t.vcard .drop-chip {\n194\t position: absolute; top: 10px; right: 10px;\n195\t background: var(--good); color: var(--paper); font-family: var(--font-mono);\n196\t font-size: 10.5px; font-weight: 600; padding: 3px 9px; border-radius: 999px;\n197\t}\n198\t\n199\t/* ===== Favoris — cœur rond « Mon univers Ka » en coin de photo ===== */\n200\t.fav-btn {\n201\t position: absolute; right: 10px; bottom: 10px; z-index: 2;\n202\t width: 44px; height: 44px; padding: 0;\n203\t display: flex; align-items: center; justify-content: center;\n204\t background: rgba(255, 255, 255, 0.94); border: 2px solid var(--ink);\n205\t border-radius: 999px; cursor: pointer; color: var(--ink);\n206\t transition: transform 0.12s ease, background 0.12s ease;\n207\t}\n208\t.fav-btn:hover { transform: scale(1.12); }\n209\t.fav-btn.on { background: var(--accent-soft); color: var(--accent-deep); }\n210\t.fav-btn.on svg { filter: drop-shadow(0 0 3px rgba(204, 63, 22, 0.35)); }\n211\t.gallery .main { position: relative; }\n212\t.gallery .main .fav-btn { right: 14px; bottom: 14px; width: 44px; height: 44px; }\n213\t.gallery .main .fav-btn svg { width: 20px; height: 20px; }\n214\t.vcard .body { padding: 14px 16px 16px; display: flex; flex-direction: column; gap: 8px; flex: 1; }\n215\t.vcard h3 { font-size: 16.5px; line-height: 1.25; }\n216\t.vcard .price {\n217\t font-family: var(--font-display); font-weight: 700; font-size: 21px;\n218\t color: var(--accent-deep); letter-spacing: -0.02em;\n219\t}\n220\t.vcard .price small { font-size: 12px; color: var(--ink-3); font-weight: 500; }\n221\t.vcard .specs {\n222\t display: flex; flex-wrap: wrap; gap: 6px;\n223\t}\n224\t.spec-chip {\n225\t font-family: var(--font-mono); font-size: 10.5px;\n226\t background: var(--surface-2); border: 1px solid var(--line);\n227\t padding: 3px 8px; border-radius: 999px; color: var(--ink-2);\n228\t}\n229\t.vcard .foot {\n230\t margin-top: auto; padding-top: 10px; border-top: 1px dashed var(--line);\n231\t font-size: 12px; color: var(--ink-3);\n232\t display: flex; justify-content: space-between; gap: 8px;\n233\t}\n234\t\n235\t/* ================= Pagination ================= */\n236\t.pager { display: flex; justify-content: center; gap: 10px; padding: 8px 0 46px; align-items: center; }\n237\t.pager .mono { font-size: 12px; color: var(--ink-2); }\n238\t\n239\t/* ================= Fiche véhicule ================= */\n240\t.vdetail { padding: 34px 0 60px; }\n241\t.vd-head { display: flex; align-items: flex-start; gap: 16px; flex-wrap: wrap; margin-bottom: 20px; }\n242\t.vd-head h1 { font-size: clamp(24px, 3.6vw, 38px); line-height: 1.1; max-width: 760px; }\n243\t.vd-price {\n244\t margin-left: auto; text-align: right;\n245\t}\n246\t.vd-price .p {\n247\t font-family: var(--font-display); font-weight: 700; font-size: 34px;\n248\t color: var(--accent-deep); letter-spacing: -0.02em;\n249\t}\n250\t.vd-price .was { font-size: 14px; color: var(--ink-3); text-decoration: line-through; }\n251\t.vd-cols { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(280px, 1fr); gap: 28px; }\n252\t@media (max-width: 900px) { .vd-cols { grid-template-columns: 1fr; } }\n253\t\n254\t.gallery { border: 2px solid var(--ink); border-radius: var(--r-card); overflow: hidden; background: var(--surface); }\n255\t.gallery .main { aspect-ratio: 4 / 3; background: var(--surface-2); }\n256\t.gallery .main img { width: 100%; height: 100%; object-fit: cover; cursor: zoom-in; }\n257\t.gallery .thumbs {\n258\t display: flex; gap: 6px; padding: 8px; overflow-x: auto; border-top: 2px solid var(--ink);\n259\t background: var(--surface-2);\n260\t}\n261\t.gallery .thumbs img {\n262\t width: 84px; height: 60px; object-fit: cover; border-radius: 4px;\n263\t cursor: pointer; border: 2px solid transparent; flex: 0 0 auto;\n264\t}\n265\t.gallery .thumbs img.sel { border-color: var(--accent); }\n266\t\n267\t.panel {\n268\t background: var(--surface); border: 2px solid var(--ink);\n269\t border-radius: var(--r-card); box-shadow: var(--shadow-off-soft);\n270\t padding: 18px 20px; margin-bottom: 18px;\n271\t}\n272\t.panel h3 { font-size: 15px; margin-bottom: 12px; display: flex; align-items: center; gap: 8px; }\n273\t.spec-table { width: 100%; border-collapse: collapse; font-size: 14px; }\n274\t.spec-table td { padding: 7px 0; border-bottom: 1px dashed var(--line); }\n275\t.spec-table td:first-child { color: var(--ink-3); font-family: var(--font-mono); font-size: 12px; text-transform: uppercase; letter-spacing: 0.06em; }\n276\t.spec-table td:last-child { text-align: right; font-weight: 600; }\n277\t.spec-table tr:last-child td { border-bottom: none; }\n278\t\n279\t.cta-source {\n280\t display: block; text-align: center; font-family: var(--font-display);\n281\t font-weight: 700; font-size: 16px; background: var(--accent); color: var(--on-accent);\n282\t border: 2px solid var(--ink); border-radius: var(--r-ctl);\n283\t padding: 13px 18px; margin-top: 4px;\n284\t transition: transform 0.12s ease, box-shadow 0.12s ease;\n285\t}\n286\t.cta-source:hover { transform: translate(-2px, -2px); box-shadow: 4px 4px 0 var(--ink); }\n287\t.cta-note { font-size: 11.5px; color: var(--ink-3); text-align: center; margin-top: 8px; font-family: var(--font-mono); }\n288\t\n289\t.desc { white-space: pre-line; color: var(--ink-2); font-size: 14.5px; }\n290\t.feat-list {\n291\t display: flex; flex-wrap: wrap; gap: 6px; max-height: 340px; overflow-y: auto;\n292\t}\n293\t.price-history { font-size: 13px; }\n294\t.price-history .row { display: flex; justify-content: space-between; padding: 6px 0; border-bottom: 1px dashed var(--line); }\n295\t.price-history .down { color: var(--good); font-weight: 700; }\n296\t.price-history .up { color: var(--danger); font-weight: 700; }\n297\t\n298\t/* ================= Sections / pages annexes ================= */\n299\t.page { padding: 40px 0 70px; }\n300\t.page h1 { font-size: clamp(26px, 4vw, 40px); margin-bottom: 8px; }\n301\t.page .lead { color: var(--ink-2); max-width: 640px; margin-bottom: 28px; }\n302\t\n303\t.src-grid { display: grid; gap: 14px; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); }\n304\t.src-card {\n305\t background: var(--surface); border: 2px solid var(--ink); border-radius: var(--r-card);\n306\t padding: 16px 18px; display: flex; flex-direction: column; gap: 6px;\n307\t transition: transform 0.14s ease, box-shadow 0.14s ease; box-shadow: var(--shadow-flat);\n308\t}\n309\t.src-card:hover { transform: translate(-2px, -2px); box-shadow: var(--shadow-off); }\n310\t.src-card h3 { font-size: 16px; }\n311\t.src-card .meta { font-family: var(--font-mono); font-size: 11px; color: var(--ink-3); }\n312\t.src-card .n { font-family: var(--font-display); font-weight: 700; font-size: 22px; color: var(--accent-deep); }\n313\t\n314\t.stat-grid { display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); margin-bottom: 30px; }\n315\t.stat-tile {\n316\t background: var(--surface); border: 2px solid var(--ink); border-radius: var(--r-card);\n317\t padding: 18px; box-shadow: var(--shadow-off-soft);\n318\t}\n319\t.stat-tile b { display: block; font-family: var(--font-display); font-size: 30px; letter-spacing: -0.02em; }\n320\t.stat-tile span { font-family: var(--font-mono); font-size: 11px; text-transform: uppercase; letter-spacing: 0.1em; color: var(--ink-3); }\n321\t\n322\t.bar-row { display: flex; align-items: center; gap: 10px; margin: 7px 0; font-size: 13.5px; }\n323\t.bar-row .lbl { width: 170px; flex: 0 0 auto; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n324\t.bar-row .bar { height: 16px; background: var(--accent); border: 1.5px solid var(--ink); border-radius: 3px; min-width: 2px; }\n325\t.bar-row .val { font-family: var(--font-mono); font-size: 11.5px; color: var(--ink-2); }\n326\t\n327\t/* ================= Graphiques (Charts.tsx) ================= */\n328\t.stats-head { display: flex; align-items: flex-end; gap: 20px; flex-wrap: wrap; }\n329\t.pdf-btn { margin-left: auto; background: var(--accent); border-color: var(--ink); font-size: 15px; }\n330\t.pdf-btn:hover { box-shadow: 4px 4px 0 var(--ink); }\n331\t.stat-tile.hero-tile b { color: var(--accent-deep); }\n332\t\n333\t.chart-wrap { position: relative; }\n334\t.chart { width: 100%; height: auto; display: block; }\n335\t.chart .mark { transition: opacity 0.12s ease; cursor: default; }\n336\t.chart .mark:hover { opacity: 0.75; }\n337\t.c-val { font-family: var(--font-mono); font-size: 11px; font-weight: 600; fill: var(--ink); }\n338\t.c-lbl { font-family: var(--font-mono); font-size: 10px; fill: var(--ink-3); }\n339\t.c-cat { font-size: 12px; font-weight: 600; fill: var(--ink-2); }\n340\t.donut-total { font-family: var(--font-display); font-size: 22px; font-weight: 700; fill: var(--ink); }\n341\t\n342\t.chart-tip {\n343\t position: absolute; transform: translate(-50%, -100%); pointer-events: none;\n344\t background: var(--ink); color: var(--paper); font-size: 12.5px; line-height: 1.35;\n345\t padding: 6px 10px; border-radius: 6px; white-space: nowrap; z-index: 5;\n346\t box-shadow: 0 4px 14px rgba(23,24,28,0.25);\n347\t}\n348\t.chart-tip b { color: var(--accent); }\n349\t\n350\t.donut-wrap { display: grid; grid-template-columns: 220px 1fr; gap: 14px; align-items: center; }\n351\t.donut-wrap .chart-data { grid-column: 1 / -1; }\n352\t@media (max-width: 560px) { .donut-wrap { grid-template-columns: 1fr; } }\n353\t.donut-legend { display: flex; flex-direction: column; gap: 6px; }\n354\t.dl-row { display: flex; align-items: center; gap: 8px; font-size: 13.5px; }\n355\t.dl-swatch { width: 13px; height: 13px; border-radius: 3px; border: 1px solid rgba(23,24,28,0.3); flex: 0 0 auto; }\n356\t.dl-name { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n357\t.dl-val { font-family: var(--font-mono); font-size: 12px; color: var(--ink-2); }\n358\t\n359\t.chart-data { margin-top: 10px; font-size: 12.5px; }\n360\t.chart-data summary {\n361\t cursor: pointer; font-family: var(--font-mono); font-size: 11px;\n362\t text-transform: uppercase; letter-spacing: 0.08em; color: var(--ink-3);\n363\t}\n364\t.chart-data table { width: 100%; border-collapse: collapse; margin-top: 8px; }\n365\t.chart-data th, .chart-data td {\n366\t text-align: left; padding: 4px 8px; border-bottom: 1px dashed var(--line);\n367\t}\n368\t.chart-data th { font-family: var(--font-mono); font-size: 10.5px; text-transform: uppercase; color: var(--ink-3); }\n369\t\n370\t/* ================= Cartes véhicules — raffinements ================= */\n371\t.vcard .photo img { transition: transform 0.35s ease; }\n372\t.vcard:hover .photo img { transform: scale(1.04); }\n373\t\n374\t/* ================= Adaptatif téléphone ================= */\n375\t@media (max-width: 640px) {\n376\t .hero { padding: 30px 0 4px; }\n377\t .hero p.sub { font-size: 15px; }\n378\t .hero-stats { gap: 18px; margin-top: 16px; }\n379\t .hstat b { font-size: 21px; }\n380\t\n381\t /* filtres : 2 colonnes compactes, recherche et actions pleine largeur */\n382\t .filters {\n383\t grid-template-columns: repeat(2, minmax(0, 1fr));\n384\t padding: 12px; gap: 8px;\n385\t box-shadow: 4px 4px 0 var(--ink);\n386\t }\n387\t .f-actions { grid-column: 1 / -1; }\n388\t .f-actions .btn { width: 100%; }\n389\t .f-field select, .f-field input { font-size: 16px; } /* évite le zoom iOS */\n390\t\n391\t .result-bar { gap: 8px; margin: 16px 0 12px; }\n392\t .result-bar h2 { font-size: 17px; }\n393\t .sort-box { margin-left: 0; width: 100%; }\n394\t .sort-box select { flex: 1; }\n395\t\n396\t .vgrid { gap: 14px; grid-template-columns: 1fr; }\n397\t .vcard:hover { transform: none; box-shadow: var(--shadow-flat); }\n398\t\n399\t /* fiche véhicule : entête et prix empilés */\n400\t .vdetail { padding: 20px 0 40px; }\n401\t .vd-head { flex-direction: column; gap: 8px; }\n402\t .vd-head h1 { font-size: 23px; }\n403\t .vd-price { margin-left: 0; text-align: left; }\n404\t .vd-price .p { font-size: 28px; }\n405\t .gallery .thumbs img { width: 68px; height: 50px; }\n406\t .panel { padding: 14px 14px; }\n407\t .spec-table td:last-child { word-break: break-all; } /* VIN longs */\n408\t .desc { font-size: 14px; }\n409\t .feat-list { max-height: 260px; }\n410\t\n411\t /* stats : bouton PDF pleine largeur, tuiles 2 colonnes */\n412\t .stats-head { flex-direction: column; align-items: stretch; }\n413\t .pdf-btn { margin-left: 0; text-align: center; }\n414\t .stat-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }\n415\t .stat-tile { padding: 13px; }\n416\t .stat-tile b { font-size: 22px; }\n417\t\n418\t /* graphiques : défilement horizontal plutôt que texte illisible */\n419\t .chart-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }\n420\t .chart.vbars { min-width: 540px; }\n421\t .chart.hbars { min-width: 460px; }\n422\t .donut-wrap { overflow-x: visible; }\n423\t\n424\t .src-grid { grid-template-columns: 1fr; }\n425\t .page { padding: 26px 0 50px; }\n426\t}\n427\t\n428\t@media (max-width: 400px) {\n429\t .brand { font-size: 22px; }\n430\t .nav a { padding: 7px 9px; font-size: 12.5px; }\n431\t .header-inner { gap: 8px; }\n432\t}\n433\t\n434\t.notice { text-align: center; padding: 90px 20px; }\n435\t.notice .big { font-size: 52px; margin-bottom: 12px; }\n436\t.notice p { color: var(--ink-2); }\n437\t\n438\t.skeleton {\n439\t background: linear-gradient(100deg, var(--surface-2) 40%, #fff 50%, var(--surface-2) 60%);\n440\t background-size: 200% 100%; animation: sk 1.4s infinite;\n441\t border-radius: var(--r-card); border: 2px solid var(--line);\n442\t}\n443\t@keyframes sk { from { background-position: 130% 0; } to { background-position: -30% 0; } }\n444\t\n445\t/* ================= Compte — connexion KA ID (en-tête) ================= */\n446\t.login-btn {\n447\t display: inline-flex; align-items: center; gap: 8px;\n448\t font-family: var(--font-display); font-weight: 600; font-size: 13.5px;\n449\t border: 2px solid var(--ink); border-radius: 999px;\n450\t background: var(--surface); color: var(--ink);\n451\t padding: 8px 15px; min-height: 44px; flex: none;\n452\t transition: transform 0.12s ease, box-shadow 0.12s ease;\n453\t}\n454\t.login-btn:hover { transform: translate(-2px, -2px); box-shadow: 4px 4px 0 var(--accent); }\n455\t.login-ka {\n456\t display: inline-flex; align-items: center; justify-content: center;\n457\t width: 18px; height: 16px; border-radius: 4px;\n458\t background: var(--ink); color: #d9f26b; /* lime KA ID — identité du groupe */\n459\t font: 700 9px/1 var(--font-display); letter-spacing: -0.02em;\n460\t transform: rotate(-2deg);\n461\t}\n462\t.account { position: relative; flex: none; }\n463\t.account-btn {\n464\t width: 44px; height: 44px; padding: 0; cursor: pointer;\n465\t border: 2px solid var(--ink); border-radius: 999px; overflow: hidden;\n466\t background: var(--surface); display: flex; align-items: center; justify-content: center;\n467\t transition: transform 0.12s ease, box-shadow 0.12s ease;\n468\t}\n469\t.account-btn:hover { transform: translate(-1px, -1px); box-shadow: 3px 3px 0 var(--accent); }\n470\t.account-btn img { width: 100%; height: 100%; object-fit: cover; }\n471\t.account-initial {\n472\t font-family: var(--font-display); font-weight: 700; font-size: 17px;\n473\t background: var(--accent); color: var(--on-accent); width: 100%; height: 100%;\n474\t display: flex; align-items: center; justify-content: center;\n475\t}\n476\t.account-backdrop { position: fixed; inset: 0; z-index: var(--z-overlay, 800); }\n477\t.account-menu {\n478\t position: absolute; right: 0; top: calc(100% + 10px); z-index: var(--z-modal, 900);\n479\t min-width: 250px; background: var(--surface);\n480\t border: 2px solid var(--ink); border-radius: var(--r-card);\n481\t box-shadow: 6px 6px 0 rgba(23, 24, 28, 0.16); overflow: hidden;\n482\t}\n483\t.account-id { display: flex; flex-direction: column; gap: 2px; padding: 12px 14px; border-bottom: 1.5px solid var(--line); }\n484\t.account-id b { font-size: 14px; }\n485\t.account-id > span { font-family: var(--font-mono); font-size: 11px; color: var(--ink-3); word-break: break-all; }\n486\t.account-kaid { font-family: var(--font-mono); font-size: 10.5px; color: var(--accent-deep) !important; letter-spacing: 0.08em; }\n487\t.account-note { font-family: var(--font-body) !important; font-size: 10.5px !important; color: var(--ink-3); margin-top: 4px; line-height: 1.4; }\n488\t.account-link {\n489\t display: block; width: 100%; text-align: left; padding: 11px 14px;\n490\t font-weight: 600; font-size: 13.5px; color: var(--ink);\n491\t border-bottom: 1.5px solid var(--line);\n492\t}\n493\t.account-link:hover { background: var(--accent-soft); }\n494\t.account-menu button {\n495\t width: 100%; text-align: left; padding: 11px 14px; border: 0; cursor: pointer;\n496\t background: transparent; font-weight: 600; font-size: 13.5px; color: var(--danger);\n497\t}\n498\t.account-menu button:hover { background: var(--accent-soft); color: var(--ink); }\n499\t@media (max-width: 640px) { .login-btn { padding: 7px 11px; font-size: 12.5px; } }\n500\t\n501\t/* ================= Profil — carte de membre Groupe KA =================\n502\t La carte garde l'identité du groupe : fond encre + lime (#d9f26b),\n503\t identique sur toutes les plateformes du Groupe KA. */\n504\t.profil { padding-top: 40px; padding-bottom: 60px; }\n505\t.profil h1 { font-size: clamp(30px, 5vw, 44px); margin: 10px 0 26px; }\n506\t.profil h1 em { font-style: normal; color: var(--accent-deep); }\n507\t.profil .lede { max-width: 520px; color: var(--ink-2); margin-bottom: 22px; }\n508\t.login-cta { display: inline-flex; align-items: center; }\n509\t\n510\t.pc {\n511\t --pc-ink: #141814; --pc-paper: #f5f3ee; --pc-lime: #d9f26b;\n512\t position: relative; max-width: 520px; overflow: hidden;\n513\t background: var(--pc-ink); color: var(--pc-paper);\n514\t border: 2px solid var(--pc-ink); border-radius: 16px;\n515\t padding: 24px 26px 0; box-shadow: 10px 10px 0 rgba(20, 24, 20, 0.18);\n516\t}\n517\t.pc-watermark {\n518\t position: absolute; right: -18px; top: -34px; pointer-events: none;\n519\t font-family: var(--font-display); font-weight: 700; font-size: 170px;\n520\t letter-spacing: -0.06em; color: rgba(217, 242, 107, 0.07);\n521\t transform: rotate(-8deg); line-height: 1;\n522\t}\n523\t.pc-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; flex-wrap: wrap; }\n524\t.pc-brand { font-family: var(--font-display); font-weight: 700; font-size: 24px; letter-spacing: -0.04em; }\n525\t.pc-ka { background: var(--pc-lime); color: var(--pc-ink); padding: 1px 6px 3px; border-radius: 5px; margin-left: 3px; display: inline-block; transform: rotate(-2deg); }\n526\t.pc-label { font-family: var(--font-mono); font-size: 10px; text-transform: uppercase; letter-spacing: 0.16em; color: rgba(245, 243, 238, 0.55); }\n527\t.pc-id-block { margin: 26px 0 22px; display: flex; flex-direction: column; gap: 4px; }\n528\t.pc-id-label { font-family: var(--font-mono); font-size: 10px; text-transform: uppercase; letter-spacing: 0.2em; color: rgba(217, 242, 107, 0.65); }\n529\t.pc-id {\n530\t font-family: var(--font-mono); font-weight: 700; color: var(--pc-lime);\n531\t font-size: clamp(22px, 6vw, 34px); letter-spacing: 0.14em;\n532\t text-shadow: 0 0 24px rgba(217, 242, 107, 0.35);\n533\t}\n534\t.pc-foot { display: flex; align-items: flex-end; justify-content: space-between; gap: 14px; padding-bottom: 18px; }\n535\t.pc-holder { display: flex; flex-direction: column; gap: 2px; min-width: 0; }\n536\t.pc-holder-name { font-weight: 600; font-size: 15px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n537\t.pc-holder-since { font-family: var(--font-mono); font-size: 10.5px; color: rgba(245, 243, 238, 0.5); letter-spacing: 0.06em; }\n538\t.pc-avatar { width: 52px; height: 52px; border-radius: 999px; border: 2px solid var(--pc-lime); flex: none; }\n539\t.pc-strip { display: flex; gap: 5px; margin: 0 -26px; padding: 9px 18px; background: rgba(217, 242, 107, 0.1); border-top: 1px solid rgba(217, 242, 107, 0.25); overflow: hidden; }\n540\t.pc-strip i { display: block; width: 3px; border-radius: 1px; background: var(--pc-lime); opacity: 0.7; }\n541\t.pc-strip i:nth-child(3n) { height: 14px; opacity: 0.35; }\n542\t.pc-strip i:nth-child(3n+1) { height: 9px; }\n543\t.pc-strip i:nth-child(3n+2) { height: 17px; opacity: 0.9; }\n544\t.pc-copy { margin-top: 16px; }\n545\t.pc-copy.ok { background: #d9f26b; border-color: var(--ink); color: var(--ink); }\n546\t\n547\t.profil-grid {\n548\t display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));\n549\t gap: 12px; margin-top: 30px; max-width: 760px;\n550\t}\n551\t.pg-item {\n552\t background: var(--surface); border: 2px solid var(--ink);\n553\t border-radius: var(--r-card); padding: 14px 16px;\n554\t display: flex; flex-direction: column; gap: 4px; box-shadow: var(--shadow-flat);\n555\t}\n556\t.pg-label { font-family: var(--font-mono); font-size: 10px; text-transform: uppercase; letter-spacing: 0.14em; color: var(--ink-3); }\n557\t.pg-value { font-weight: 600; font-size: 14.5px; word-break: break-word; }\n558\t.pg-value.mono { font-family: var(--font-mono); color: var(--accent-deep); }\n559\t\n560\t/* — badge statut Groupe KA sur la carte (chip lime, rotaté -1°) — */\n561\t.pc-role-badge {\n562\t align-self: flex-start; margin: 3px 0 1px;\n563\t background: var(--pc-lime); color: var(--pc-ink);\n564\t font-family: var(--font-mono); font-size: 10px; font-weight: 700;\n565\t text-transform: uppercase; letter-spacing: 0.12em;\n566\t padding: 2px 9px 3px; border-radius: 999px;\n567\t display: inline-block; transform: rotate(-1deg);\n568\t}\n569\t\n570\t/* — « Mon profil Groupe KA » (lu du hub groupe-ka.com, lecture seule) — */\n571\t.hub-profile {\n572\t margin-top: 30px; max-width: 760px;\n573\t background: var(--surface); border: 2px solid var(--ink);\n574\t border-radius: var(--r-card); padding: 20px 22px 18px;\n575\t box-shadow: var(--shadow-flat);\n576\t}\n577\t.hub-profile h3 { font-size: 18px; margin-bottom: 10px; }\n578\t.hub-bio { color: var(--ink-2); font-size: 14px; line-height: 1.55; max-width: 620px; margin-bottom: 12px; }\n579\t.hub-meta { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; }\n580\t.hub-chip {\n581\t font-family: var(--font-mono); font-size: 11.5px;\n582\t background: var(--surface-2); border: 1px solid var(--line);\n583\t padding: 4px 11px; border-radius: 999px; color: var(--ink-2);\n584\t text-decoration: none;\n585\t}\n586\ta.hub-chip:hover { border-color: var(--ink); color: var(--ink); }\n587\t.hub-hint { color: var(--ink-3); font-size: 12.5px; margin-top: 12px; }\n588\t\n589\t.profil-note { max-width: 640px; color: var(--ink-2); font-size: 13.5px; margin-top: 22px; }\n590\t.profil-note a { text-decoration: underline; text-underline-offset: 3px; }\n591\t.profil-actions { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 26px; }\n592\t\n593\t/* ================= Footer =================\n594\t Le footer est désormais le KaFooter commun (ka/KaFooter.tsx + .ka-footer\n595\t dans ka/tokens.css). Bordure accent au-dessus, signature Auto-Ka. */\n596\t.ka-footer { border-top: 3px solid var(--accent); }\n597\t\n598\t/* ================= Page /contact ================= */\n599\t.contact-grid {\n600\t display: grid; gap: 14px; margin: 22px 0 6px;\n601\t grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); max-width: 900px;\n602\t}\n603\t.contact-card {\n604\t background: var(--surface); border: 2px solid var(--ink); border-radius: var(--r-card);\n605\t padding: 16px 18px; display: flex; flex-direction: column; gap: 6px;\n606\t box-shadow: var(--shadow-flat);\n607\t transition: transform 0.14s ease, box-shadow 0.14s ease;\n608\t}\n609\t.contact-card:hover { transform: translate(-2px, -2px); box-shadow: var(--shadow-off); }\n610\t.contact-card a.mail {\n611\t font-family: var(--font-mono); font-weight: 700; font-size: 14px;\n612\t color: var(--accent-deep); word-break: break-all;\n613\t display: inline-flex; align-items: center; min-height: 44px;\n614\t}\n615\t.contact-card a.mail:hover { text-decoration: underline; text-underline-offset: 3px; }\n616\t.contact-card .role { font-size: 13px; color: var(--ink-2); }\n617\t.contact-note {\n618\t max-width: 720px; margin: 24px 0; padding: 14px 18px;\n619\t background: var(--accent-soft); border: 2px solid var(--ink);\n620\t border-left-width: 6px; border-radius: var(--r-card); font-size: 14px;\n621\t}\n622\t.contact-sites { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; max-width: 900px; }\n623\t.contact-sites a.spec-chip { text-decoration: none; min-height: 32px; display: inline-flex; align-items: center; }\n624\t.contact-sites a.spec-chip:hover { border-color: var(--accent); color: var(--ink); }\n625\t.contact-hub { margin-top: 26px; }\n626\t\n627\t/* --- blocs SEO (pages programmatiques rendues serveur + React) --------------- */\n628\t.breadcrumbs { font-size: 12px; color: var(--ink-3); margin: 14px 0 4px; }\n629\t.breadcrumbs a { text-decoration: underline; }\n630\t.seo-block { margin: 30px 0; }\n631\t.seo-block h2 { font-size: 17px; margin: 0 0 12px; }\n632\t.seo-links { display: flex; flex-wrap: wrap; gap: 8px; }\n633\t.seo-links a.spec-chip { text-decoration: none; }\n634\t.seo-links a.spec-chip:hover { border-color: var(--accent); }\n635\t.src-list { columns: 3; column-gap: 28px; padding-left: 18px; font-size: 13.5px; line-height: 1.9; }\n636\t@media (max-width: 800px) { .src-list { columns: 1; } }\n637\t\n638\t/* ==========================================================================\n639\t Menu déroulant mobile (hamburger standard KA) + socle mobile — 2026-08-19\n640\t La nav en bande scroll-x est remplacée sous 760 px par le hamburger.\n641\t ========================================================================== */\n642\t.menu-btn {\n643\t display: none; position: relative; z-index: 60;\n644\t width: 44px; height: 44px; margin-left: auto; flex: none;\n645\t border: 1.5px solid var(--ink); border-radius: var(--r-ctl);\n646\t background: var(--surface); cursor: pointer; padding: 0;\n647\t flex-direction: column; align-items: center; justify-content: center; gap: 5px;\n648\t box-shadow: 3px 3px 0 rgba(23, 24, 28, 0.15);\n649\t transition: box-shadow 0.15s ease, transform 0.15s ease;\n650\t}\n651\t.menu-btn:active { transform: translate(2px, 2px); box-shadow: 1px 1px 0 rgba(23, 24, 28, 0.15); }\n652\t.menu-btn span {\n653\t display: block; width: 18px; height: 2px; background: var(--ink);\n654\t border-radius: 2px; transition: transform 0.25s ease, opacity 0.2s ease;\n655\t}\n656\t.menu-btn.open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }\n657\t.menu-btn.open span:nth-child(2) { opacity: 0; }\n658\t.menu-btn.open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }\n659\t\n660\t.mobile-menu {\n661\t display: none; position: absolute; left: 0; right: 0; top: 100%;\n662\t background: var(--paper); border-bottom: 2px solid var(--ink);\n663\t box-shadow: 0 18px 30px rgba(23, 24, 28, 0.18);\n664\t padding: 8px 16px calc(16px + env(safe-area-inset-bottom));\n665\t max-height: 0; overflow: hidden; opacity: 0;\n666\t transition: max-height 0.3s ease, opacity 0.22s ease;\n667\t}\n668\t.mobile-menu.open { max-height: 480px; opacity: 1; overflow-y: auto; }\n669\t.mm-link {\n670\t display: flex; align-items: center; gap: 12px;\n671\t padding: 15px 10px; min-height: 52px;\n672\t font-family: var(--font-display); font-weight: 700; font-size: 19px;\n673\t letter-spacing: -0.02em; border-bottom: 1.5px dashed var(--line);\n674\t opacity: 0; transform: translateY(-8px);\n675\t transition: opacity 0.25s ease, transform 0.25s ease;\n676\t}\n677\t.mobile-menu.open .mm-link { opacity: 1; transform: translateY(0); }\n678\t.mm-link.active { color: var(--accent-deep); }\n679\t.mm-link.active .mm-arrow { opacity: 1; }\n680\t.mm-ico { width: 26px; text-align: center; font-size: 17px; }\n681\t.mm-arrow { margin-left: auto; opacity: 0.25; transition: opacity 0.15s ease; }\n682\t.mm-link:active { background: var(--accent-soft); border-radius: var(--r-ctl); }\n683\t.mm-badge { display: flex; padding: 12px 10px 0; }\n684\t.mm-foot {\n685\t padding: 12px 10px 4px; font-family: var(--font-mono);\n686\t font-size: 10.5px; color: var(--ink-3); letter-spacing: 0.04em;\n687\t}\n688\t/* Backdrop rendu en FRÈRE du header ; .menu-open remonte le header\n689\t au-dessus du backdrop pour que le panneau reste visible. */\n690\t.mm-backdrop {\n691\t position: fixed; inset: 0; z-index: var(--z-overlay, 800);\n692\t background: rgba(23, 24, 28, 0.35); backdrop-filter: blur(2px);\n693\t}\n694\t.header.menu-open { z-index: var(--z-modal, 900); }\n695\t@media (max-width: 760px) {\n696\t .menu-btn { display: flex; }\n697\t .nav { display: none; }\n698\t .mobile-menu { display: block; }\n699\t}\n700\t\n701\t/* Anti-zoom iOS généralisé : ≥16 px sur tous les champs et selects en\n702\t contexte tactile (couvre #f-sort et les 9 selects de la page d'accueil ;\n703\t renfort explicite du filet de ka/tokens.css). */\n704\t@media (hover: none) and (pointer: coarse) {\n705\t select,\n706\t input[type=\"text\"],\n707\t input[type=\"search\"],\n708\t input[type=\"number\"],\n709\t .f-field select, .f-field input, .sort-box select {\n710\t font-size: max(16px, 1em) !important;\n711\t }\n712\t}\n713\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n"}]},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"a1307dce-e1d7-4223-91e7-9e224e7d5072","timestamp":"2026-08-25T14:16:41.553Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"aa77f553c30839219","tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","description":"Running sqlite3 /Users/simon-pierreboucher/auto-ka/data/a…","usage":{"total_tokens":45415,"tool_uses":17,"duration_ms":15764},"last_tool_name":"Bash","uuid":"73b606ec-dff3-4ead-8c9d-f9c9595056be","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcHC4X56WRfrbZ9Fk7c","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_017h2QXACHq5p3LyAGBkCjtT","name":"Bash","input":{"command":"sqlite3 /Users/simon-pierreboucher/auto-ka/data/autoka.db \".tables\""},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":7,"cache_creation_input_tokens":6767,"cache_read_input_tokens":38584,"cache_creation":{"ephemeral_5m_input_tokens":6767,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"cf29950f-d199-4e23-a484-c6691c6c9aa1"}} {"type":"permission_auto","tool":"Bash","key":"tout autoriser","input":{"command":"sqlite3 /Users/simon-pierreboucher/auto-ka/data/autoka.db \".tables\""}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_017h2QXACHq5p3LyAGBkCjtT","type":"tool_result","content":"dealers price_log sync_log vehicles \ndetail_cache recalls users","is_error":false}]},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"ec33e11f-70f1-4d25-acd0-dc52cf4e570d","timestamp":"2026-08-25T14:16:42.011Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"aa77f553c30839219","tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","description":"Running sqlite3 /Users/simon-pierreboucher/auto-ka/data/a…","usage":{"total_tokens":45417,"tool_uses":18,"duration_ms":16085},"last_tool_name":"Bash","uuid":"9529a020-e4c1-4a9f-b1dd-e54a427e38fb","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcHC4X56WRfrbZ9Fk7c","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_0181Tp3E2rUB1wQUejYNMZLX","name":"Bash","input":{"command":"sqlite3 /Users/simon-pierreboucher/auto-ka/data/autoka.db \"SELECT source, COUNT(*) as count FROM vehicles WHERE active=1 GROUP BY source ORDER BY count DESC;\""},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":7,"cache_creation_input_tokens":6767,"cache_read_input_tokens":38584,"cache_creation":{"ephemeral_5m_input_tokens":6767,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"c3d04f44-f4eb-4d28-912c-45575d8ca983"}} {"type":"permission_auto","tool":"Bash","key":"tout autoriser","input":{"command":"sqlite3 /Users/simon-pierreboucher/auto-ka/data/autoka.db \"SELECT source, COUNT(*) as count FROM vehicles WHERE active=1 GROUP BY source ORDER BY count DESC;\""}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_0181Tp3E2rUB1wQUejYNMZLX","type":"tool_result","content":"otogo|23922\nautousagee|11865\nkijiji|3081\nautotrader|2086\nhgregoire|1709\nautomobileendirect|1626\noccasionbeaucage|1245\nalbioccasion|1103\nleprixdugros|1058\ncargurus|631\ngervaisauto|541\nforceoccasion|509\nmegacentredeliquidation|454\nstefoychrysler|411\nmontjolichrysler|411\nstjeromeautodepot|299\nmotosillimitees|297\nbaiecomeautoyota|260\ndesmeules|259\ntouteslesmarques|254\npoirieroccasion|234\nautosoccasionld|169\ndubechrysler|163\nautodurocher|159\nautoflash|155\nstjeromemitsubishi|152\nautosthubert|132\nhyundaistjerome|117\njeandumashondabc|114\njeandumasfordbc|114\njeandumas|114\nvolvosaintleonard|111\nbaiecomeaugm|108\nautodesjardins|106\ncomplexeautoplus|102\nseptilesgm|101\nclasseauto|101\ntoyotagatineau|100\nspinelli|100\nmathiassports|100\nhullhyundai|100\ngrandportage|99\ncharlesbourgtoyota|97\ndrummondvillevw|95\nlamihonda|93\nhyundaidrummondville|93\nabitibiautocredit|93\nsherbrookeautooccasion|85\nolivieroccasionseptiles|85\ngroupemotion|85\nlussierchevrolet|83\nautocreditplus|81\nducloslongueuil|78\nvwsherbrooke|77\njoliettemitsubishi|77\noccasionvilledequebec|75\nlevisautos|75\nkiabeauport|74\nautoquebeclevis|73\njlkauto|72\nvilleneuveford|71\nnicoloccasion|69\nequipeformule|68\nbernieresauto|68\ndupontdupontford|66\ntroisriviereshonda|65\nhyundailanaudiere|62\nfleuryautogroupe|62\nchomedeytoyota|62\nhondanewrichmond|61\nlallierhondahull|60\nsherbrooketoyota|59\nleoautomobile|57\nkiajoliette|57\nclubautozone|56\ncharlevoixtoyota|56\nmazdadesherbrooke|55\ndupontautomobile|55\nautobsl|54\ngroupecontant|53\ntrtoyota|52\nsmsport|52\nokaze|52\nnissandrummondville|52\ndrummondvilleford|52\nautosevasion|52\nsummumauto|51\ngroupepaquin|49\nlongueuilhonda|48\nautoxtreme|48\nkiamatane|44\nnissanvictoriaville|43\nlevistoyota|42\nfichaultkia|39\nsubaruvictoriaville|38\nstjeromeharleydavidson|38\ndenisauto|38\nautoquebectm|37\nvaudreuilvw|36\nhondacharlevoix|36\nfordthetford|36\ntoyotabdc|35\nstgnissan|34\nmarquisautomobiles|34\nolivierchryslerbc|33\ngaspesiehyundai|33\ndynastiehyundai|32\nalmahonda|31\nstgeorgesgm|30\noccasioncharlevoix|30\ngabrielharleydavidson|29\nautoglobalmtl|29\nhyundaibeauce|27\ndastousauto|27\nberniercrepeau|25\njrautotr|24\ngroupeautomobile|24\nolivierhyundaibc|21\nkiadrummondville|21\nkiagranby|20\ngirardautos|20\nhyundailongueuil|19\nrivesudchrysler|18\nhyundaicharlevoix|18\ngroupeimperium|18\ngranbytoyota|18\nmferlandauto|17\nglsport|17\nmitsubishidrummondville|16\nmotoducharme|15\nmecamoto|15\nautomobilesyannicklaberge|15\nmotosthibaulttr|14\nlamontagneauto|13\nhondacharlesbourg|13\ngaspetoyota|13\nseptileshonda|11\nrmmotosport|9\nexcelmoto|8\nlecentreautoquebec|6\nautovilleneuve|5\nautosag|5\nototroisrivieres|4","is_error":false}]},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"53228657-639b-40cb-81ea-174d4eae6b1e","timestamp":"2026-08-25T14:16:42.362Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"aa77f553c30839219","tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","description":"Running sqlite3 /Users/simon-pierreboucher/auto-ka/data/a…","usage":{"total_tokens":45419,"tool_uses":19,"duration_ms":16880},"last_tool_name":"Bash","uuid":"44feac83-75e2-4c59-837e-5a4440f575a4","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcHC4X56WRfrbZ9Fk7c","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01LKzJBw8LTpM5NuB9FJLccN","name":"Bash","input":{"command":"sqlite3 /Users/simon-pierreboucher/auto-ka/data/autoka.db \"SELECT COUNT(*) total, COUNT(CASE WHEN vin IS NULL THEN 1 END) null_vin, COUNT(CASE WHEN description IS NULL THEN 1 END) null_desc, COUNT(CASE WHEN images IS NOT NULL AND json_array_length(images) > 0 THEN 1 END) with_images FROM vehicles WHERE active=1;\""},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":7,"cache_creation_input_tokens":6767,"cache_read_input_tokens":38584,"cache_creation":{"ephemeral_5m_input_tokens":6767,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"4a28ce5e-bfb6-4889-99f3-af85d840c9c9"}} {"type":"permission_auto","tool":"Bash","key":"tout autoriser","input":{"command":"sqlite3 /Users/simon-pierreboucher/auto-ka/data/autoka.db \"SELECT COUNT(*) total, COUNT(CASE WHEN vin IS NULL THEN 1 END) null_vin, COUNT(CASE WHEN description IS NULL THEN 1 END) null_desc, COUNT(CASE WHEN images IS NOT NULL AND json_array_length(images) > 0 THEN 1 END) with_images FROM vehicles WHERE active=1;\""}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01LKzJBw8LTpM5NuB9FJLccN","type":"tool_result","content":"59260|0|0|56647","is_error":false}]},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"576222a3-1aaf-44b9-9369-f629cb783bd8","timestamp":"2026-08-25T14:16:43.190Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"a6781332982e4f0b5","tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","description":"Reading frontend/src/api.ts","usage":{"total_tokens":34201,"tool_uses":8,"duration_ms":8244},"last_tool_name":"Read","uuid":"275bde11-d289-4a5d-ba05-a2ca2c07f4f7","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcHHyDWTdoa9nixwFJN","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_018VuzcL7rjg7LFF8meSsrDS","name":"Read","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/frontend/src/api.ts"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":7,"cache_creation_input_tokens":22538,"cache_read_input_tokens":11596,"cache_creation":{"ephemeral_5m_input_tokens":22538,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"2d45352f-5fc3-4665-b6b8-4231ebed0831"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_018VuzcL7rjg7LFF8meSsrDS","type":"tool_result","content":"1\t// -----------------------------------------------------------------------------\n2\t// Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n3\t// Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n4\t// api.ts : client typé de l'API FastAPI\n5\t// -----------------------------------------------------------------------------\n6\t\n7\texport interface Vehicle {\n8\t uid: string;\n9\t kind: string;\n10\t source: string;\n11\t external_id: string;\n12\t url: string;\n13\t title: string;\n14\t make: string;\n15\t model: string;\n16\t trim: string;\n17\t year: number | null;\n18\t price: number | null;\n19\t price_label: string;\n20\t mileage_km: number | null;\n21\t mileage_label: string;\n22\t transmission: string;\n23\t fuel: string;\n24\t drivetrain: string;\n25\t body_type: string;\n26\t exterior_color: string;\n27\t interior_color: string;\n28\t engine: string;\n29\t doors: number | null;\n30\t seats: number | null;\n31\t vin: string;\n32\t stock_number: string;\n33\t dealer_name: string;\n34\t city: string;\n35\t region: string;\n36\t description: string;\n37\t features: string[];\n38\t details: Record;\n39\t images: string[];\n40\t carfax_url: string;\n41\t first_seen: number;\n42\t updated_at: number;\n43\t active: number;\n44\t}\n45\t\n46\texport interface VehicleDetail extends Vehicle {\n47\t price_history: { ts: number; price: number | null }[];\n48\t similar: Vehicle[];\n49\t}\n50\t\n51\texport interface Facets {\n52\t makes: { make: string; n: number }[];\n53\t models: { model: string; n: number }[];\n54\t body_types: string[];\n55\t fuels: string[];\n56\t regions: { region: string; n: number }[];\n57\t sources: { source: string; dealer_name: string; n: number }[];\n58\t years: { y_min: number | null; y_max: number | null }[];\n59\t}\n60\t\n61\texport interface Source {\n62\t id: string;\n63\t name: string;\n64\t url: string;\n65\t listing_url?: string;\n66\t city?: string;\n67\t region?: string;\n68\t platform?: string;\n69\t status?: string;\n70\t active_listings: number;\n71\t last_sync: number | null;\n72\t}\n73\t\n74\texport interface Stats {\n75\t total: number;\n76\t sources: number;\n77\t regions: number;\n78\t avg_price: number | null;\n79\t avg_km: number | null;\n80\t avg_year: number | null;\n81\t by_region: { region: string; n: number; avg_price: number | null }[];\n82\t by_make: { make: string; n: number; avg_price: number | null }[];\n83\t by_body: { body_type: string; n: number }[];\n84\t price_drops: {\n85\t uid: string; title: string; year: number | null; price: number;\n86\t prev_price: number; images: string[]; dealer_name: string; city: string;\n87\t }[];\n88\t recent_syncs: {\n89\t source: string; ts: number; found: number; added: number;\n90\t updated: number; removed: number; ok: number; message: string;\n91\t }[];\n92\t}\n93\t\n94\texport interface VehicleQuery {\n95\t kind?: string;\n96\t make?: string;\n97\t model?: string;\n98\t body_type?: string;\n99\t fuel?: string;\n100\t transmission?: string;\n101\t drivetrain?: string;\n102\t region?: string;\n103\t city?: string;\n104\t source?: string;\n105\t year_min?: number;\n106\t year_max?: number;\n107\t price_min?: number;\n108\t price_max?: number;\n109\t km_max?: number;\n110\t q?: string;\n111\t sort?: string;\n112\t limit?: number;\n113\t offset?: number;\n114\t}\n115\t\n116\t/** Slug URL — DOIT rester synchrone avec slugify() de autoka/seo.py. */\n117\texport function slugify(text: string, maxLen = 70): string {\n118\t const t = (text || \"\")\n119\t .normalize(\"NFKD\")\n120\t .replace(/[\\u0300-\\u036f]/g, \"\")\n121\t .replace(/[^a-zA-Z0-9]+/g, \"-\")\n122\t .replace(/^-+|-+$/g, \"\")\n123\t .toLowerCase()\n124\t .slice(0, maxLen)\n125\t .replace(/-+$/g, \"\");\n126\t return t || \"x\";\n127\t}\n128\t\n129\t/** URL canonique d'une fiche : /vehicule/{uid}/{slug lisible}. */\n130\texport function vehiclePath(v: Vehicle): string {\n131\t const base =\n132\t [v.year, v.make, v.model].filter(Boolean).join(\" \") ||\n133\t v.title || \"vehicule\";\n134\t return `/vehicule/${encodeURIComponent(v.uid)}/${slugify(base)}`;\n135\t}\n136\t\n137\tasync function get(path: string): Promise {\n138\t const res = await fetch(path);\n139\t if (!res.ok) throw new Error(`API ${res.status}`);\n140\t return res.json();\n141\t}\n142\t\n143\texport function fetchVehicles(query: VehicleQuery) {\n144\t const params = new URLSearchParams();\n145\t for (const [k, v] of Object.entries(query)) {\n146\t if (v !== undefined && v !== null && v !== \"\") params.set(k, String(v));\n147\t }\n148\t return get<{ total: number; count: number; vehicles: Vehicle[] }>(\n149\t `/api/vehicles?${params.toString()}`\n150\t );\n151\t}\n152\t\n153\texport function fetchVehicle(uid: string) {\n154\t return get(`/api/vehicles/${encodeURIComponent(uid)}`);\n155\t}\n156\t\n157\texport function fetchFacets(make?: string, kind?: string) {\n158\t const params = new URLSearchParams();\n159\t if (make) params.set(\"make\", make);\n160\t if (kind) params.set(\"kind\", kind);\n161\t const qs = params.toString();\n162\t return get(`/api/facets${qs ? `?${qs}` : \"\"}`);\n163\t}\n164\t\n165\texport function fetchSources() {\n166\t return get<{ sources: Source[] }>(\"/api/sources\");\n167\t}\n168\t\n169\texport function fetchStats() {\n170\t return get(\"/api/stats\");\n171\t}\n172\t\n173\t// -- noms d'affichage des sources (peuplés depuis /api/sources) ---------------\n174\tconst names: Record = {};\n175\t\n176\texport function registerSourceNames(sources: Source[]) {\n177\t for (const s of sources) names[s.id] = s.name;\n178\t}\n179\t\n180\texport function sourceName(id: string): string {\n181\t return names[id] ?? id;\n182\t}\n183\t\n184\t// -- compte (SSO KA ID — Groupe KA) --------------------------------------------\n185\texport interface Socials {\n186\t instagram?: string;\n187\t facebook?: string;\n188\t x?: string;\n189\t linkedin?: string;\n190\t tiktok?: string;\n191\t youtube?: string;\n192\t}\n193\t\n194\texport interface Me {\n195\t ka_id: string;\n196\t email: string;\n197\t name: string;\n198\t picture: string;\n199\t provider: string;\n200\t created: number | null;\n201\t // — profil Groupe KA (source de vérité : le hub groupe-ka.com) —\n202\t bio?: string;\n203\t city?: string;\n204\t job_title?: string;\n205\t company?: string;\n206\t age?: number | null;\n207\t website?: string;\n208\t socials?: Socials;\n209\t role_label?: string;\n210\t public_url?: string;\n211\t profile_source?: \"groupe-ka\" | \"local\";\n212\t}\n213\t\n214\texport async function fetchMe(): Promise<{ user: Me | null; enabled: boolean }> {\n215\t try {\n216\t const res = await fetch(\"/api/auth/me\");\n217\t if (!res.ok) return { user: null, enabled: false };\n218\t return res.json();\n219\t } catch {\n220\t return { user: null, enabled: false };\n221\t }\n222\t}\n223\t\n224\texport async function logout(): Promise {\n225\t await fetch(\"/api/auth/logout\", { method: \"POST\" });\n226\t}\n227\t\n228\t// -- favoris « Mon univers Ka » (magasin central : le hub groupe-ka.com) -------\n229\texport interface FavItem {\n230\t item_id: string;\n231\t title: string;\n232\t subtitle?: string;\n233\t price_label?: string;\n234\t image_url?: string;\n235\t url?: string;\n236\t app?: string;\n237\t created_at?: string;\n238\t}\n239\t\n240\texport function fetchFavorites() {\n241\t return get<{ ids: string[]; items: FavItem[] }>(\"/api/favorites\");\n242\t}\n243\t\n244\texport async function toggleFavorite(on: boolean, item: FavItem): Promise {\n245\t const res = await fetch(\"/api/favorites/toggle\", {\n246\t method: \"POST\",\n247\t headers: { \"Content-Type\": \"application/json\" },\n248\t body: JSON.stringify({ on, item }),\n249\t });\n250\t if (!res.ok) throw new Error(`API ${res.status}`);\n251\t}\n252\t\n253\t/** Transforme un véhicule en item de favori pour le hub Groupe KA. */\n254\texport function vehicleFavItem(v: Vehicle): FavItem {\n255\t const title =\n256\t [v.year, v.make, v.model].filter(Boolean).join(\" \") || v.title || \"Véhicule\";\n257\t const where =\n258\t [v.dealer_name || sourceName(v.source), v.region || v.city]\n259\t .filter(Boolean).join(\" · \") ||\n260\t (v.mileage_km != null ? fmtKm(v.mileage_km) : \"\");\n261\t return {\n262\t item_id: v.uid,\n263\t title,\n264\t subtitle: where,\n265\t price_label: fmtPrice(v.price),\n266\t image_url: v.images && v.images.length > 0 ? v.images[0] : \"\",\n267\t url: `https://www.auto-ka.com${vehiclePath(v)}`,\n268\t };\n269\t}\n270\t\n271\t// -- formatteurs ---------------------------------------------------------------\n272\texport const fmtPrice = (p: number | null | undefined) =>\n273\t p == null ? \"Prix sur demande\" : `${Math.round(p).toLocaleString(\"fr-CA\")} $`;\n274\t\n275\texport const fmtKm = (km: number | null | undefined) =>\n276\t km == null ? \"— km\" : `${Math.round(km).toLocaleString(\"fr-CA\")} km`;\n277\t\n278\texport const fmtDate = (ts: number | null | undefined) =>\n279\t ts == null\n280\t ? \"—\"\n281\t : new Date(ts * 1000).toLocaleDateString(\"fr-CA\", {\n282\t day: \"numeric\",\n283\t month: \"short\",\n284\t year: \"numeric\",\n285\t });\n286\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n"}]},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"a52ed344-0adc-43cd-9d32-680764eb644a","timestamp":"2026-08-25T14:16:43.632Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"a6781332982e4f0b5","tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","description":"Reading frontend/src/components/Charts.tsx","usage":{"total_tokens":34204,"tool_uses":9,"duration_ms":8621},"last_tool_name":"Read","uuid":"5381e1f4-d5df-4d80-bb1f-c72f7542566b","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcHHyDWTdoa9nixwFJN","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_017okagFoHy4KJQGiBKc2Y4c","name":"Read","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/frontend/src/components/Charts.tsx","limit":100},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":7,"cache_creation_input_tokens":22538,"cache_read_input_tokens":11596,"cache_creation":{"ephemeral_5m_input_tokens":22538,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"895e84aa-4851-4e3a-b5ff-3b2ffa009b4b"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_017okagFoHy4KJQGiBKc2Y4c","type":"tool_result","content":"1\t// -----------------------------------------------------------------------------\n2\t// Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n3\t// Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n4\t// Charts.tsx : graphiques SVG maison — histogramme, barres horizontales, donut.\n5\t// Marques fines, bouts arrondis, étiquettes directes sélectives, infobulle\n6\t// au survol, vue tableau repliable (accessibilité). Palette catégorielle\n7\t// validée (contraste + daltonisme) : #d94f1e #1f6fb5 #1c7a4d #b58500\n8\t// #7d4fc9 #a05a2c.\n9\t// -----------------------------------------------------------------------------\n10\timport { ReactNode, useState } from \"react\";\n11\t\n12\texport const CAT_COLORS = [\"#d94f1e\", \"#1f6fb5\", \"#1c7a4d\", \"#b58500\", \"#7d4fc9\", \"#a05a2c\"];\n13\t\n14\texport interface Datum {\n15\t label: string;\n16\t n: number;\n17\t extra?: string;\n18\t}\n19\t\n20\tconst fmt = (n: number) => Math.round(n).toLocaleString(\"fr-CA\");\n21\t\n22\tfunction DataTable({ rows, valueLabel }: { rows: Datum[]; valueLabel: string }) {\n23\t return (\n24\t
\n25\t Voir les données\n26\t \n27\t \n28\t \n29\t \n30\t \n31\t {rows.map((r) => (\n32\t \n33\t \n34\t \n35\t \n36\t ))}\n37\t \n38\t
Catégorie{valueLabel}
{r.label}{fmt(r.n)}{r.extra ? ` · ${r.extra}` : \"\"}
\n39\t
\n40\t );\n41\t}\n42\t\n43\tfunction Tip({ x, y, children }: { x: number; y: number; children: ReactNode }) {\n44\t return (\n45\t
\n46\t {children}\n47\t
\n48\t );\n49\t}\n50\t\n51\t/** Histogramme vertical — magnitude d'une distribution, une seule teinte. */\n52\texport function VBars({ data, color = \"#d94f1e\", valueLabel = \"véhicules\", height = 190 }:\n53\t { data: Datum[]; color?: string; valueLabel?: string; height?: number }) {\n54\t const [tip, setTip] = useState<{ x: number; y: number; d: Datum } | null>(null);\n55\t if (!data.length) return null;\n56\t const max = Math.max(...data.map((d) => d.n), 1);\n57\t const W = 720, PAD = 6, LBL = 28;\n58\t const bw = (W - PAD * (data.length - 1)) / data.length;\n59\t const plotH = height - LBL - 18;\n60\t return (\n61\t
setTip(null)}>\n62\t \n64\t {data.map((d, i) => {\n65\t const h = Math.max(3, (d.n / max) * plotH);\n66\t const x = i * (bw + PAD);\n67\t const y = 18 + (plotH - h);\n68\t const show = d.n === max || i === 0 || i === data.length - 1;\n69\t return (\n70\t \n71\t {\n75\t const r = (e.currentTarget.closest(\".chart-wrap\") as HTMLElement).getBoundingClientRect();\n76\t setTip({ x: e.clientX - r.left, y: e.clientY - r.top - 10, d });\n77\t }}\n78\t />\n79\t {show && (\n80\t \n81\t {fmt(d.n)}\n82\t \n83\t )}\n84\t \n85\t {d.label}\n86\t \n87\t \n88\t );\n89\t })}\n90\t \n91\t {tip && {tip.d.label} — {fmt(tip.d.n)} {valueLabel}{tip.d.extra ? ` · ${tip.d.extra}` : \"\"}}\n92\t \n93\t
\n94\t );\n95\t}\n96\t\n97\t/** Barres horizontales — classement d'une même mesure, une seule teinte. */\n98\texport function HBars({ data, color = \"#d94f1e\", valueLabel = \"véhicules\" }:\n99\t { data: Datum[]; color?: string; valueLabel?: string }) {\n100\t const [tip, setTip] = useState<{ x: number; y: number; d: Datum } | null>(null);\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n"}]},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"e258ea0a-6777-49be-831a-440cb2dc855d","timestamp":"2026-08-25T14:16:44.015Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"a6781332982e4f0b5","tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","description":"Reading frontend/src/ka/tokens.css","usage":{"total_tokens":34207,"tool_uses":10,"duration_ms":8881},"last_tool_name":"Read","uuid":"78595100-0769-4834-82b3-665bfcce778d","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcHHyDWTdoa9nixwFJN","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01ABJrdiSibLfccUNRYDex6b","name":"Read","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/frontend/src/ka/tokens.css","limit":150},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":7,"cache_creation_input_tokens":22538,"cache_read_input_tokens":11596,"cache_creation":{"ephemeral_5m_input_tokens":22538,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"a1215f4c-acf5-4cff-afc6-f342052c5554"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01ABJrdiSibLfccUNRYDex6b","type":"tool_result","content":"1\t/* -----------------------------------------------------------------------------\n2\t Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n3\t Fichier : ka-ui/tokens.css — SOURCE CANONIQUE (repo ka-ui sur spbgit)\n4\t Desc. : Design system commun GROUPE KA « éditorial sharp » — tokens + socle\n5\t de composants partagés par les 12 plateformes. Chaque site importe ce\n6\t fichier PUIS surcharge uniquement son accent (voir accents.css).\n7\t\n8\t · Typo : display Space Grotesk / texte Inter / micro-étiquettes JetBrains Mono\n9\t · Palette: papier #f5f3ee · encre #141814 · vert profond #1c5c41 + ACCENT du site\n10\t · Signature : bordures encre 1,5–2 px + ombres décalées dures, grain de film,\n11\t surlignés d'accent inclinés (néo-brutalisme raffiné)\n12\t · Breakpoints communs : 360 / 768 / 1024 / 1440 px (mobile-first)\n13\t · Zones tactiles ≥ 44×44 px, safe-areas iOS, typographie fluide (clamp)\n14\t----------------------------------------------------------------------------- */\n15\t\n16\t:root {\n17\t /* ---- Palette fixe Groupe KA (identique sur les 12 sites) ---- */\n18\t --paper: #f5f3ee;\n19\t --surface: #ffffff;\n20\t --surface-2: #faf9f5;\n21\t --ink: #141814;\n22\t --ink-2: #4d5551;\n23\t --ink-3: #8b928c;\n24\t --line: rgba(20, 24, 20, 0.14);\n25\t --line-strong: rgba(20, 24, 20, 0.85);\n26\t --green: #1c5c41;\n27\t --green-deep: #123f2e;\n28\t --amber: #e8a33d;\n29\t --amber-soft: #fdf3e2;\n30\t --danger: #b3423a;\n31\t --danger-soft: #fbe9e7;\n32\t\n33\t /* ---- ACCENT du site — SEULES variables surchargées par marque ---- */\n34\t --accent: #d9f26b; /* défaut : lime Groupe KA */\n35\t --accent-soft: #f0f9d2;\n36\t --accent-deep: #123f2e;\n37\t --on-accent: var(--ink); /* couleur du texte posé SUR l'accent */\n38\t\n39\t /* alias rétro-compatibles (les satellites historiques utilisent --lime) */\n40\t --lime: var(--accent);\n41\t --lime-soft: var(--accent-soft);\n42\t\n43\t /* ---- Géométrie sharp ---- */\n44\t --r-card: 10px;\n45\t --r-ctl: 6px;\n46\t --r-pill: 999px;\n47\t\n48\t /* ---- Ombres décalées — la signature du groupe ---- */\n49\t --shadow-flat: 0 1px 2px rgba(20, 24, 20, 0.05);\n50\t --shadow-off: 6px 6px 0 var(--ink);\n51\t --shadow-off-soft: 8px 8px 0 rgba(20, 24, 20, 0.08);\n52\t --shadow-off-mid: 4px 4px 0 rgba(20, 24, 20, 0.18);\n53\t\n54\t /* ---- Typographie ---- */\n55\t --font-display: \"Space Grotesk\", system-ui, sans-serif;\n56\t --font-body: \"Inter\", system-ui, sans-serif;\n57\t --font-mono: \"JetBrains Mono\", ui-monospace, monospace;\n58\t\n59\t /* Échelle fluide (mobile-first, clamp) */\n60\t --fs-h1: clamp(30px, 3.2vw + 18px, 54px);\n61\t --fs-h2: clamp(23px, 1.8vw + 14px, 34px);\n62\t --fs-h3: clamp(17px, 0.9vw + 12px, 22px);\n63\t --fs-body: 15px;\n64\t --fs-small: 13px;\n65\t\n66\t /* Espacements */\n67\t --sp-1: 4px; --sp-2: 8px; --sp-3: 12px; --sp-4: 16px;\n68\t --sp-5: 24px; --sp-6: 32px; --sp-7: 48px; --sp-8: 64px;\n69\t\n70\t /* Cible tactile minimale */\n71\t --touch: 44px;\n72\t\n73\t /* ---- Échelle z-index COMMUNE (obligatoire — aucune valeur arbitraire) ----\n74\t grain de film body::before = 9999 (pointer-events:none, toujours au-dessus,\n75\t purement visuel). Tout composant interactif se place sous 9999 : */\n76\t --z-content: 1; /* contenu positionné ordinaire */\n77\t --z-sticky: 300; /* éléments sticky de contenu (sous-nav…) */\n78\t --z-header: 500; /* header du site */\n79\t --z-bottombar: 600; /* tab bar / barre d'action basse */\n80\t --z-dropdown: 700; /* menus déroulants (au-dessus des barres) */\n81\t --z-overlay: 800; /* voile sous modale/panneau */\n82\t --z-modal: 900; /* modales, panneaux de filtres, galeries */\n83\t --z-toast: 950; /* notifications */\n84\t\n85\t /* ---- Hauteur de viewport DYNAMIQUE (barre du navigateur mobile qui se\n86\t replie au scroll) : toujours var(--vh100), JAMAIS 100vh en dur. ---- */\n87\t --vh100: 100vh;\n88\t}\n89\t@supports (height: 100dvh) { :root { --vh100: 100dvh; } }\n90\t\n91\t/* ---- Socle ---- */\n92\t* { box-sizing: border-box; }\n93\t/* overflow-x: clip sur html ET body — sur WebKit iOS, clip posé sur body seul\n94\t ne bloque PAS le défilement latéral du viewport (quirk de propagation) ;\n95\t clip (≠ hidden) ne casse pas position:sticky. */\n96\thtml { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; overflow-x: clip; }\n97\tbody {\n98\t margin: 0;\n99\t background: var(--paper);\n100\t color: var(--ink);\n101\t font-family: var(--font-body);\n102\t font-size: var(--fs-body);\n103\t line-height: 1.55;\n104\t -webkit-font-smoothing: antialiased;\n105\t padding-bottom: env(safe-area-inset-bottom);\n106\t overflow-x: clip; /* jamais de débordement horizontal */\n107\t}\n108\timg, svg, video { max-width: 100%; height: auto; display: block; }\n109\th1, h2, h3, h4 { font-family: var(--font-display); letter-spacing: -0.03em; margin: 0 0 0.5em; }\n110\th1 { font-size: var(--fs-h1); line-height: 1.06; }\n111\th2 { font-size: var(--fs-h2); line-height: 1.15; }\n112\th3 { font-size: var(--fs-h3); line-height: 1.25; }\n113\ta { color: inherit; }\n114\t::selection { background: var(--accent); color: var(--on-accent); }\n115\t:focus-visible { outline: 2px solid var(--green); outline-offset: 2px; }\n116\t\n117\t/* Grain de film pleine page — ⚠️ jamais de z-index sur body > * (position:\n118\t relative seulement), sinon les utilitaires z-* sont écrasés. */\n119\tbody::before {\n120\t content: \"\";\n121\t position: fixed; inset: 0; pointer-events: none; opacity: 0.35; z-index: 9999;\n122\t background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3CfeComponentTransfer%3E%3CfeFuncA type='linear' slope='0.06'/%3E%3C/feComponentTransfer%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)'/%3E%3C/svg%3E\");\n123\t}\n124\tbody > * { position: relative; }\n125\t\n126\t/* ---- Conteneur commun ---- */\n127\t.container { max-width: 1152px; margin: 0 auto; padding: 0 var(--sp-4); }\n128\t@media (min-width: 768px) { .container { padding: 0 var(--sp-5); } }\n129\t\n130\t/* ---- Micro-typographie signature ---- */\n131\t.kicker {\n132\t display: inline-flex; align-items: center; gap: 10px;\n133\t font-family: var(--font-mono); font-size: 11.5px; font-weight: 500;\n134\t text-transform: uppercase; letter-spacing: 0.12em; color: var(--green);\n135\t}\n136\t.kicker::before { content: \"\"; width: 22px; height: 2px; background: var(--green); }\n137\t.klabel {\n138\t font-family: var(--font-mono); font-size: 10px; font-weight: 700;\n139\t text-transform: uppercase; letter-spacing: 0.1em; color: var(--ink-3);\n140\t}\n141\t.hl {\n142\t display: inline-block; background: var(--accent); color: var(--on-accent);\n143\t border-radius: 8px; padding: 0 10px 2px; transform: rotate(-1deg);\n144\t}\n145\t.outline-txt { color: transparent; -webkit-text-stroke: 2px var(--ink); }\n146\t\n147\t/* ---- Boutons (cible ≥ 44 px) ---- */\n148\t.btn {\n149\t display: inline-flex; align-items: center; justify-content: center; gap: 8px;\n150\t min-height: var(--touch); padding: 10px 18px;\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n"}]},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"54c7ca62-10da-430c-acd1-d4d285777003","timestamp":"2026-08-25T14:16:44.269Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"aa77f553c30839219","tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","description":"Reading autoka/connectors/autotrader.py","usage":{"total_tokens":47038,"tool_uses":20,"duration_ms":18681},"last_tool_name":"Read","uuid":"4fa5f1f7-96fb-4bd3-861a-68efc2d0a624","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcHR7LJVhe2h3cczRzL","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01MkkBVJY3mrSuCNCmWinCVV","name":"Read","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/autoka/connectors/autotrader.py"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":7,"cache_creation_input_tokens":1615,"cache_read_input_tokens":45351,"cache_creation":{"ephemeral_5m_input_tokens":1615,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"652ee3c6-0310-4383-bfe4-ecc1a14fe046"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01MkkBVJY3mrSuCNCmWinCVV","type":"tool_result","content":"1\t# -----------------------------------------------------------------------------\n2\t# Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n3\t# Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n4\t# connectors/autotrader.py : PORTAIL — AutoTrader.ca / AutoHebdo (Québec)\n5\t#\n6\t# AutoTrader.ca tourne depuis 2025-2026 sur la plateforme AutoScout24\n7\t# (Next.js) : chaque page de résultats (SRP) embarque les 20 annonces\n8\t# complètes en JSON dans ', re.S)\n50\t\n51\t# vignettes liste 250x188 -> photos 640x480 (servies par le CDN AutoScout24)\n52\t_IMG_SIZE_RE = re.compile(r\"/\\d+x\\d+\\.webp$\")\n53\t\n54\t# libellés d'évaluation de prix AutoScout24 (tracking.priceLabel)\n55\t_PRICE_LABELS = {\"top-price\", \"good-price\", \"fair-price\", \"expensive\",\n56\t \"too-expensive\"}\n57\t\n58\t\n59\tdef _max_listings() -> int:\n60\t try:\n61\t return max(PAGE_SIZE, int(os.environ.get(\"AUTOKA_AUTOTRADER_MAX\",\n62\t \"2000\")))\n63\t except ValueError:\n64\t return 2000\n65\t\n66\t\n67\tclass AutoTraderQuebec(BaseConnector):\n68\t \"\"\"Portail AutoTrader.ca — annonces d'occasion du Québec, récentes d'abord.\"\"\"\n69\t\n70\t source_id = \"autotrader\"\n71\t request_delay = 1.5 # politesse : gros portail national\n72\t\n73\t def __init__(self) -> None:\n74\t super().__init__()\n75\t self.session.headers.update({\n76\t \"Accept\": \"text/html,application/xhtml+xml\",\n77\t \"Accept-Language\": \"fr-CA,fr;q=0.9,en;q=0.5\",\n78\t })\n79\t\n80\t # -- extraction -----------------------------------------------------------\n81\t\n82\t def _fetch_page(self, page: int) -> tuple[list[dict], int]:\n83\t \"\"\"Annonces embarquées + nombre total de pages d'une page SRP.\"\"\"\n84\t url = SRP.format(page=page)\n85\t try:\n86\t html = self.get(url).text\n87\t except requests.HTTPError as exc: # Akamai : repli ASP économe\n88\t status = exc.response.status_code if exc.response is not None else 0\n89\t if status not in (403, 429):\n90\t raise\n91\t html = self.get_scrapfly(url, render_js=False, asp=True)\n92\t m = _NEXT_DATA_RE.search(html)\n93\t if not m:\n94\t raise RuntimeError(f\"autotrader : __NEXT_DATA__ introuvable \"\n95\t f\"(page {page})\")\n96\t pp = json.loads(m.group(1)).get(\"props\", {}).get(\"pageProps\", {})\n97\t return (pp.get(\"listings\") or []), int(pp.get(\"numberOfPages\") or 0)\n98\t\n99\t def _to_vehicle(self, l: dict) -> Vehicle | None:\n100\t ext_id = str(l.get(\"id\") or \"\")\n101\t veh_d = l.get(\"vehicle\") or {}\n102\t if not ext_id or not l.get(\"url\"):\n103\t return None\n104\t if (veh_d.get(\"articleType\") or \"Car\") != \"Car\":\n105\t return None # voitures seulement (atype=C)\n106\t\n107\t price_d = l.get(\"price\") or {}\n108\t price = price_d.get(\"priceRaw\")\n109\t price = float(price) if price else None\n110\t\n111\t loc = l.get(\"location\") or {}\n112\t if (loc.get(\"provinceCode\") or \"QC\") != \"QC\":\n113\t return None # garde-fou : Québec seulement\n114\t\n115\t seller = l.get(\"seller\") or {}\n116\t is_private = (seller.get(\"type\") or \"\").lower() == \"private\"\n117\t dealer_name = (seller.get(\"companyName\") or \"\").strip()\n118\t if is_private or not dealer_name:\n119\t dealer_name = \"Particulier (AutoTrader)\" if is_private else \\\n120\t \"AutoTrader.ca\"\n121\t\n122\t details: dict = {\"forsaleby\": \"particulier\" if is_private\n123\t else \"concessionnaire\"}\n124\t label = ((l.get(\"tracking\") or {}).get(\"priceLabel\") or \"\")\n125\t if label in _PRICE_LABELS:\n126\t details[\"autotrader_price_label\"] = label\n127\t if price_d.get(\"priceEvaluation\") is not None:\n128\t details[\"autotrader_price_evaluation\"] = price_d[\"priceEvaluation\"]\n129\t zip_code = (loc.get(\"zip\") or \"\").strip()\n130\t if zip_code:\n131\t details[\"postal_code\"] = zip_code\n132\t phones = seller.get(\"phones\") or []\n133\t if phones and phones[0].get(\"formattedNumber\"):\n134\t details[\"dealer_phone\"] = phones[0][\"formattedNumber\"]\n135\t\n136\t images = [_IMG_SIZE_RE.sub(\"/640x480.webp\", u)\n137\t for u in (l.get(\"images\") or []) if u]\n138\t\n139\t title_bits = [veh_d.get(\"make\") or \"\", veh_d.get(\"model\") or \"\",\n140\t str(veh_d.get(\"modelYear\") or \"\")]\n141\t return Vehicle(\n142\t source=self.source_id,\n143\t external_id=ext_id,\n144\t url=l[\"url\"],\n145\t kind=\"auto\",\n146\t title=\" \".join(b for b in title_bits if b),\n147\t make=veh_d.get(\"make\") or \"\",\n148\t model=veh_d.get(\"model\") or \"\",\n149\t trim=(veh_d.get(\"modelVersionInput\") or \"\").strip(),\n150\t year=veh_d.get(\"modelYear\"),\n151\t price=price,\n152\t price_label=(price_d.get(\"priceFormatted\") or \"\").strip(),\n153\t mileage_label=veh_d.get(\"mileageInKm\") or \"\",\n154\t transmission=veh_d.get(\"transmission\") or \"\",\n155\t fuel=veh_d.get(\"fuel\") or \"\",\n156\t engine=veh_d.get(\"motorTypeName\") or \"\",\n157\t dealer_name=dealer_name,\n158\t city=(loc.get(\"city\") or \"\").title(),\n159\t description=l.get(\"description\") or \"\",\n160\t details=details,\n161\t images=images,\n162\t )\n163\t\n164\t # -- contrat ---------------------------------------------------------------\n165\t\n166\t def fetch(self) -> list[Vehicle]:\n167\t cap = _max_listings()\n168\t vehicles: dict[str, Vehicle] = {}\n169\t listings, n_pages = self._fetch_page(1)\n170\t n_pages = min(n_pages or MAX_PAGES_SITE, MAX_PAGES_SITE,\n171\t -(-cap // PAGE_SIZE))\n172\t for l in listings:\n173\t v = self._to_vehicle(l)\n174\t if v:\n175\t vehicles[v.external_id] = v\n176\t for page in range(2, n_pages + 1):\n177\t if len(vehicles) >= cap:\n178\t break\n179\t try:\n180\t listings, _ = self._fetch_page(page)\n181\t except Exception:\n182\t break # fin de pagination / page vide\n183\t new = 0\n184\t for l in listings:\n185\t v = self._to_vehicle(l)\n186\t if v and v.external_id not in vehicles:\n187\t vehicles[v.external_id] = v\n188\t new += 1\n189\t if new == 0:\n190\t break\n191\t return list(vehicles.values())\n192\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n"}]},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"6cf6ee84-d0eb-4c3d-8f10-1e8ca58ff7aa","timestamp":"2026-08-25T14:16:44.882Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"aa77f553c30839219","tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","description":"Reading autoka/connectors/hgregoire.py","usage":{"total_tokens":47040,"tool_uses":21,"duration_ms":19081},"last_tool_name":"Read","uuid":"c2a0ab9e-f9bd-40c1-96c4-a892ad89a109","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcHR7LJVhe2h3cczRzL","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01Wyq7uxeWEtjinpNF3LFSb9","name":"Read","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/autoka/connectors/hgregoire.py","limit":100},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":7,"cache_creation_input_tokens":1615,"cache_read_input_tokens":45351,"cache_creation":{"ephemeral_5m_input_tokens":1615,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"b121c6e8-aa7f-4097-a4ec-aa9b05f88c18"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01Wyq7uxeWEtjinpNF3LFSb9","type":"tool_result","content":"1\t# -----------------------------------------------------------------------------\n2\t# Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n3\t# Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n4\t# connectors/hgregoire.py : connecteur HGrégoire (hgregoire.com), la plus\n5\t# grosse chaîne de mégacentres d'occasion au Québec (St-Léonard, Laval,\n6\t# St-Eustache, Saguenay/Chicoutimi, Carbonear/Gaspésie, etc.).\n7\t#\n8\t# Stratégie : la page de résultats /auto-usage?page=N est rendue côté\n9\t# serveur (WordPress custom) et embarque, pour CHAQUE carte véhicule, un\n10\t# ', re.S)\n50\t_PAGE_RE = re.compile(r'data-page=\"(\\d+)\"')\n51\t_DOORS_RE = re.compile(r\"(\\d+)\\s*portes?\", re.I)\n52\t# photo de carte 448x252 -> version plus grande servie par le même CDN\n53\t_IMG_SIZE_RE = re.compile(r\"/by-size/([^/]+)/\\d+x\\d+/\")\n54\t\n55\t# page détail : galerie (chaque photo répétée en plusieurs tailles),\n56\t# onglet « Équipements » et lien Carfax éventuel\n57\t_GALLERY_RE = re.compile( # album parfois alphanumérique (ex. KA8107)\n58\t r\"https://[^\\\"'\\s\\\\<>]*/photos/by-size/([\\w-]+)/\\d+x\\d+/(\\w+)\\.(\\w+)\")\n59\t_EQUIP_TAB_RE = re.compile(\n60\t r'id=\"vdptab-equipment\"(.*?)(?:show-all-equipment|)', re.S)\n61\t_EQUIP_ITEM_RE = re.compile(r\"\\s*([^<]+?)\\s*\")\n62\t_CARFAX_RE = re.compile(\n63\t r'https?://[^\"\\'\\s<>]*carfax[^\"\\'\\s<>]*', re.I)\n64\t\n65\t# clé de cache détail stable (bump si le parsing change)\n66\t_DETAIL_KEY = \"v1\"\n67\t\n68\tMILE_KM = 1.609344\n69\t\n70\t\n71\t# bannières du groupe qui ne sont pas des noms de ville\n72\t_BANNER_CITY = {\n73\t \"ineos grenadier\": \"Montréal\", # INEOS Grenadier Montréal\n74\t \"le prix du gros\": \"Trois-Rivières\", # Méga centre d'occasion Le Prix du Gros\n75\t}\n76\t\n77\t\n78\tdef _clean_city(raw: str) -> str:\n79\t \"\"\"Succursale -> ville : « Kia Vaudreuil » -> « Vaudreuil »,\n80\t « Nissan St-Eustache » -> « St-Eustache » (certaines succursales du\n81\t groupe sont des bannières de marque ; on retire le préfixe de marque).\"\"\"\n82\t banner = _BANNER_CITY.get(strip_accents(raw or \"\").lower().strip())\n83\t if banner:\n84\t return banner\n85\t words = (raw or \"\").split()\n86\t while len(words) > 1 and strip_accents(words[0]).lower() in _MAKE_WORDS:\n87\t words = words[1:]\n88\t return \" \".join(words)\n89\t\n90\t\n91\tclass HGregoire(BaseConnector):\n92\t \"\"\"HGrégoire — inventaire usagé complet via les pages liste (SRP).\"\"\"\n93\t\n94\t source_id = \"hgregoire\"\n95\t base_url = \"https://www.hgregoire.com\"\n96\t dealer_name = \"HGrégoire\"\n97\t request_delay = 10.0 # robots.txt : Crawl-delay: 10\n98\t max_pages = 200 # garde-fou dur (~74 pages réelles)\n99\t max_details = 300 # plafond de requêtes Scrapfly / sync\n100\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n"}]},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"84b533b3-d2e8-4844-bcfe-7229ee0f0afd","timestamp":"2026-08-25T14:16:45.282Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"a6781332982e4f0b5","tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","description":"Reading frontend/src/components/VehicleCard.tsx","usage":{"total_tokens":42580,"tool_uses":11,"duration_ms":10841},"last_tool_name":"Read","uuid":"88da4e36-8dbf-4af0-ae9c-042db1e8e4c4","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcHVPos7wgLsLdGgcYY","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01B25uMqeh93SjjChZe9myKP","name":"Read","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/frontend/src/components/VehicleCard.tsx"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":7,"cache_creation_input_tokens":8369,"cache_read_input_tokens":34134,"cache_creation":{"ephemeral_5m_input_tokens":8369,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"ce565c9a-a6e6-4787-a334-198de02fb8cc"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01B25uMqeh93SjjChZe9myKP","type":"tool_result","content":"1\t// -----------------------------------------------------------------------------\n2\t// Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n3\t// Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n4\t// VehicleCard.tsx : carte véhicule de la grille de résultats\n5\t// -----------------------------------------------------------------------------\n6\timport { Link } from \"react-router-dom\";\n7\timport { Vehicle, fmtKm, fmtPrice, vehiclePath } from \"../api\";\n8\timport FavButton from \"./FavButton\";\n9\t\n10\texport default function VehicleCard({ v }: { v: Vehicle }) {\n11\t const chips = [\n12\t v.mileage_km != null ? fmtKm(v.mileage_km) : null,\n13\t v.transmission || null,\n14\t v.fuel || null,\n15\t v.body_type || null,\n16\t v.drivetrain || null,\n17\t ].filter(Boolean) as string[];\n18\t\n19\t return (\n20\t \n21\t
\n22\t {v.images.length > 0 ? (\n23\t {v.title}\n24\t ) : (\n25\t
🚗
\n26\t )}\n27\t {v.year != null && {v.year}}\n28\t \n29\t
\n30\t
\n31\t

{v.title}

\n32\t
\n33\t {fmtPrice(v.price)}\n34\t {v.details?.price_from ? à partir de : null}\n35\t
\n36\t
\n37\t {chips.slice(0, 4).map((c) => (\n38\t {c}\n39\t ))}\n40\t
\n41\t
\n42\t {v.dealer_name || v.source}\n43\t {v.city}\n44\t
\n45\t
\n46\t \n47\t );\n48\t}\n49\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n"}]},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"b266e176-c692-4352-9e8e-2abfd5909fa7","timestamp":"2026-08-25T14:16:46.229Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"a6781332982e4f0b5","tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","description":"Reading frontend/vite.config.ts","usage":{"total_tokens":42582,"tool_uses":12,"duration_ms":11125},"last_tool_name":"Read","uuid":"a33ea601-ada9-48de-8ed5-ecd4a8a33519","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcHVPos7wgLsLdGgcYY","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_016qum5822YwcQaQNSz6rmNJ","name":"Read","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/frontend/vite.config.ts"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":7,"cache_creation_input_tokens":8369,"cache_read_input_tokens":34134,"cache_creation":{"ephemeral_5m_input_tokens":8369,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"a56f82b9-854e-4256-86f0-4388653c7558"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_016qum5822YwcQaQNSz6rmNJ","type":"tool_result","content":"1\t// -----------------------------------------------------------------------------\n2\t// Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n3\t// Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n4\t// -----------------------------------------------------------------------------\n5\timport react from \"@vitejs/plugin-react\";\n6\timport { defineConfig } from \"vite\";\n7\t\n8\texport default defineConfig({\n9\t plugins: [react()],\n10\t server: {\n11\t proxy: {\n12\t \"/api\": \"http://localhost:8080\",\n13\t },\n14\t },\n15\t});\n16\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n"}]},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"66790fe1-8cc2-4ad2-99cd-4d572398cd60","timestamp":"2026-08-25T14:16:46.512Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"a6781332982e4f0b5","tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","description":"Reading frontend/src/main.tsx","usage":{"total_tokens":42584,"tool_uses":13,"duration_ms":11130},"last_tool_name":"Read","uuid":"947c83b1-8c78-4d9e-baa5-51b56263a23b","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcHVPos7wgLsLdGgcYY","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01FZg8uvkUAhdPCfurfc1MP2","name":"Read","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/frontend/src/main.tsx"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":7,"cache_creation_input_tokens":8369,"cache_read_input_tokens":34134,"cache_creation":{"ephemeral_5m_input_tokens":8369,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"3bb04865-a0b8-442f-8673-b4858ffd0535"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01FZg8uvkUAhdPCfurfc1MP2","type":"tool_result","content":"1\t// -----------------------------------------------------------------------------\n2\t// Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n3\t// Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n4\t// -----------------------------------------------------------------------------\n5\timport React from \"react\";\n6\timport ReactDOM from \"react-dom/client\";\n7\timport { BrowserRouter } from \"react-router-dom\";\n8\timport App from \"./App\";\n9\timport \"./ka/tokens.css\"; // socle Groupe KA (tokens + composants partagés) — AVANT le CSS local\n10\timport \"./styles.css\";\n11\t\n12\tReactDOM.createRoot(document.getElementById(\"root\")!).render(\n13\t \n14\t \n15\t \n16\t \n17\t \n18\t);\n19\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n"}]},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"1a33315c-9458-4f94-85e5-97b3f9fc5920","timestamp":"2026-08-25T14:16:46.516Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"aa77f553c30839219","tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","description":"Reading autoka/dedup.py","usage":{"total_tokens":52264,"tool_uses":22,"duration_ms":21123},"last_tool_name":"Read","uuid":"317e5106-c73b-401a-9e4f-c744f4b6134d","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcHZvunXtbGCzjWhN2A","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01Q2mtTXjtUmbtmyTBWsGbZh","name":"Read","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/autoka/dedup.py"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":7,"cache_creation_input_tokens":5220,"cache_read_input_tokens":46966,"cache_creation":{"ephemeral_5m_input_tokens":5220,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"40c1a005-c9a1-4485-908f-3053db8ada73"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01Q2mtTXjtUmbtmyTBWsGbZh","type":"tool_result","content":"1\t# -----------------------------------------------------------------------------\n2\t# Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n3\t# Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n4\t# dedup.py : dédoublonnage inter-sources par VIN\n5\t#\n6\t# Le même véhicule apparaît souvent chez plusieurs sources : le site du\n7\t# concessionnaire ET le portail de son groupe (Le Prix du Gros ↔ HGrégoire,\n8\t# Méga Centre ↔ concessions Laplante, Toutes les marques ↔ GM Côte-Nord…),\n9\t# voire une petite annonce Kijiji. Le VIN (17 caractères, unique au monde)\n10\t# est la clé de blocage parfaite : on ne regroupe QUE sur VIN identique et\n11\t# valide — dédoublonnage volontairement conservateur, zéro faux positif.\n12\t#\n13\t# Pour chaque groupe de doublons on élit une annonce CANONIQUE :\n14\t# autorité (concessionnaire direct > portail/regroupeur > petites\n15\t# annonces) puis complétude de la fiche, puis ancienneté (first_seen).\n16\t# La canonique garde la liste des autres offres dans `dup_sources` (JSON) ;\n17\t# les doublons pointent vers elle via `dup_of` (uid canonique). Les\n18\t# endpoints de liste filtrent `dup_of IS NULL` — les fiches détail restent\n19\t# toutes accessibles par uid.\n20\t#\n21\t# `recompute()` repart de zéro à chaque appel (idempotent) : appelé à la fin\n22\t# de chaque cycle d'ingestion (ingest.run) et disponible en one-shot :\n23\t# python3 -m autoka.dedup\n24\t# -----------------------------------------------------------------------------\n25\tfrom __future__ import annotations\n26\t\n27\timport json\n28\timport re\n29\timport sqlite3\n30\tfrom pathlib import Path\n31\t\n32\t# VIN valide : 17 caractères, alphanumériques sans I, O ni Q\n33\t_VIN_RE = re.compile(r\"^[A-HJ-NPR-Z0-9]{17}$\")\n34\t\n35\t_SOURCES_PATH = Path(__file__).resolve().parent.parent / \"data\" / \"sources.json\"\n36\t\n37\t# autorité par type de source (défaut : concessionnaire direct)\n38\t_AUTHORITY = {\"direct\": 2, \"portail\": 1, \"marketplace\": 0}\n39\t\n40\t# champs comptés pour la complétude de la fiche (départage à autorité égale)\n41\t_COMPLETENESS_FIELDS = (\n42\t \"price\", \"mileage_km\", \"transmission\", \"fuel\", \"drivetrain\", \"body_type\",\n43\t \"exterior_color\", \"engine\", \"description\", \"carfax_url\", \"trim\", \"year\",\n44\t)\n45\t\n46\t\n47\tdef _source_authority() -> dict[str, int]:\n48\t \"\"\"source_id -> niveau d'autorité, depuis data/sources.json (champ `type`).\"\"\"\n49\t try:\n50\t registry = json.loads(_SOURCES_PATH.read_text(encoding=\"utf-8\"))[\"sources\"]\n51\t except (OSError, ValueError, KeyError):\n52\t return {}\n53\t return {s[\"id\"]: _AUTHORITY.get(s.get(\"type\", \"direct\"), 2) for s in registry}\n54\t\n55\t\n56\tdef _score(row: sqlite3.Row, authority: dict[str, int]) -> tuple:\n57\t \"\"\"Clé de tri décroissante : la meilleure annonce du groupe gagne.\"\"\"\n58\t completeness = sum(1 for f in _COMPLETENESS_FIELDS if row[f] not in (None, \"\"))\n59\t try:\n60\t n_images = len(json.loads(row[\"images\"] or \"[]\"))\n61\t except ValueError:\n62\t n_images = 0\n63\t return (\n64\t authority.get(row[\"source\"], 2), # concessionnaire direct d'abord\n65\t completeness + min(n_images, 10) / 10.0,\n66\t -(row[\"first_seen\"] or 0), # à égalité : la plus ancienne\n67\t )\n68\t\n69\t\n70\tdef recompute(con: sqlite3.Connection, verbose: bool = False) -> dict:\n71\t \"\"\"Recalcule dup_of/dup_sources sur toutes les annonces actives.\"\"\"\n72\t authority = _source_authority()\n73\t\n74\t # repartir de zéro : les groupes bougent à chaque cycle (ventes, retraits)\n75\t con.execute(\"UPDATE vehicles SET dup_of=NULL, dup_sources=NULL\"\n76\t \" WHERE dup_of IS NOT NULL OR dup_sources IS NOT NULL\")\n77\t\n78\t rows = con.execute(\n79\t \"\"\"SELECT uid, source, vin, url, price, dealer_name, city, first_seen,\n80\t images, mileage_km, transmission, fuel, drivetrain,\n81\t body_type, exterior_color, engine, description, carfax_url,\n82\t trim, year\n83\t FROM vehicles WHERE active=1 AND length(vin)=17\"\"\").fetchall()\n84\t\n85\t groups: dict[str, list[sqlite3.Row]] = {}\n86\t for r in rows:\n87\t vin = (r[\"vin\"] or \"\").upper()\n88\t if _VIN_RE.match(vin):\n89\t groups.setdefault(vin, []).append(r)\n90\t\n91\t n_groups = n_dups = 0\n92\t for vin, members in groups.items():\n93\t if len(members) < 2:\n94\t continue\n95\t members.sort(key=lambda r: _score(r, authority), reverse=True)\n96\t canonical, dups = members[0], members[1:]\n97\t dup_sources = [\n98\t {\"uid\": d[\"uid\"], \"source\": d[\"source\"], \"url\": d[\"url\"],\n99\t \"price\": d[\"price\"], \"dealer_name\": d[\"dealer_name\"],\n100\t \"city\": d[\"city\"]}\n101\t for d in dups\n102\t ]\n103\t con.execute(\"UPDATE vehicles SET dup_sources=? WHERE uid=?\",\n104\t (json.dumps(dup_sources, ensure_ascii=False),\n105\t canonical[\"uid\"]))\n106\t for d in dups:\n107\t con.execute(\"UPDATE vehicles SET dup_of=? WHERE uid=?\",\n108\t (canonical[\"uid\"], d[\"uid\"]))\n109\t n_groups += 1\n110\t n_dups += len(dups)\n111\t if verbose:\n112\t print(f\" VIN {vin} : {canonical['uid']} <- \"\n113\t + \", \".join(d[\"uid\"] for d in dups))\n114\t\n115\t con.commit()\n116\t out = {\"vin_groups\": n_groups, \"duplicates_masked\": n_dups,\n117\t \"vins_actifs\": len(groups)}\n118\t print(f\"[auto-ka] dedup VIN : {n_groups} groupe(s), \"\n119\t f\"{n_dups} doublon(s) masqué(s)\")\n120\t return out\n121\t\n122\t\n123\tif __name__ == \"__main__\":\n124\t import sys\n125\t from . import db\n126\t con = db.connect()\n127\t recompute(con, verbose=\"-v\" in sys.argv)\n128\t con.close()\n129\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n"}]},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"d281294f-72cc-42b6-86ba-bf8e01233948","timestamp":"2026-08-25T14:16:47.323Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"aa77f553c30839219","tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","description":"Running head -80 /Users/simon-pierreboucher/auto-ka/autok…","usage":{"total_tokens":52266,"tool_uses":23,"duration_ms":21184},"last_tool_name":"Bash","uuid":"763d648c-52c4-40c0-b59b-09e475e17342","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcHZvunXtbGCzjWhN2A","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01TJ8hL9G1DgLaCuqJh6YiGH","name":"Bash","input":{"command":"head -80 /Users/simon-pierreboucher/auto-ka/autoka/connectors/d2c_dealers.py"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":7,"cache_creation_input_tokens":5220,"cache_read_input_tokens":46966,"cache_creation":{"ephemeral_5m_input_tokens":5220,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"806449ba-53dc-49e8-8a67-2605a729a8e8"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01TJ8hL9G1DgLaCuqJh6YiGH","type":"tool_result","content":"# -----------------------------------------------------------------------------\n# Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n# Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n# connectors/d2c_dealers.py : connecteurs des concessionnaires sur plateforme\n# D2C Media (le fournisseur de sites le plus répandu chez les marchands\n# d'occasion au Québec).\n#\n# Stratégie : le sitemap (/fr/sitemap.xml) recense chaque page véhicule\n# (…-id123456.html). Chaque page détail expose un JSON-LD schema.org\n# complet (@type Vehicle/Car) : VIN, kilométrage, transmission, carburant,\n# carrosserie, couleurs, prix, photos. Les pages détail sont mises en cache\n# (clé hebdomadaire) : seuls les nouveaux véhicules — et une revalidation\n# par semaine pour les prix — génèrent de vraies requêtes.\n#\n# Enrichissement (clé de cache v3) — en plus du JSON-LD (qui ne liste que\n# 3 photos, parfois avec des ids corrompus — bug D2C) :\n# - galerie COMPLÈTE : les URLs imagescdn.d2cmedia.ca////\n# /… présentes dans le HTML (préférence à la variante « cb » grand\n# format, sinon « mb »/« s8 »), triées par index de photo ;\n# - endpoint JSON par véhicule /js/json/.json (celui que le JS du site\n# appelle pour révéler la section « Options ») : optionsTextFR (liste\n# d'équipements en français), moteur + cylindre, carprooflink (rapport\n# Carfax direct quand le concessionnaire l'expose) ;\n# - repli équipements : titres des topFeatures/safetyFeatures du blob\n# window.__vdpJSON embarqué dans la page.\n#\n# Le lastmod du sitemap est bumpé quotidiennement par D2C (inutilisable\n# comme clé de cache) — d'où la clé temporelle hebdomadaire.\n# -----------------------------------------------------------------------------\nfrom __future__ import annotations\n\nimport datetime\nimport html as htmllib\nimport json\nimport os\nimport re\n\nfrom ..schema import Vehicle\nfrom .base import BaseConnector\n\n# segments d'URL /occasion// qui ne sont PAS des automobiles\n_EXCLUDE_SEGMENTS = re.compile(\n r\"motoneige|vtt|bateau|ponton|motomarine|moto(?:s)?\\b|roulotte|remorque|\"\n r\"\\bvr\\b|campeur|tracteur|souffleuse|scooter|spyder|side|atv|snow|\"\n r\"powersport|nautique|habitation\", re.I)\n\n_VEH_URL_RE = re.compile(r\"-id(\\d+)\\.html?$\")\n\n_DRIVE_MAP = {\n \"FrontWheelDriveConfiguration\": \"Traction\",\n \"RearWheelDriveConfiguration\": \"Propulsion\",\n \"AllWheelDriveConfiguration\": \"Intégrale / 4x4\",\n \"FourWheelDriveConfiguration\": \"Intégrale / 4x4\",\n}\n\n_LD_RE = re.compile(\n r'', re.S)\n\n# galerie CDN D2C : /////…\n# (le nom de fichier peut contenir des espaces : « Silverado 1500-2023.jpg »)\n_GALLERY_RE = re.compile(\n r'(https://imagescdn\\.d2cmedia\\.ca/'\n r'([a-z0-9]{2})[a-f0-9]+/\\d+/(\\d+)/(\\d+)/[^\"\\'<>]+?\\.(?:jpe?g|png|webp))',\n re.I)\n\n# variante d'image préférée : cb = grand format (1440px), mb = moyen, s8 = mini\n_IMG_VARIANT_RANK = {\"cb\": 0, \"mb\": 1, \"s8\": 2}\n\n_VDP_JSON_RE = re.compile(r'window\\.__vdpJSON\\s*=\\s*')\n\n# lien direct vers le rapport Carfax/CarProof (badge de la page détail) —\n# vhr.carfax.ca seulement : cdn.carfax.ca ne sert que les logos\n_CARFAX_RE = re.compile(r'https?://vhr\\.carfax\\.ca/[^\\s\"\\'<>\\\\]+', re.I)\n\nMAX_IMAGES = 25\n\n\ndef _extract_gallery(html: str, ext_id: str) -> list[str]:\n \"\"\"Galerie complète depuis le HTML, dédupliquée par index de photo,\n dans l'ordre de la galerie (index croissant), meilleure variante d'abord.","is_error":false}]},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"feec14de-0e49-470d-b4fd-3e11809401b6","timestamp":"2026-08-25T14:16:47.405Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"a6781332982e4f0b5","tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","description":"Reading frontend/src/components/FavButton.tsx","usage":{"total_tokens":44163,"tool_uses":14,"duration_ms":13103},"last_tool_name":"Read","uuid":"e0ce0cc4-5f6e-4f09-af01-6e73d5abfff3","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcHf5DzxQnZ8Ld52BVX","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01UGF4JCyv9EKjYejGC9BgrW","name":"Read","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/frontend/src/components/FavButton.tsx"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":7,"cache_creation_input_tokens":1573,"cache_read_input_tokens":42503,"cache_creation":{"ephemeral_5m_input_tokens":1573,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"a73caf70-1691-4bae-b51f-ff362cf87e61"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01UGF4JCyv9EKjYejGC9BgrW","type":"tool_result","content":"1\t// -----------------------------------------------------------------------------\n2\t// Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n3\t// Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n4\t// FavButton.tsx : cœur rond « Mon univers Ka » en coin de photo — ajoute ou\n5\t// retire le véhicule des favoris du hub Groupe KA (magasin central).\n6\t// Non connecté : le clic redirige vers la connexion KA ID.\n7\t// -----------------------------------------------------------------------------\n8\timport { Vehicle } from \"../api\";\n9\timport { useAccount } from \"../account\";\n10\t\n11\texport default function FavButton({ v }: { v: Vehicle }) {\n12\t const { enabled, favs, toggleFav } = useAccount();\n13\t if (!enabled) return null;\n14\t const fav = favs.has(v.uid);\n15\t return (\n16\t { e.preventDefault(); e.stopPropagation(); toggleFav(v); }}\n23\t >\n24\t \n30\t \n31\t \n32\t \n33\t );\n34\t}\n35\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n"}]},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"0aa214e7-e9c0-4f00-a747-1ca2083d3a1d","timestamp":"2026-08-25T14:16:48.497Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"a6781332982e4f0b5","tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","description":"Running find /Users/simon-pierreboucher/auto-ka -type f -…","usage":{"total_tokens":44166,"tool_uses":15,"duration_ms":13353},"last_tool_name":"Bash","uuid":"db313927-bd6e-4233-a945-3652a6a09148","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcHf5DzxQnZ8Ld52BVX","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01U5a6p3aPMgmgwoex3tk5GA","name":"Bash","input":{"command":"find /Users/simon-pierreboucher/auto-ka -type f -name \"*.py\" | grep -E \"(main|app|server)\" | head -5"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":7,"cache_creation_input_tokens":1573,"cache_read_input_tokens":42503,"cache_creation":{"ephemeral_5m_input_tokens":1573,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"0ed9f616-74b6-43ce-b01b-5deecbf89ae6"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"a6781332982e4f0b5","tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","description":"Running ls -la /Users/simon-pierreboucher/auto-ka/ | head…","usage":{"total_tokens":44169,"tool_uses":16,"duration_ms":13365},"last_tool_name":"Bash","uuid":"898cf02f-c53b-4585-9bce-dcb59b9f4c5f","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcHf5DzxQnZ8Ld52BVX","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01CKPUZzzsxHm9TrcdehpcLg","name":"Bash","input":{"command":"ls -la /Users/simon-pierreboucher/auto-ka/ | head -20"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":7,"cache_creation_input_tokens":1573,"cache_read_input_tokens":42503,"cache_creation":{"ephemeral_5m_input_tokens":1573,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"80b739e9-2c6c-40f2-8265-cb1c437f4c38"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01CKPUZzzsxHm9TrcdehpcLg","type":"tool_result","content":"total 104\ndrwxr-xr-x 16 simon-pierreboucher staff 512 Aug 18 03:23 .\ndrwxr-x---+ 45 simon-pierreboucher staff 1440 Aug 25 10:15 ..\n-rw-r--r-- 1 simon-pierreboucher staff 10244 Aug 13 04:17 .DS_Store\ndrwxr-xr-x 3 simon-pierreboucher staff 96 Aug 12 07:53 .claude\n-rw------- 1 simon-pierreboucher staff 349 Aug 13 00:58 .env\ndrwxr-xr-x 13 simon-pierreboucher staff 416 Aug 24 21:36 .git\n-rw-r--r-- 1 simon-pierreboucher staff 165 Aug 12 14:29 .gitignore\ndrwxr-xr-x 8 simon-pierreboucher staff 256 Aug 17 21:14 .venv\n-rw-r--r-- 1 simon-pierreboucher staff 21003 Aug 24 14:55 README.md\ndrwxr-xr-x 22 simon-pierreboucher staff 704 Aug 22 18:51 autoka\ndrwxr-xr-x 5 simon-pierreboucher staff 160 Aug 25 10:16 data\ndrwxr-xr-x 11 simon-pierreboucher staff 352 Aug 24 00:56 docs\ndrwxr-xr-x 13 simon-pierreboucher staff 416 Aug 24 21:36 frontend\n-rw-r--r-- 1 simon-pierreboucher staff 196 Aug 17 21:36 requirements.txt\n-rw-r--r-- 1 simon-pierreboucher staff 1674 Aug 12 08:02 run.py\ndrwxr-xr-x 3 simon-pierreboucher staff 96 Aug 18 03:23 scripts","is_error":false}]},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"c6dc7a67-3ba0-40b2-9b15-2114f9221a44","timestamp":"2026-08-25T14:16:48.778Z"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01U5a6p3aPMgmgwoex3tk5GA","type":"tool_result","content":"/Users/simon-pierreboucher/auto-ka/.venv/lib/python3.14/site-packages/starlette/applications.py\n/Users/simon-pierreboucher/auto-ka/.venv/lib/python3.14/site-packages/fontTools/qu2cu/__main__.py\n/Users/simon-pierreboucher/auto-ka/.venv/lib/python3.14/site-packages/fontTools/cu2qu/__main__.py\n/Users/simon-pierreboucher/auto-ka/.venv/lib/python3.14/site-packages/fontTools/subset/__main__.py\n/Users/simon-pierreboucher/auto-ka/.venv/lib/python3.14/site-packages/fontTools/voltLib/__main__.py","is_error":false}]},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"d3c09083-1179-4488-8678-9ed528df0db9","timestamp":"2026-08-25T14:16:48.823Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"aa77f553c30839219","tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","description":"Running sqlite3 /Users/simon-pierreboucher/auto-ka/data/a…","usage":{"total_tokens":56037,"tool_uses":24,"duration_ms":23933},"last_tool_name":"Bash","uuid":"ed5b9892-56d7-40b2-a958-479f7d12cbd6","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcHj2r64KimBfuHEHac","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01V58YGjZ3NXCjFDjqciHb9b","name":"Bash","input":{"command":"sqlite3 /Users/simon-pierreboucher/auto-ka/data/autoka.db \"SELECT source, COUNT(*) total, COUNT(CASE WHEN vin<>'' THEN 1 END) with_vin, COUNT(CASE WHEN description<>'' THEN 1 END) with_desc, CAST(COUNT(CASE WHEN json_array_length(images) > 0 THEN 1 END) AS FLOAT) / COUNT(*) * 100 as pct_with_images FROM vehicles WHERE active=1 GROUP BY source ORDER BY total DESC LIMIT 15;\""},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":7,"cache_creation_input_tokens":3767,"cache_read_input_tokens":52186,"cache_creation":{"ephemeral_5m_input_tokens":3767,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"642b81b2-ca6c-4f90-a1a9-f03638f49037"}} {"type":"permission_auto","tool":"Bash","key":"tout autoriser","input":{"command":"sqlite3 /Users/simon-pierreboucher/auto-ka/data/autoka.db \"SELECT source, COUNT(*) total, COUNT(CASE WHEN vin<>'' THEN 1 END) with_vin, COUNT(CASE WHEN description<>'' THEN 1 END) with_desc, CAST(COUNT(CASE WHEN json_array_length(images) > 0 THEN 1 END) AS FLOAT) / COUNT(*) * 100 as pct_with_images FROM vehicles WHERE active=1 GROUP BY source ORDER BY total DESC LIMIT 15;\""}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"a6781332982e4f0b5","tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","description":"Running ls -la /Users/simon-pierreboucher/auto-ka/autoka/…","usage":{"total_tokens":46047,"tool_uses":17,"duration_ms":14911},"last_tool_name":"Bash","uuid":"63df1843-11f1-4c45-b7ed-79c2616cab41","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcHpo7bQ41EqtQq4Dcc","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01JHkfrtMQrFLeq7TxDD91rw","name":"Bash","input":{"command":"ls -la /Users/simon-pierreboucher/auto-ka/autoka/ | head -15"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":573,"cache_creation_input_tokens":1308,"cache_read_input_tokens":44076,"cache_creation":{"ephemeral_5m_input_tokens":1308,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"6df5900d-4823-427c-9912-30cc91e20553"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01JHkfrtMQrFLeq7TxDD91rw","type":"tool_result","content":"total 576\ndrwxr-xr-x 22 simon-pierreboucher staff 704 Aug 22 18:51 .\ndrwxr-xr-x 16 simon-pierreboucher staff 512 Aug 18 03:23 ..\n-rw-r--r-- 1 simon-pierreboucher staff 10244 Aug 13 04:15 .DS_Store\n-rw-r--r-- 1 simon-pierreboucher staff 318 Aug 12 08:02 __init__.py\ndrwxr-xr-x 19 simon-pierreboucher staff 608 Aug 24 01:17 __pycache__\n-rw-r--r-- 1 simon-pierreboucher staff 11014 Aug 13 02:56 auth.py\ndrwxr-xr-x 38 simon-pierreboucher staff 1216 Aug 23 15:22 connectors\n-rw-r--r-- 1 simon-pierreboucher staff 14746 Aug 18 02:03 db.py\n-rw-r--r-- 1 simon-pierreboucher staff 8254 Aug 18 02:08 dealers.py\n-rw-r--r-- 1 simon-pierreboucher staff 5411 Aug 18 02:03 dedup.py\n-rw-r--r-- 1 simon-pierreboucher staff 3375 Aug 13 02:56 hubfav.py\n-rw-r--r-- 1 simon-pierreboucher staff 3030 Aug 13 02:35 hubprofile.py\n-rw-r--r-- 1 simon-pierreboucher staff 2532 Aug 18 02:03 ingest.py\n-rw-r--r-- 1 simon-pierreboucher staff 51754 Aug 23 17:18 kapdf.py","is_error":false}]},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"5b12a69d-c5cd-443a-bb3a-9380d3a1d6e5","timestamp":"2026-08-25T14:16:50.304Z"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01V58YGjZ3NXCjFDjqciHb9b","type":"tool_result","content":"otogo|23922|23716|0|96.0287601371123\nautousagee|11865|6214|4985|89.1698272229246\nkijiji|3081|652|3081|99.7078870496592\nautotrader|2086|0|1744|94.3911792905081\nhgregoire|1709|1709|1709|100.0\nautomobileendirect|1626|1626|1625|100.0\noccasionbeaucage|1245|1245|1224|100.0\nalbioccasion|1103|1103|1103|100.0\nleprixdugros|1058|1058|0|100.0\ncargurus|631|631|0|88.9064976228209\ngervaisauto|541|541|540|100.0\nforceoccasion|509|484|509|99.803536345776\nmegacentredeliquidation|454|454|442|99.3392070484581\nstefoychrysler|411|411|404|100.0\nmontjolichrysler|411|411|404|100.0","is_error":false}]},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"6c7fb8ab-844f-4260-91fc-e6065db08482","timestamp":"2026-08-25T14:16:50.320Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"a6781332982e4f0b5","tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","description":"Running find /Users/simon-pierreboucher/auto-ka/autoka -t…","usage":{"total_tokens":46692,"tool_uses":18,"duration_ms":15968},"last_tool_name":"Bash","uuid":"d012a115-7fec-4c9a-a31a-f5f3ec0ef640","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcHwPFDJHCEzvvrMorC","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01AYtLWsUt2fjF7NgKLoK9Jb","name":"Bash","input":{"command":"find /Users/simon-pierreboucher/auto-ka/autoka -type f -name \"*app*\" -o -name \"*main*\" | head -10"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":6,"cache_creation_input_tokens":1187,"cache_read_input_tokens":45384,"cache_creation":{"ephemeral_5m_input_tokens":1187,"ephemeral_1h_input_tokens":0},"output_tokens":25,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"254e7fa3-ed20-42fb-962d-6563e6521dfc"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01AYtLWsUt2fjF7NgKLoK9Jb","type":"tool_result","content":"(Bash completed with no output)","is_error":false}]},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"98b033a6-f076-41b6-9a95-c5d29c2f3438","timestamp":"2026-08-25T14:16:51.393Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"a6781332982e4f0b5","tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","description":"Reading run.py","usage":{"total_tokens":46817,"tool_uses":19,"duration_ms":16900},"last_tool_name":"Read","uuid":"9742cba1-4d70-4e7e-9c96-2ba80aa3a915","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcJ1ubuzBgrkRPVLCHV","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01KvQ54ZQ1jauF1QnSSc3eYE","name":"Read","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/run.py"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":5,"cache_creation_input_tokens":108,"cache_read_input_tokens":46571,"cache_creation":{"ephemeral_5m_input_tokens":108,"ephemeral_1h_input_tokens":0},"output_tokens":18,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"0c24e926-60a5-45f0-b187-cd23738f3eb0"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01KvQ54ZQ1jauF1QnSSc3eYE","type":"tool_result","content":"1\t#!/usr/bin/env python3\n2\t# -----------------------------------------------------------------------------\n3\t# Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n4\t# Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n5\t# run.py : point d'entrée — `sync`, `watch`, `serve`\n6\t# -----------------------------------------------------------------------------\n7\t\"\"\"Utilisation :\n8\t python run.py sync [source ...] # synchronise les annonces\n9\t python run.py watch [minutes] # synchronise en boucle (défaut 120 min)\n10\t python run.py serve [port] # démarre l'API + le frontend (défaut 8080)\n11\t\"\"\"\n12\tfrom __future__ import annotations\n13\t\n14\timport os\n15\timport sys\n16\tfrom pathlib import Path\n17\t\n18\t# Charger .env (FIRECRAWL_API_KEY, etc.) sans dépendance externe\n19\t_env = Path(__file__).parent / \".env\"\n20\tif _env.exists():\n21\t for line in _env.read_text().splitlines():\n22\t line = line.strip()\n23\t if line and not line.startswith(\"#\") and \"=\" in line:\n24\t k, _, v = line.partition(\"=\")\n25\t os.environ.setdefault(k.strip(), v.strip())\n26\t\n27\t\n28\tdef main() -> None:\n29\t cmd = sys.argv[1] if len(sys.argv) > 1 else \"serve\"\n30\t if cmd == \"sync\":\n31\t from autoka import ingest\n32\t ingest.run(sys.argv[2:] or None)\n33\t elif cmd == \"watch\":\n34\t from autoka import ingest\n35\t minutes = int(sys.argv[2]) if len(sys.argv) > 2 else 120\n36\t ingest.watch(minutes * 60)\n37\t elif cmd == \"serve\":\n38\t import uvicorn\n39\t port = int(sys.argv[2]) if len(sys.argv) > 2 else 8080\n40\t uvicorn.run(\"autoka.web:app\", host=\"0.0.0.0\", port=port)\n41\t else:\n42\t print(__doc__)\n43\t sys.exit(1)\n44\t\n45\t\n46\tif __name__ == \"__main__\":\n47\t main()\n48\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n"}]},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"08431bf4-6c13-4d41-8d47-464006569e0f","timestamp":"2026-08-25T14:16:52.297Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"aa77f553c30839219","tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","description":"Running wc -l /Users/simon-pierreboucher/auto-ka/autoka/c…","usage":{"total_tokens":56563,"tool_uses":25,"duration_ms":26289},"last_tool_name":"Bash","uuid":"8189e5e8-ab56-4940-8ee8-4cd40e15f3c2","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcHyENJ58WoWzuDp2Ha","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01QcfpGgF64kUM8kbbfNUBRq","name":"Bash","input":{"command":"wc -l /Users/simon-pierreboucher/auto-ka/autoka/connectors/*.py | tail -1"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":6,"cache_creation_input_tokens":513,"cache_read_input_tokens":55953,"cache_creation":{"ephemeral_5m_input_tokens":513,"ephemeral_1h_input_tokens":0},"output_tokens":7,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"a6adce7e-5dfb-43e0-ae45-d296a620f91a"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01QcfpGgF64kUM8kbbfNUBRq","type":"tool_result","content":" 8557 total","is_error":false}]},"parent_tool_use_id":"toolu_01HMWZDHqkiijKTXuz798PH5","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"e43d361a-2798-4948-acc4-cd8a204f6875","timestamp":"2026-08-25T14:16:52.522Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"a6781332982e4f0b5","tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","description":"Running find /Users/simon-pierreboucher/auto-ka/autoka -t…","usage":{"total_tokens":47629,"tool_uses":20,"duration_ms":17849},"last_tool_name":"Bash","uuid":"c40c6465-c0a6-42d5-bcba-a5c3d23e8696","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcJ5okqSvDoqEhRFBNp","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01XaLmkysCtxQHr9kghVZzyE","name":"Bash","input":{"command":"find /Users/simon-pierreboucher/auto-ka/autoka -type f -name \"web.py\""},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":6,"cache_creation_input_tokens":786,"cache_read_input_tokens":46679,"cache_creation":{"ephemeral_5m_input_tokens":786,"ephemeral_1h_input_tokens":0},"output_tokens":25,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"bd181b42-b720-4644-9792-d23cc0fb27c1"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01XaLmkysCtxQHr9kghVZzyE","type":"tool_result","content":"/Users/simon-pierreboucher/auto-ka/autoka/web.py","is_error":false}]},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"d1c5ff9d-7242-45a7-b565-e52ea066eb90","timestamp":"2026-08-25T14:16:53.260Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"a6781332982e4f0b5","tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","description":"Running head -100 /Users/simon-pierreboucher/auto-ka/auto…","usage":{"total_tokens":47762,"tool_uses":21,"duration_ms":19198},"last_tool_name":"Bash","uuid":"3e587570-5afe-47b8-b446-c54d3b3b1a4b","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcJBjhfhZh4of7m2ige","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01RzDTT9vfuEmqEr8MkrfvD7","name":"Bash","input":{"command":"head -100 /Users/simon-pierreboucher/auto-ka/autoka/web.py"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":6,"cache_creation_input_tokens":109,"cache_read_input_tokens":47465,"cache_creation":{"ephemeral_5m_input_tokens":109,"ephemeral_1h_input_tokens":0},"output_tokens":24,"service_tier":"standard","inference_geo":"not_available"},"context_management":null},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"a3dd5eb9-98c9-421b-bd41-db7b33c4c81f"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01RzDTT9vfuEmqEr8MkrfvD7","type":"tool_result","content":"# -----------------------------------------------------------------------------\n# Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n# Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n# web.py : API FastAPI (JSON) + service du frontend React (frontend/dist)\n# -----------------------------------------------------------------------------\nfrom __future__ import annotations\n\nimport json\nimport threading\nimport time\nfrom pathlib import Path\n\nfrom fastapi import BackgroundTasks, Body, FastAPI, HTTPException, Query\nfrom fastapi.middleware.cors import CORSMiddleware\nfrom fastapi.middleware.gzip import GZipMiddleware\nfrom fastapi.responses import FileResponse, RedirectResponse\nfrom fastapi.staticfiles import StaticFiles\n\nfrom . import auth, db, ingest, seo\n\nROOT = Path(__file__).resolve().parent.parent\nSOURCES_PATH = ROOT / \"data\" / \"sources.json\"\nFRONTEND_DIST = ROOT / \"frontend\" / \"dist\"\n\napp = FastAPI(title=\"Auto-Ka API\", version=\"1.0\",\n description=\"Agrégateur de voitures usagées — province de Québec\")\napp.add_middleware(CORSMiddleware, allow_origins=[\"*\"],\n allow_methods=[\"*\"], allow_headers=[\"*\"])\napp.add_middleware(GZipMiddleware, minimum_size=1000)\n\n_sync_lock = threading.Lock()\n\n\ndef _row_to_dict(row) -> dict:\n d = dict(row)\n d[\"features\"] = json.loads(d.get(\"features\") or \"[]\")\n d[\"images\"] = json.loads(d.get(\"images\") or \"[]\")\n d[\"details\"] = json.loads(d.get(\"details\") or \"{}\")\n # autres offres du même VIN (dédoublonnage inter-sources — autoka/dedup.py)\n if d.get(\"dup_sources\"):\n try:\n d[\"dup_sources\"] = json.loads(d[\"dup_sources\"])\n except ValueError:\n d[\"dup_sources\"] = []\n return d\n\n\ndef _apply_filters(sql: str, args: list, *, make=None, model=None, body_type=None,\n fuel=None, transmission=None, drivetrain=None, region=None,\n city=None, source=None, year_min=None, year_max=None,\n price_min=None, price_max=None, km_max=None, q=None) -> str:\n if make:\n sql += \" AND make=?\"; args.append(make)\n if model:\n sql += \" AND model LIKE ?\"; args.append(f\"{model}%\")\n if body_type:\n sql += \" AND body_type=?\"; args.append(body_type)\n if fuel:\n if fuel == \"Hybride\": # inclut l'hybride rechargeable\n sql += \" AND fuel IN ('Hybride','Hybride rechargeable')\"\n else:\n sql += \" AND fuel=?\"; args.append(fuel)\n if transmission:\n sql += \" AND transmission=?\"; args.append(transmission)\n if drivetrain:\n sql += \" AND drivetrain=?\"; args.append(drivetrain)\n if region:\n sql += \" AND region=?\"; args.append(region)\n if city:\n sql += \" AND city LIKE ?\"; args.append(f\"%{city}%\")\n if source:\n sql += \" AND source=?\"; args.append(source)\n if year_min is not None:\n sql += \" AND year IS NOT NULL AND year>=?\"; args.append(year_min)\n if year_max is not None:\n sql += \" AND year IS NOT NULL AND year<=?\"; args.append(year_max)\n if price_min is not None:\n sql += \" AND price IS NOT NULL AND price>=?\"; args.append(price_min)\n if price_max is not None:\n sql += \" AND price IS NOT NULL AND price<=?\"; args.append(price_max)\n if km_max is not None:\n sql += \" AND mileage_km IS NOT NULL AND mileage_km<=?\"; args.append(km_max)\n if q:\n sql += (\" AND (title LIKE ? OR make LIKE ? OR model LIKE ?\"\n \" OR dealer_name LIKE ? OR city LIKE ?)\")\n args += [f\"%{q}%\"] * 5\n return sql\n\n\n_SORTS = {\n \"price_asc\": \"price IS NULL, price ASC\",\n \"price_desc\": \"price IS NULL, price DESC\",\n \"km_asc\": \"mileage_km IS NULL, mileage_km ASC\",\n \"year_desc\": \"year IS NULL, year DESC\",\n \"recent\": \"first_seen DESC\",\n}\n\n\n@app.get(\"/api/vehicles\")\ndef list_vehicles(","is_error":false}]},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"9d68c275-0bad-48cc-9605-7b3b19aef3d6","timestamp":"2026-08-25T14:16:54.605Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"a6781332982e4f0b5","tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","description":"Searching for className=\"|\n31:
🚗
\n32:

Véhicule introuvable

\n34:

← Retour à la recherche

\n40:
\n41:
\n42:
\n43:
\n44:
\n70:
\n72: ← Retour à la recherche\n74:
\n75:
\n76: {v.dealer_name || v.source} — {v.city}{v.region ? ` · ${v.region}` : \"\"}\n77:

{v.title}

\n79:
\n80:
{fmtPrice(v.price)}
\n82:
{fmtPrice(prevPrice)}
\n87:
\n88:
\n89:
\n90:
\n96:
🚗
\n101:
\n117:
\n118:

📝 Description du concessionnaire

\n119:
{v.description}
\n124:
\n125:
\n126:

🔧 Caractéristiques

\n127: \n137: \n142: className=\"cta-source\"\n151:
\n157:
\n158:

✨ Équipements ({v.features.length})

\n159:
\n161: {f}\n168:
\n169:

📉 Historique de prix

\n170:
\n178:
\n188:
\n189:

ℹ️ Suivi Auto-Ka

\n190:
\n202:
\n203: Comparer\n204:

\n207:
"}]},"parent_tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"12232d2a-15b6-47f5-9dae-f86070cb0091","timestamp":"2026-08-25T14:16:56.919Z"}} {"type":"claude","event":{"type":"system","subtype":"task_progress","task_id":"a6781332982e4f0b5","tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","description":"Running grep -n \"import.*Chart\\|import.*Map\\|import.*Leaf…","usage":{"total_tokens":50086,"tool_uses":23,"duration_ms":23007},"last_tool_name":"Bash","uuid":"9d7bd039-c5c4-427d-9a8a-f210f5820a49","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-haiku-4-5-20251001","id":"msg_011CePcJRaPaWbt85EH3Empw","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_0132Ci2s9WeEvwUBz1KQPz3T","name":"Bash","input":{"command":"grep -n \"import.*Chart\\|import.*Map\\|import.*Leaflet\\| list[Vehicle] # implémentation obligatoire\n get(url) -> requests.Response # GET avec throttling + retry\n get_rendered(url) -> str # JS via Firecrawl\n get_scrapfly(url, render_js) -> str # Anti-bot ASP + rendu JS optionnel\n detail(external_id, key, fetch_fn) # Cache BD des pages détail\n```\n\n**Enregistrement auto-découvrant** (`autoka/connectors/__init__.py:17-30`):\n- Chaque module contenant une sous-classe `BaseConnector` avec `source_id` non-vide est automatiquement enregistré dans `CONNECTORS` dict\n- Aucun fichier partagé à modifier : connecteur = nouveau fichier `.py`\n\n**Résilience anti-bot** (`autoka/connectors/_resilient.py:278-318`):\n- Chaîne de secours à escalade : Direct → Oxylabs résidentiel (CA) → Scrapfly ASP → Bright Data WebUnlocker\n- Enrobage transparent du `.get()` (wrapper décorant `BaseConnector.get`), zéro change du code connecteur\n- Coupe-circuit par hôte (15 min de repos après 3 échecs totaux) pour économiser quota payant\n\n### 3. Pipeline d'Ingestion\n\n**`autoka/ingest.py:17-56`**:\n1. Boucle : pour chaque source dans `CONNECTORS.keys()`, appel `cls().fetch()` → liste `Vehicle`\n2. Finalize : `veh.finalize()` applique normalisation commune (prix, km, année/marque/modèle déduits du titre, transmission/fuel/drivetrain/body canoniques, région admin)\n3. Sync : `db.sync_source(con, source, vehicles)` → INSERT/UPDATE/DELETE avec détection changements (content_hash)\n4. Dédup VIN : `dedup.recompute(con)` après ingestion complète\n\n**Normalisation** (`autoka/normalize.py`): regex pour prix (format US/FR/baré), kilométrage (km, KM, KMS), année (1980-2027), transmission/fuel/drivetrain/carrosserie canoniques, région administrative depuis ville.\n\n### 4. Liste des 34 Connecteurs (par technique)\n\n**APIs JSON directs / Portails SSR (HTML embarquant JSON)**:\n- **AutoTrader** (portail national, Next.js): JSON `__NEXT_DATA__` liste → 2086 annonces, 0 VIN, description riche, 94% images\n- **HGrégoire** (73 pages, JSON-LD par carte): VIN/stock complet, richesse maximale, 100% images\n- **D2C Media** (88 concess. sur plateforme): JSON-LD + sitemap, galerie HTML parsée, JSON `/js/json/` pour options, carfax, cache v3\n- **Kijiji** (petites annonces): 3081 annonces, VIN riche (21%), 99.7% images, description complète\n- **CarGurus, AutoUSAGEE**: JSON APIs ou portails\n\n**Dealers individuels (38 connecteurs D2C/D2C/SM360/Convertus/etc.)**:\n- Connecteurs identiques pour chaque concessionnaire sur plateforme commune (framework mutualisé)\n- Techniques : JSON-LD, sitemap XML, pages détail avec galerie CDN\n- Richesse variable : `otogo` (10k listings, 100% images, 99% VIN), `leprixdugros` (0 VIN extrait), `autousagee` (52% VIN, description textuelle)\n\n**Données vives** (59 260 actives, 137 sources):\n- Top 5: otogo (23.9k), autousagee (11.9k), kijiji (3.1k), autotrader (2.1k), hgregoire (1.7k)\n- VIN: otogo/HGrégoire/D2C quasi 100%, autotrader/leprixdugros 0%\n- Images: 96-100% partout, kijiji 99.7% (la plupart avec galerie riche)\n\n### 5. Enrichissements Existants\n\n**`autoka/recalls.py`**: Dump CSV Transports Canada, table `recalls`, croisement (make, model, year) exact + alias make (MERCEDES-BENZ ↔ MERCEDES)\n- Endpoint web: `/api/vehicles/{uid}/recalls` → liste rappels TC pour marque/modèle/année\n\n**`autoka/dealers.py`**: JSON-LD extraction (schema.org/AutoDealer), regex adresse (code postal CA), tel:, cache one-shot\n- Table `dealers` : source, adresse, GPS, téléphone\n- Endpoint: `/api/dealers` → liste concessionnaires\n\n**`autoka/dedup.py`**: VIN 17-char, groupes VIN identiques, élection annonce canonique (autorité source > complétude > ancienneté), masquage doublons inter-sources\n- Colonnes BD: `dup_of` (uid canonique), `dup_sources` (JSON autres offres)\n- Données: 59.26k actives, groupes VIN identifiés\n\n**`autoka/marketstats.py`**: Agrégats marché (histogrammes prix/km/année, médiane, par marque/région/carrosserie, leaders)\n- Endpoint: `/api/stats/detailed` → JSON complet\n\n### 6. API Web — Endpoints Détail\n\n**`autoka/web.py:146-169`** : `GET /api/vehicles/{uid}`\n```json\n{\n \"uid\": \"source:external_id\",\n \"title\", \"year\", \"make\", \"model\", \"trim\",\n \"price\", \"mileage_km\", \"transmission\", \"fuel\", \"drivetrain\", \"body_type\",\n \"exterior_color\", \"interior_color\", \"engine\", \"doors\", \"seats\", \"vin\", \"stock_number\",\n \"dealer_name\", \"city\", \"region\", \"lat\", \"lng\", \"url\",\n \"description\", \"features\" (array), \"images\" (array), \"details\" (object),\n \"carfax_url\",\n \"price_history\": [{\"ts\", \"price\"}], // 10 derniers changements prix\n \"similar\": [...] // 6 même marque+modèle, autres sources\n}\n```\n\n**JSON fields** : images/features/details parsés depuis stockage `TEXT/JSON` en BD\n\n---\n\n**Synthèse upgrade** :\n- **Schéma extensible** : champs `details` (dict) et `features` (liste texte) déjà en place\n- **VIN omniprésent** : 100% HGrégoire/D2C, ~50-99% autres, **dédup VIN actif**\n- **Galeries riches** : 96-100% des annonces, déjà stockées `images[]` URLs\n- **Description/équipements** : parsés varies (D2C enrichit options, HGrégoire page détail), parsés dans `description` + `details{}`\n- **Cache détail** : mécanique `detail()` en place (clé hash liste, fetch_fn optionnel)\n\nPour le major upgrade, axes d'enrichissement : VIN → historique owner (Carfax/CarProof/CCC), options/équipements structurés dans `details{}`, galerie → métadonnées (couleur véhicule déduite, intérieur)."}]}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"0ed2757c-e867-49ad-9994-f749befbdb1a","timestamp":"2026-08-25T14:17:21.383Z","tool_use_result":{"status":"completed","prompt":"Explore le backend Python du projet /Users/simon-pierreboucher/auto-ka (agrégateur d'annonces de voitures usagées au Québec). Thoroughness: very thorough.\n\nJe prépare un \"major upgrade\" : enrichir les connecteurs et améliorer la page détail d'une annonce. J'ai besoin de comprendre :\n\n1. **Schéma de données** (autoka/schema.py, autoka/db.py) : quels champs existe-t-il pour une annonce (Listing) ? Lesquels sont optionnels/rarement remplis ? Structure de la DB (SQLite ?).\n2. **Architecture connecteurs** (autoka/connectors/base.py, __init__.py, _resilient.py) : comment un connecteur est écrit, quelle interface, comment il est enregistré, comment l'ingestion fonctionne (autoka/ingest.py, normalize.py, dedup.py).\n3. **Liste des connecteurs existants** : pour chaque fichier dans autoka/connectors/, résume en 1 ligne la source et la technique (API JSON, HTML, Scrapfly…). Note lesquels extraient beaucoup de champs riches (photos multiples, VIN, carfax, options/équipements, description) vs lesquels sont minimalistes.\n4. **Enrichissements existants** : autoka/recalls.py, marketstats.py, dealers.py, seo.py — que font-ils ? Y a-t-il déjà des enrichissements par VIN (rappels, historique) ?\n5. **API web** (autoka/web.py) : quels endpoints servent la page détail d'une annonce ? Quel JSON est renvoyé pour une annonce individuelle ?\n6. Regarde la DB live si possible : `sqlite3 \".tables\"` et compte des annonces par source, et le taux de remplissage des champs riches (photos, vin, description, options) — ex: SELECT source, COUNT(*) FROM listings GROUP BY source; et taux de NULL sur vin/description.\n\nRapport structuré, avec chemins de fichiers et numéros de ligne pour les points clés (interface connecteur, modèle Listing, endpoint détail). Max ~800 mots.","agentId":"aa77f553c30839219","agentType":"Explore","content":[{"type":"text","text":"---\n\n## RAPPORT : Architecture & Schéma de Données Auto-Ka\n\n### 1. Schéma de Données (Vehicle)\n\n**Modèle Listing** (`autoka/schema.py:44-154`):\n- **Identifiants**: `source` (ID source), `external_id` (ID chez le vendeur), `uid` (composé), `url`\n- **Véhicule**: `year`, `make`, `model`, `trim`, `title`\n- **Prix/Kilométrage**: `price` (float), `price_label` (texte brut), `mileage_km`, `mileage_label`\n- **Specs motricité**: `transmission`, `fuel`, `drivetrain`, `body_type`\n- **Détails**: `exterior_color`, `interior_color`, `engine`, `doors`, `seats`, `vin`, `stock_number`\n- **Localisation**: `dealer_name`, `city`, `region` (déduit de city), `lat`, `lng` (GPS)\n- **Contenu riche**: `description`, `features` (liste texte), `images` (URLs), `carfax_url`\n- **Métadonnées structurées**: `details` (dict JSON), `kind` (\"auto\"|\"moto\"|\"scooter\")\n\n**DB SQLite** (`autoka/db.py:31-107`):\n- Table `vehicles` (32 colonnes + indices) : colonnes post-v1 (`lat/lng`, `dup_of/dup_sources`, `kind`) migrées automatiquement\n- Tables support: `sync_log` (historique syncs), `detail_cache` (cache pages détail), `price_log` (historique prix)\n- **Pas de champs VIN/Description NULL détectés** : 0 NULL sur 59 260 actives (db.py:19 = `/Users/simon-pierreboucher/auto-ka/data/autoka.db`)\n\n### 2. Architecture Connecteurs\n\n**Interface BaseConnector** (`autoka/connectors/base.py:24-141`):\n```python\nclass BaseConnector:\n source_id: str = \"\" # doit être défini par sous-classe\n fetch() -> list[Vehicle] # implémentation obligatoire\n get(url) -> requests.Response # GET avec throttling + retry\n get_rendered(url) -> str # JS via Firecrawl\n get_scrapfly(url, render_js) -> str # Anti-bot ASP + rendu JS optionnel\n detail(external_id, key, fetch_fn) # Cache BD des pages détail\n```\n\n**Enregistrement auto-découvrant** (`autoka/connectors/__init__.py:17-30`):\n- Chaque module contenant une sous-classe `BaseConnector` avec `source_id` non-vide est automatiquement enregistré dans `CONNECTORS` dict\n- Aucun fichier partagé à modifier : connecteur = nouveau fichier `.py`\n\n**Résilience anti-bot** (`autoka/connectors/_resilient.py:278-318`):\n- Chaîne de secours à escalade : Direct → Oxylabs résidentiel (CA) → Scrapfly ASP → Bright Data WebUnlocker\n- Enrobage transparent du `.get()` (wrapper décorant `BaseConnector.get`), zéro change du code connecteur\n- Coupe-circuit par hôte (15 min de repos après 3 échecs totaux) pour économiser quota payant\n\n### 3. Pipeline d'Ingestion\n\n**`autoka/ingest.py:17-56`**:\n1. Boucle : pour chaque source dans `CONNECTORS.keys()`, appel `cls().fetch()` → liste `Vehicle`\n2. Finalize : `veh.finalize()` applique normalisation commune (prix, km, année/marque/modèle déduits du titre, transmission/fuel/drivetrain/body canoniques, région admin)\n3. Sync : `db.sync_source(con, source, vehicles)` → INSERT/UPDATE/DELETE avec détection changements (content_hash)\n4. Dédup VIN : `dedup.recompute(con)` après ingestion complète\n\n**Normalisation** (`autoka/normalize.py`): regex pour prix (format US/FR/baré), kilométrage (km, KM, KMS), année (1980-2027), transmission/fuel/drivetrain/carrosserie canoniques, région administrative depuis ville.\n\n### 4. Liste des 34 Connecteurs (par technique)\n\n**APIs JSON directs / Portails SSR (HTML embarquant JSON)**:\n- **AutoTrader** (portail national, Next.js): JSON `__NEXT_DATA__` liste → 2086 annonces, 0 VIN, description riche, 94% images\n- **HGrégoire** (73 pages, JSON-LD par carte): VIN/stock complet, richesse maximale, 100% images\n- **D2C Media** (88 concess. sur plateforme): JSON-LD + sitemap, galerie HTML parsée, JSON `/js/json/` pour options, carfax, cache v3\n- **Kijiji** (petites annonces): 3081 annonces, VIN riche (21%), 99.7% images, description complète\n- **CarGurus, AutoUSAGEE**: JSON APIs ou portails\n\n**Dealers individuels (38 connecteurs D2C/D2C/SM360/Convertus/etc.)**:\n- Connecteurs identiques pour chaque concessionnaire sur plateforme commune (framework mutualisé)\n- Techniques : JSON-LD, sitemap XML, pages détail avec galerie CDN\n- Richesse variable : `otogo` (10k listings, 100% images, 99% VIN), `leprixdugros` (0 VIN extrait), `autousagee` (52% VIN, description textuelle)\n\n**Données vives** (59 260 actives, 137 sources):\n- Top 5: otogo (23.9k), autousagee (11.9k), kijiji (3.1k), autotrader (2.1k), hgregoire (1.7k)\n- VIN: otogo/HGrégoire/D2C quasi 100%, autotrader/leprixdugros 0%\n- Images: 96-100% partout, kijiji 99.7% (la plupart avec galerie riche)\n\n### 5. Enrichissements Existants\n\n**`autoka/recalls.py`**: Dump CSV Transports Canada, table `recalls`, croisement (make, model, year) exact + alias make (MERCEDES-BENZ ↔ MERCEDES)\n- Endpoint web: `/api/vehicles/{uid}/recalls` → liste rappels TC pour marque/modèle/année\n\n**`autoka/dealers.py`**: JSON-LD extraction (schema.org/AutoDealer), regex adresse (code postal CA), tel:, cache one-shot\n- Table `dealers` : source, adresse, GPS, téléphone\n- Endpoint: `/api/dealers` → liste concessionnaires\n\n**`autoka/dedup.py`**: VIN 17-char, groupes VIN identiques, élection annonce canonique (autorité source > complétude > ancienneté), masquage doublons inter-sources\n- Colonnes BD: `dup_of` (uid canonique), `dup_sources` (JSON autres offres)\n- Données: 59.26k actives, groupes VIN identifiés\n\n**`autoka/marketstats.py`**: Agrégats marché (histogrammes prix/km/année, médiane, par marque/région/carrosserie, leaders)\n- Endpoint: `/api/stats/detailed` → JSON complet\n\n### 6. API Web — Endpoints Détail\n\n**`autoka/web.py:146-169`** : `GET /api/vehicles/{uid}`\n```json\n{\n \"uid\": \"source:external_id\",\n \"title\", \"year\", \"make\", \"model\", \"trim\",\n \"price\", \"mileage_km\", \"transmission\", \"fuel\", \"drivetrain\", \"body_type\",\n \"exterior_color\", \"interior_color\", \"engine\", \"doors\", \"seats\", \"vin\", \"stock_number\",\n \"dealer_name\", \"city\", \"region\", \"lat\", \"lng\", \"url\",\n \"description\", \"features\" (array), \"images\" (array), \"details\" (object),\n \"carfax_url\",\n \"price_history\": [{\"ts\", \"price\"}], // 10 derniers changements prix\n \"similar\": [...] // 6 même marque+modèle, autres sources\n}\n```\n\n**JSON fields** : images/features/details parsés depuis stockage `TEXT/JSON` en BD\n\n---\n\n**Synthèse upgrade** :\n- **Schéma extensible** : champs `details` (dict) et `features` (liste texte) déjà en place\n- **VIN omniprésent** : 100% HGrégoire/D2C, ~50-99% autres, **dédup VIN actif**\n- **Galeries riches** : 96-100% des annonces, déjà stockées `images[]` URLs\n- **Description/équipements** : parsés varies (D2C enrichit options, HGrégoire page détail), parsés dans `description` + `details{}`\n- **Cache détail** : mécanique `detail()` en place (clé hash liste, fetch_fn optionnel)\n\nPour le major upgrade, axes d'enrichissement : VIN → historique owner (Carfax/CarProof/CCC), options/équipements structurés dans `details{}`, galerie → métadonnées (couleur véhicule déduite, intérieur)."}],"totalDurationMs":55186,"totalTokens":59065,"totalToolUseCount":25,"usage":{"input_tokens":6,"cache_creation_input_tokens":132,"cache_read_input_tokens":56466,"output_tokens":2461,"server_tool_use":{"web_search_requests":0,"web_fetch_requests":0},"service_tier":"standard","cache_creation":{"ephemeral_1h_input_tokens":0,"ephemeral_5m_input_tokens":132},"inference_geo":"","iterations":[{"input_tokens":6,"output_tokens":2461,"cache_read_input_tokens":56466,"cache_creation_input_tokens":132,"cache_creation":{"ephemeral_5m_input_tokens":132,"ephemeral_1h_input_tokens":0},"type":"message"}],"speed":"standard"},"toolStats":{"readCount":15,"searchCount":1,"bashCount":9,"editFileCount":0,"linesAdded":0,"linesRemoved":0,"otherToolCount":0}}}} {"type":"claude","event":{"type":"system","subtype":"task_notification","task_id":"a6781332982e4f0b5","tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","status":"completed","output_file":"","summary":"Explorer page détail frontend","usage":{"total_tokens":50359,"tool_uses":23,"duration_ms":61111},"uuid":"5c0c3545-90a8-4a5e-8c9f-354f9c87d97d","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_015F7DsyVCzdiEThUyHj1REn","type":"tool_result","content":[{"type":"text","text":"Parfait. J'ai tout ce qu'il me faut. Maintenant je rédige le rapport.\n\n---\n\n## RAPPORT D'EXPLORATION : Frontend Auto-Ka\n\n### 1. STRUCTURE GÉNÉRALE\n\n**Framework:** React 18 + TypeScript + Vite 5 (avec routing react-router-dom v6.26) \n**Build:** `vite build` → `/frontend/dist/` servi par **FastAPI** (autoka/web.py) \n**Service:** `python run.py serve [port]` lance Uvicorn sur le port 8080, expose `/api/*` + statique frontend via `app.mount(\"/\", StaticFiles(directory=FRONTEND_DIST))`\n\n**CSS:**\n- Socle: `/ka/tokens.css` (Design system Groupe Ka commun à 12 sites) — Variables racine, typo fluide, ombres décalées, breakpoints 360/768/1024/1440px\n- Surcharge: `/styles.css` — Accent Auto-Ka orange brûlé `#ff5a2a`, classes métier\n\n**Routing (App.tsx:255-283):**\n- `/` → Home (autos), `/motos`, `/scooters` → Home avec `kind`\n- `/vehicule/:uid` + `/vehicule/:uid/:slug` → **VehiclePage** ← PAGE À UPGRADER\n\n---\n\n### 2. PAGE DÉTAIL ACTUELLE : Vehicle.tsx (numéros de lignes clés)\n\n**Chemin:** `/Users/simon-pierreboucher/auto-ka/frontend/src/pages/Vehicle.tsx`\n\n**DOM du rendu (ordre strict, lignes 70-213):**\n\n| # | Section | Lignes | Description | Éléments affichés |\n|---|---------|--------|-------------|-------------------|\n| 1 | **En-tête** | 70-85 | Dealer + titre + prix | Kicker (source · ville · région), H1, prix courant + prix précédent si baisse |\n| 2 | **COLONNE GAUCHE** | | Grid 2 cols (lg) → 1 col (sm), gap 28px | |\n| 3a | Galerie photos | 89-114 | Containeur `.gallery` border 2px | Main (img aspect 4:3 + alt click), Thumbs (img 84×60px, sélect clique setImg), FavButton (cœur) |\n| 3b | Description dealer | 116-121 | `.panel` si `v.description` exists | H3 \"📝 Description\", `
` pre-line |\n| 4 | **COLONNE DROITE** | | Verticale, flex gap 18px | |\n| 4a | Caractéristiques | 125-154 | `.panel` | Table 2 cols (label / valeur), 13 specs filtrés (année, km, transm, carburant, motricité, carrosserie, moteur, couleurs, portes, places, VIN, stock), CTA \"Voir chez X\" + Carfax link si existe |\n| 4b | Équipements | 156-165 | `.panel` si `v.features.length > 0` | H3 \"✨ Équipements ({count})\", chips inline avec scroll-y max-height 340px |\n| 4c | Historique prix | 167-186 | `.panel` si price_history.length > 1 | Rows avec date + prix, CSS arrows colorées (`.up` danger, `.down` good) |\n| 4d | Suivi Auto-Ka | 188-197 | `.panel` fixe | Table : \"Repéré le\", \"Vérifié le\", \"Statut\" (En vente / Retiré) |\n| 5 | **SIMILAIRES** | 201-213 | Section full-width | H2 \"Make Model similaires au Québec\", VehicleCard grid auto-fill 285px min |\n\n---\n\n### 3. DONNÉES AFFICHÉES vs DISPONIBLES\n\n**Interface VehicleDetail (api.ts:46-49):**\n- `Vehicle` base + `price_history: { ts, price }[]` + `similar: Vehicle[]`\n\n**Affichées dans Vehicle.tsx:**\n- ✅ Galerie (images)\n- ✅ Prix actuel + historique visuel\n- ✅ Specs : année, km, transm, carburant, motricité, carross, moteur, couleurs ext/int, portes, places, VIN, stock\n- ✅ Description dealer (text pre-line)\n- ✅ Équipements/features (chips)\n- ✅ Métadonnées (first_seen, updated_at, active)\n- ✅ CTA dealer + Carfax (si existe)\n- ✅ Similaires (grille)\n\n**NON affichées ou affichées pauvrement:**\n- ❌ **Trim** (v.trim — listé mais jamais rendu)\n- ❌ **Dealer_name** et **source** — affichés en kicker seulement, pas de card complète dealer\n- ❌ **region/city** — kicker + foot cards uniquement\n- ❌ **price_label / mileage_label** — jamais utilisés\n- ❌ **details** (Record) — chargé mais vide (à moins que les connecteurs le remplissent)\n- ❌ **Carte** (localisation quartier/région)\n- ❌ **Analyses/graphiques de prix** (comparaison par marque/région) — n'existe qu'en page /stats\n- ❌ **Badges « Bon prix/Marché »** — logique existe (--good #1c7a4d) mais pas intégrée à Vehicle.tsx\n- ❌ **KA Scores** — ni composant ni données\n- ❌ **Section quartier** — n'existe pas\n\n---\n\n### 4. COMPOSANTS RÉUTILISABLES EXISTANTS\n\n| Composant | Fichier | Usage | Fonctionnalité |\n|-----------|---------|-------|-----------------|\n| **VehicleCard** | components/VehicleCard.tsx | Grille résultats + similaires | Photo aspect 4:3, titre, prix, 4 specs max, dealer/ville, FavButton |\n| **FavButton** | components/FavButton.tsx | Coin bas-droit galerie + cards | Cœur toggle → API `/api/favorites/toggle`, intégre \"Mon univers Ka\" (Groupe Ka) |\n| **Charts** | components/Charts.tsx (100+ lignes) | Stats.tsx seulement | VBars (histogramme), HBars (barres H), Donut (camembert), tooltips, tables repliables, palette 6 couleurs validées daltonisme |\n| **GroupeKaBadge** | ka/GroupeKaBadge.tsx | Header + mobile | Badge \"Un service Groupe Ka\" petit texte + logo |\n| **KaFooter** | ka/KaFooter.tsx | Bas page | Footer commun groupe, signature site, borders accent |\n\n**Manquent:**\n- Lightbox photos (lien ouvrt `target=\"_blank\"` sur img, pas de modale)\n- Galerie swipe (thumbs click-select seulement, pas de navigation clavier/gestes)\n- Carte Leaflet ou similaire\n\n---\n\n### 5. STYLE : Variables CSS & Conventions\n\n**Fichier principal CSS:** `/frontend/src/styles.css` (lignes 1-10 : import et commenta)\n\n**Palette Auto-Ka (surchargée dans :root, lines 11-23):**\n```css\n--accent: #ff5a2a /* orange brûlé — ACCENT DU SITE */\n--accent-soft: #ffe8de\n--accent-deep: #cc3f16\n--on-accent: #ffffff\n--good: #1c7a4d /* vert bon prix */\n--good-soft: #e2f4e9\n```\n\n**Socle Groupe Ka (ka/tokens.css, immuable):**\n```css\n--paper: #f5f3ee (fond page)\n--surface: #ffffff\n--ink: #141814\n--font-display: Space Grotesk (titres H1-H3)\n--font-body: Inter (corps)\n--font-mono: JetBrains Mono (labels, data)\n--r-card: 10px\n--shadow-off: 6px 6px 0 var(--ink) /* signature */\n```\n\n**Dark/Light mode:** Aucun mode dark activé (pas de `prefers-color-scheme` override).\n\n**Page détail spécifique (styles.css:239-297):**\n```css\n.vdetail { padding: 34px 0 60px; }\n.vd-head { display: flex; gap: 16px; flex-wrap: wrap; } /* titre + prix côte à côte → stack mobile */\n.vd-cols { grid-template-columns: minmax(0, 1.6fr) minmax(280px, 1fr); gap: 28px; }\n @media (max-width: 900px) { grid-template-columns: 1fr; }\n.gallery { aspect-ratio 4/3; border 2px solid var(--ink); }\n.panel { border 2px solid var(--ink); border-radius: var(--r-card); padding: 18px 20px; }\n```\n\n**Pas de propriété `order:` CSS** → DOM = ordre visuel ✅\n\n---\n\n### 6. STANDARD ORDRE SECTIONS (Groupe Ka) vs ACTUEL\n\n**Standard attendu (par vous):**\n```\n1. Galerie → 2. Prix/badge → 3. Description → 4. Inclusions → 5. Détails → \n6. Analyses → 7. Carte → 8. Scores → 9. Quartier\n```\n\n**Ordre ACTUEL Vehicle.tsx (DOM = visuel, pas de `order:`):**\n```\n✅ 1. En-tête (kicker + titre + prix)\n✅ 2. Galerie (left col)\n✅ 3. Description dealer (left col, bas)\n❌ → Manque : badge \"Bon prix\"\n✅ 4. Caractéristiques (right col)\n✅ 5. Équipements (right col)\n❌ 6. Historique prix (visuel simple, pas graphique)\n❌ 7. Métadonnées Auto-Ka (suivi, pas \"analyses\")\n❌ MANQUE : Carte\n❌ MANQUE : Scores (KA Scores n'existe pas)\n❌ MANQUE : Section quartier (analysis régionale/demo)\n✅ 10. Similaires (full-width)\n```\n\n**Verdict:** Ordre DOM respecte la logique de grille 2 cols, mais manquent **3 sections majeures** (badges, carte, analyses/scores/quartier).\n\n---\n\n### 7. BUILD & DÉPLOIEMENT\n\n**Pipeline:**\n1. **Frontend build:** `cd frontend && npm run build` → TypeScript compilation + Vite → `/frontend/dist/`\n2. **Backend serve:** `python run.py serve` → Uvicorn démarre FastAPI\n3. **StaticFiles:** FastAPI monte `/dist` sur `/` (index.html SPA, assets + JS versionnés)\n4. **API proxy (dev):** Vite config line 11-14 reroute `/api/*` vers `http://localhost:8080` en dev\n\n**En prod:** Frontend servi comme assets statiques par FastAPI (pas de `/api` proxy, calls directes au backend depuis navigateur).\n\n---\n\n## RÉSUMÉ : STATE ACTUEL vs MAJOR UPGRADE\n\n### Ce qui existe et est solide:\n- ✅ React + TS + Vite → build rapide\n- ✅ Galerie avec thumbs (aspect 4:3, lazy-load)\n- ✅ Table specs complète (13 champs)\n- ✅ Favs intégrés (SSO Groupe Ka)\n- ✅ Historique prix (visuel simple, dates + arrows)\n- ✅ Responsive (2 cols → 1 col @ 900px)\n- ✅ Design Groupe Ka appliqué (tokens.css + tokens auto-ka)\n\n### Brèches à combler pour major upgrade:\n1. **Galerie:** Ajouter lightbox modale + swipe clavier\n2. **Badges de prix:** Logique \"Bon prix/Marché\" (CSS existe `--good`) → intégrer dans header\n3. **Carte:** Localisation dealer/quartier (Leaflet ou simple)\n4. **Analyses visuelles:** Graphiques prix par région/marque (Charts.tsx existe, réutiliser)\n5. **Scores KA:** Data model + affichage (n'existe pas)\n6. **Section quartier:** Demographics, indices, drill-down\n\n**Chemins clés à modifier:**\n- `/frontend/src/pages/Vehicle.tsx` (structure, 217 lignes)\n- `/frontend/src/styles.css` (layout `.vdetail`, `.vd-cols`, sections nouvelles)\n- Potentiels nouveaux composants `/frontend/src/components/{GalleryLightbox,PriceAnalysis,Map,ScoreCard}.tsx`"}]}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"e11b4b00-337f-4a8d-a40c-13c024ab17b3","timestamp":"2026-08-25T14:17:36.496Z","tool_use_result":{"status":"completed","prompt":"Explore le frontend du projet /Users/simon-pierreboucher/auto-ka/frontend (Vite + TypeScript, agrégateur d'annonces autos usagées Québec, style \"Groupe Ka\"). Thoroughness: very thorough.\n\nJe prépare un \"major upgrade\" de la page détail d'une annonce individuelle (fiche véhicule). J'ai besoin de :\n\n1. **Structure** : framework (React? vanilla?), routing, fichiers principaux dans src/.\n2. **Page détail actuelle** : trouve le composant/fichier qui affiche une annonce individuelle. Décris PRÉCISÉMENT sa structure actuelle : sections dans l'ordre (galerie, prix, specs, description, carte, scores…), quelles données de l'annonce il affiche, et lesquelles des données disponibles il N'affiche PAS ou affiche pauvrement.\n3. **Composants réutilisables** : galerie photo (lightbox ? swipe ?), carte (Leaflet ?), graphiques/analyses de prix, badges \"bon prix/marché\", KA Scores, section quartier — qu'est-ce qui existe déjà ?\n4. **Style** : variables CSS, dark/light mode, conventions visuelles (fichier CSS principal).\n5. **Standard Groupe Ka ordre des sections** : vérifie si la page détail respecte l'ordre DOM = ordre visuel (galerie → prix/badge → description → inclusions → détails → analyses → carte → scores → quartier), pas de `order:` CSS entre breakpoints.\n6. Comment le build fonctionne (vite build → dist servi par FastAPI ?).\n\nRapport structuré avec chemins + numéros de ligne des sections clés de la page détail. Max ~800 mots.","agentId":"a6781332982e4f0b5","agentType":"Explore","content":[{"type":"text","text":"Parfait. J'ai tout ce qu'il me faut. Maintenant je rédige le rapport.\n\n---\n\n## RAPPORT D'EXPLORATION : Frontend Auto-Ka\n\n### 1. STRUCTURE GÉNÉRALE\n\n**Framework:** React 18 + TypeScript + Vite 5 (avec routing react-router-dom v6.26) \n**Build:** `vite build` → `/frontend/dist/` servi par **FastAPI** (autoka/web.py) \n**Service:** `python run.py serve [port]` lance Uvicorn sur le port 8080, expose `/api/*` + statique frontend via `app.mount(\"/\", StaticFiles(directory=FRONTEND_DIST))`\n\n**CSS:**\n- Socle: `/ka/tokens.css` (Design system Groupe Ka commun à 12 sites) — Variables racine, typo fluide, ombres décalées, breakpoints 360/768/1024/1440px\n- Surcharge: `/styles.css` — Accent Auto-Ka orange brûlé `#ff5a2a`, classes métier\n\n**Routing (App.tsx:255-283):**\n- `/` → Home (autos), `/motos`, `/scooters` → Home avec `kind`\n- `/vehicule/:uid` + `/vehicule/:uid/:slug` → **VehiclePage** ← PAGE À UPGRADER\n\n---\n\n### 2. PAGE DÉTAIL ACTUELLE : Vehicle.tsx (numéros de lignes clés)\n\n**Chemin:** `/Users/simon-pierreboucher/auto-ka/frontend/src/pages/Vehicle.tsx`\n\n**DOM du rendu (ordre strict, lignes 70-213):**\n\n| # | Section | Lignes | Description | Éléments affichés |\n|---|---------|--------|-------------|-------------------|\n| 1 | **En-tête** | 70-85 | Dealer + titre + prix | Kicker (source · ville · région), H1, prix courant + prix précédent si baisse |\n| 2 | **COLONNE GAUCHE** | | Grid 2 cols (lg) → 1 col (sm), gap 28px | |\n| 3a | Galerie photos | 89-114 | Containeur `.gallery` border 2px | Main (img aspect 4:3 + alt click), Thumbs (img 84×60px, sélect clique setImg), FavButton (cœur) |\n| 3b | Description dealer | 116-121 | `.panel` si `v.description` exists | H3 \"📝 Description\", `
` pre-line |\n| 4 | **COLONNE DROITE** | | Verticale, flex gap 18px | |\n| 4a | Caractéristiques | 125-154 | `.panel` | Table 2 cols (label / valeur), 13 specs filtrés (année, km, transm, carburant, motricité, carrosserie, moteur, couleurs, portes, places, VIN, stock), CTA \"Voir chez X\" + Carfax link si existe |\n| 4b | Équipements | 156-165 | `.panel` si `v.features.length > 0` | H3 \"✨ Équipements ({count})\", chips inline avec scroll-y max-height 340px |\n| 4c | Historique prix | 167-186 | `.panel` si price_history.length > 1 | Rows avec date + prix, CSS arrows colorées (`.up` danger, `.down` good) |\n| 4d | Suivi Auto-Ka | 188-197 | `.panel` fixe | Table : \"Repéré le\", \"Vérifié le\", \"Statut\" (En vente / Retiré) |\n| 5 | **SIMILAIRES** | 201-213 | Section full-width | H2 \"Make Model similaires au Québec\", VehicleCard grid auto-fill 285px min |\n\n---\n\n### 3. DONNÉES AFFICHÉES vs DISPONIBLES\n\n**Interface VehicleDetail (api.ts:46-49):**\n- `Vehicle` base + `price_history: { ts, price }[]` + `similar: Vehicle[]`\n\n**Affichées dans Vehicle.tsx:**\n- ✅ Galerie (images)\n- ✅ Prix actuel + historique visuel\n- ✅ Specs : année, km, transm, carburant, motricité, carross, moteur, couleurs ext/int, portes, places, VIN, stock\n- ✅ Description dealer (text pre-line)\n- ✅ Équipements/features (chips)\n- ✅ Métadonnées (first_seen, updated_at, active)\n- ✅ CTA dealer + Carfax (si existe)\n- ✅ Similaires (grille)\n\n**NON affichées ou affichées pauvrement:**\n- ❌ **Trim** (v.trim — listé mais jamais rendu)\n- ❌ **Dealer_name** et **source** — affichés en kicker seulement, pas de card complète dealer\n- ❌ **region/city** — kicker + foot cards uniquement\n- ❌ **price_label / mileage_label** — jamais utilisés\n- ❌ **details** (Record) — chargé mais vide (à moins que les connecteurs le remplissent)\n- ❌ **Carte** (localisation quartier/région)\n- ❌ **Analyses/graphiques de prix** (comparaison par marque/région) — n'existe qu'en page /stats\n- ❌ **Badges « Bon prix/Marché »** — logique existe (--good #1c7a4d) mais pas intégrée à Vehicle.tsx\n- ❌ **KA Scores** — ni composant ni données\n- ❌ **Section quartier** — n'existe pas\n\n---\n\n### 4. COMPOSANTS RÉUTILISABLES EXISTANTS\n\n| Composant | Fichier | Usage | Fonctionnalité |\n|-----------|---------|-------|-----------------|\n| **VehicleCard** | components/VehicleCard.tsx | Grille résultats + similaires | Photo aspect 4:3, titre, prix, 4 specs max, dealer/ville, FavButton |\n| **FavButton** | components/FavButton.tsx | Coin bas-droit galerie + cards | Cœur toggle → API `/api/favorites/toggle`, intégre \"Mon univers Ka\" (Groupe Ka) |\n| **Charts** | components/Charts.tsx (100+ lignes) | Stats.tsx seulement | VBars (histogramme), HBars (barres H), Donut (camembert), tooltips, tables repliables, palette 6 couleurs validées daltonisme |\n| **GroupeKaBadge** | ka/GroupeKaBadge.tsx | Header + mobile | Badge \"Un service Groupe Ka\" petit texte + logo |\n| **KaFooter** | ka/KaFooter.tsx | Bas page | Footer commun groupe, signature site, borders accent |\n\n**Manquent:**\n- Lightbox photos (lien ouvrt `target=\"_blank\"` sur img, pas de modale)\n- Galerie swipe (thumbs click-select seulement, pas de navigation clavier/gestes)\n- Carte Leaflet ou similaire\n\n---\n\n### 5. STYLE : Variables CSS & Conventions\n\n**Fichier principal CSS:** `/frontend/src/styles.css` (lignes 1-10 : import et commenta)\n\n**Palette Auto-Ka (surchargée dans :root, lines 11-23):**\n```css\n--accent: #ff5a2a /* orange brûlé — ACCENT DU SITE */\n--accent-soft: #ffe8de\n--accent-deep: #cc3f16\n--on-accent: #ffffff\n--good: #1c7a4d /* vert bon prix */\n--good-soft: #e2f4e9\n```\n\n**Socle Groupe Ka (ka/tokens.css, immuable):**\n```css\n--paper: #f5f3ee (fond page)\n--surface: #ffffff\n--ink: #141814\n--font-display: Space Grotesk (titres H1-H3)\n--font-body: Inter (corps)\n--font-mono: JetBrains Mono (labels, data)\n--r-card: 10px\n--shadow-off: 6px 6px 0 var(--ink) /* signature */\n```\n\n**Dark/Light mode:** Aucun mode dark activé (pas de `prefers-color-scheme` override).\n\n**Page détail spécifique (styles.css:239-297):**\n```css\n.vdetail { padding: 34px 0 60px; }\n.vd-head { display: flex; gap: 16px; flex-wrap: wrap; } /* titre + prix côte à côte → stack mobile */\n.vd-cols { grid-template-columns: minmax(0, 1.6fr) minmax(280px, 1fr); gap: 28px; }\n @media (max-width: 900px) { grid-template-columns: 1fr; }\n.gallery { aspect-ratio 4/3; border 2px solid var(--ink); }\n.panel { border 2px solid var(--ink); border-radius: var(--r-card); padding: 18px 20px; }\n```\n\n**Pas de propriété `order:` CSS** → DOM = ordre visuel ✅\n\n---\n\n### 6. STANDARD ORDRE SECTIONS (Groupe Ka) vs ACTUEL\n\n**Standard attendu (par vous):**\n```\n1. Galerie → 2. Prix/badge → 3. Description → 4. Inclusions → 5. Détails → \n6. Analyses → 7. Carte → 8. Scores → 9. Quartier\n```\n\n**Ordre ACTUEL Vehicle.tsx (DOM = visuel, pas de `order:`):**\n```\n✅ 1. En-tête (kicker + titre + prix)\n✅ 2. Galerie (left col)\n✅ 3. Description dealer (left col, bas)\n❌ → Manque : badge \"Bon prix\"\n✅ 4. Caractéristiques (right col)\n✅ 5. Équipements (right col)\n❌ 6. Historique prix (visuel simple, pas graphique)\n❌ 7. Métadonnées Auto-Ka (suivi, pas \"analyses\")\n❌ MANQUE : Carte\n❌ MANQUE : Scores (KA Scores n'existe pas)\n❌ MANQUE : Section quartier (analysis régionale/demo)\n✅ 10. Similaires (full-width)\n```\n\n**Verdict:** Ordre DOM respecte la logique de grille 2 cols, mais manquent **3 sections majeures** (badges, carte, analyses/scores/quartier).\n\n---\n\n### 7. BUILD & DÉPLOIEMENT\n\n**Pipeline:**\n1. **Frontend build:** `cd frontend && npm run build` → TypeScript compilation + Vite → `/frontend/dist/`\n2. **Backend serve:** `python run.py serve` → Uvicorn démarre FastAPI\n3. **StaticFiles:** FastAPI monte `/dist` sur `/` (index.html SPA, assets + JS versionnés)\n4. **API proxy (dev):** Vite config line 11-14 reroute `/api/*` vers `http://localhost:8080` en dev\n\n**En prod:** Frontend servi comme assets statiques par FastAPI (pas de `/api` proxy, calls directes au backend depuis navigateur).\n\n---\n\n## RÉSUMÉ : STATE ACTUEL vs MAJOR UPGRADE\n\n### Ce qui existe et est solide:\n- ✅ React + TS + Vite → build rapide\n- ✅ Galerie avec thumbs (aspect 4:3, lazy-load)\n- ✅ Table specs complète (13 champs)\n- ✅ Favs intégrés (SSO Groupe Ka)\n- ✅ Historique prix (visuel simple, dates + arrows)\n- ✅ Responsive (2 cols → 1 col @ 900px)\n- ✅ Design Groupe Ka appliqué (tokens.css + tokens auto-ka)\n\n### Brèches à combler pour major upgrade:\n1. **Galerie:** Ajouter lightbox modale + swipe clavier\n2. **Badges de prix:** Logique \"Bon prix/Marché\" (CSS existe `--good`) → intégrer dans header\n3. **Carte:** Localisation dealer/quartier (Leaflet ou simple)\n4. **Analyses visuelles:** Graphiques prix par région/marque (Charts.tsx existe, réutiliser)\n5. **Scores KA:** Data model + affichage (n'existe pas)\n6. **Section quartier:** Demographics, indices, drill-down\n\n**Chemins clés à modifier:**\n- `/frontend/src/pages/Vehicle.tsx` (structure, 217 lignes)\n- `/frontend/src/styles.css` (layout `.vdetail`, `.vd-cols`, sections nouvelles)\n- Potentiels nouveaux composants `/frontend/src/components/{GalleryLightbox,PriceAnalysis,Map,ScoreCard}.tsx`"}],"totalDurationMs":61112,"totalTokens":53538,"totalToolUseCount":23,"usage":{"input_tokens":5,"cache_creation_input_tokens":271,"cache_read_input_tokens":49891,"output_tokens":3371,"server_tool_use":{"web_search_requests":0,"web_fetch_requests":0},"service_tier":"standard","cache_creation":{"ephemeral_1h_input_tokens":0,"ephemeral_5m_input_tokens":271},"inference_geo":"","iterations":[{"input_tokens":5,"output_tokens":3371,"cache_read_input_tokens":49891,"cache_creation_input_tokens":271,"cache_creation":{"ephemeral_5m_input_tokens":271,"ephemeral_1h_input_tokens":0},"type":"message"}],"speed":"standard"},"toolStats":{"readCount":12,"searchCount":1,"bashCount":10,"editFileCount":0,"linesAdded":0,"linesRemoved":0,"otherToolCount":0}}}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"5b97e6c5-04f0-431b-b052-efa7196ce770","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcMMxCDhYkCJ9CWZaho","type":"message","role":"assistant","content":[{"type":"thinking","thinking":"","signature":"CAISvjIKpwEIERgCKkA4gfqp71cbK745V1sGDqXL/gjMr5YoxgVQCrlAsSt0/ySrqQ8wWiCH3smGr5MW8/P8xPJep9B80HcXy2ClqhrtMg5jbGF1ZGUtZmFibGUtNTgBQgh0aGlua2luZ1okNmZjYzhmODMtMWY5Yy00ZDMzLWJhMDctNGQ0ZGYzN2Q2N2Y1chAqK78ZzsiVUzI5xDv77u/SiAEBqAGwyLbUBrABAhIMfpCUMdn/lZqQfa8rGgxKi4sx3TI323c45rQiMB4K8fhwmX5Nhu0ZmD8yEuoOBbyjFVXbfznFsXpiaFah0or4ltlLd0mwIZQsUZu1ASrDMP7PpMPVbysw5rsBGfqQxhqLlrf4qcCBuxzNHLH/ogpSfZRuVhK4hfwcB2z2ysiMNgCmcBgnPZcKStP9yb61klBCrGWWin7/WJqiskjfMKkli/Sj2ALGzsNE1yCPMdJf7avutBzVBiNBdKjJNJ2YM5xh+TdWSVE7KWfTqUjY36+7kOuvavKHgtS94GhMsOj9A8SRF2HuYKeV6muXFA+zbBwj92PAqJntkdQfduzBJqGPAhEgUtkdOoXLRXfL+OTuYzMYMHtocQW933EJN2T5lWqM0C1XRsaBQuU/c5QIm4UE+qRkjQXagb052ww2Z/FXnUjNyE8JZC9rQIaAeK08vH/vlX7MqdpAbIV6diI9lm1P2mX5t9ZCSfKcTPNOnGCN4pPMqlyWNq4yPsTy6DV9wG575SDJKIxUR7yko0GhIux4PwodX/S27ad/VK2FvrGkyNS7iMHG91XLY0oMXqDULE0OIOTI6pZVJAZAGwLwGxgpg0PlLv4/o5SaycHmySxpgXxAfGnl9g0Oo2zxUzifLArT0MfD0C8b4m21CqLTrzvYnPNUzFR9WeWSwlx5ZTGAIuu/KV72i5S/Lq4hhyyh0MupnwX90dY/LlWzOVkhttZTX+7awqqtcMvNY9Ab07MfTKre0OXoc0puony5FO3GtFbHGBNYidqS2bgbgqUFcgkwDkT5loT8VxRvufFTay65Hg4cBJeliFLBhWl3muZo5/yvPjayUjikyqei3AUQMHcpHfYFnDhcZvNt2bHFRyPV/rvI6pX8LU9vHxDtWiyyCjMCcPMB4g+5+W+ATwdmVFZ1jpRGZbveboakLbAMxWau8yIdga/9l8OyPH0VEXsp6kzckRmgltmXzh5RqhNa07Jl9sDi/OGuNiexBBmX12ybiE1pyo1WGMsvyXYXmtgGsZA9eF64nrkJ+6H0qPGhHK1L5QZUPdLWLGao0vOg5XtTxtTSdJQqxzrRcfSmnGcn4ySw0anGgMfdOu5Z+yOxveZ0UMhJAHD3EXASusRFsIno9eJz0GeH/Uz1WbaMF86NKPwJ89aBKx3DVoB0AnLvOzA3bzF1fmYWoqWy89oQ9ZSiX0PxdyCUMP5g460V+SVHfCJgmxDqvh1tuHExNLXwCc+7q84Wr7wjSEj946GXTpXTFcl+Pgl91HrSa2GlcpNLGLB/LPTIkoIjnJz5AcIQq/NmQR5Pr4o/l0LLQKbELOgyKKO/+aaUk4za6iEZsW5itPMaQXfEhfKWrR6nNVrL4vmjYUNdHjJLHJPQ/dh51+OYBG5CazNmixRVxSRzvWGU/3O8Awn/BDFhkd2FeY+R3fhOIEIV17cadtK5Hylr47pFda5kLMGvoH4MR7uqTJ05wWgfDtbJ3uX5TqTKLmBuIGPf1ZTkWwffAXPsW0XjQjUuHKy1MxOV5uVYNKQKYKxGK14XnzNJFtst9KUnBpRNwXA0ies/s+eknUUfGMEK4idkmyff5E2kWwGAHLOSHqKtQ+sMIZigPp0Njj90kFKlaSbRTO/lONyXnDateglpM8I4fDVsbk4UUictPQPeN4//3MwNJ5m2tkOADRcrj6i8hHMYXKroYw0dMyLwnZj9TJs/TvvnJlelaat8KuhHdt72G/iDyZdM6avuRg839CvASmpisut6XZME5Smm8v83QKho8VFFqaCJJAqn4xVBUlhTzO4Mr3rHU6OVSd0mZhQgWeii7J5Q/9WrTSqeK9U/Zf4+DXkxUqJkhT0+NAxqKXkD1UvJmSSjyxl6k2GMkBEkCxUT5yb//Yz5e4OcSrOup9d3d2XTPkxwQE+n7bv1rry0Ka9O54Uz49/xVC366/ybIzexpD8yYxK6X3/+dN3/yW7OwUC44vvi7Z9kUMMmCYUKw3BVaOHr17B3tyaE4L+JrH0tFLoxoPnJfSd2kDC30jHDmuzrw20WQ+8E+lZvT/OR5Q/VgIHLt0N8L9pMHWJ0t3kTVEaD6qBvj+1ZZk70QReTMD+jo96EsQucLfyh+Rjo8yq5ONwfxKvzSVTU5/UwIaadtIxZvrgXoYxVdfjUYA1aW7ENf9RfwNjYh3Nx6BjYGnkTFOQEUgzK4gq+sX8rlHnjLXb26yNBy8uGHv0eGW3Vi36N8dHGGcWNyCc1ykCgjUmDqVvGuRsCeLTAL3pPKARau1S3JWQZUPCYyR5SgKxn8dQghKnma0Vc3m5g5nlO79Ai1sPaC4aX2nFNHlxuZj5iTA5Dr0k+NxOjz+dvgUR2WRTL1/fN2WCIlzsN/1ueNKqg8YF6DjXMn5nbVDY9cU4jwLOtB1Y59OxKvuZft8TAt/oKQ/DjI/eV0o/UVLToobIquAwMxon0u5Kw70dtA9XQnjidiUu+a1KplXVPbEe5wsm4SkhhHtGwFOUIISbP3ODRPgLePS/3PYujLMcGDUJymVqjNTh5gDFtNtcxRivHUl6ir0L3Ic2A/zjKSeHbQunWu5g4cN1m3ju7TxjE7/5ulk7nHwbOPDoXL29SykdExo3T7k3N78P7nDx6pCnewTo3eUIKYP6ey7MMsLAxVx3Hc4qzLmtDiW0Mc0JNhGLf5gxbSpBf/2ftrb5qsU4JLMxSuwQxMcPj/W9f3Z4sACUnV3zmwNuq2thZIFx97M7dGCop77RrrcH+HhS5lvVCHRFP9y8fK1G9vvyC5WX3oJvmYmx7lGO8morkeLf8YDmkwll7KUbJb2stz0yklDaz0d/Ak5toDPChwhKL8sNMdbgX0+6y7jmWiPmbEO1xHKg1ICicaDeBU/o2Q9f79T1TEwZdm1o40Q+ggoIOOFxKgbVZ0nqfB40eEDmh67/7sQ0QaMMIzIfgrnkdyLNtMnFWjNk/bdHrkeDVXmkPuvG8jttkOYmRarnyOCmBbL4DCEkfzpjdS0qPdQcq3erv/3l5RX/w2QtB14EsK2AC49J0iuBr41M1ZCAd1KYlS61d9KpntBZyLb0qIr/0Qf8mADrkfehjmy6Pm2zip4Vj7XtpfSkHME7xPFLre3re0Bcb48+wRKohXtVLle3DA6k56YrN6NOeGj7CXr3M9y8OJLjI1MLaojAeVUMwFXpq2r71crPIKmCMq90Edczt27JcCcQ1oGEYtwISrzQFaM4r3Mm4FBkHsDl24sCgAgBA8K7r15CCZGym3/GlUNX1k9qN9uvwqORzfYe4P2uiCZ31j7VpWfcpVtopuSXWePn/vWCRCgT7BcNpOLOiPYqCOayRRk9rhGpjlHQ5L+RBd14ulcfBe9XLJ/Vdy9KbvvZ9JzWTp5/REzgZ8kPJYyzXeuFUmQshva8M2GXvpyb+oA7Hh//DOlQyxgXw4PxOvKpx8xPdevyKmYaIimOeNIjjl/qzr28aCV/jTAnN1Xlv3MqgJ4Iw2mh3fySXl6P3Khb6kdfGpXDqQsffq4bU6Xp12Vmx/2NEQSMKic+O5rHG50EFPNVKELUOS2Es0S/33+8MQ2XRY2lXrBGI1tOmQbVsS8PIjq27RrVPO9XS9SM8Etd42ZAQGj/CvrXdghJX04iy1h3JG0nH6r/dna2kK1oLAlbhHK+rrsAa+OBV8SSJg+kigAP2P1CdMh5BO4/P9rt2CBoEfyjFMrMNdqfgQMJf4QW+NHQqfaWO5IhAOSV+gpx6gkY8E1J/EmIvM1bVT7hX1CX+JvtnZlz9EyMApmo0BL2r4+z0aLt9CSUM/lGuLq60OK/2r5eL7rA0uo7nt8ctTIRaEzzIgXi4WVm9nZqQLxnVvqQInSJlMjQCU9w2sirPWIPtVPBwTncsU42wNlRFLEBmKU2zBr3EULeH0BeuAM/+YyPd8RJNEIJGCPSjvk/cirANOUhQqxjlnEDHkzUlOfRa4VTOqILKivUxzwVnP3DMJzYduzVLzHL0Mu1Kr3XfAKIGuHdGtKS62eHeNKnVZDl9rt7YwLC/a0DcM0oZNqK/4XgoAJLQl+HS1KaQtqiBKa4aWjqQUFsbmNNi/1KURBdJwHv/yHVtaETzbuesVlsqOIR9y41srX/eu+qVp+ZLjXn0JswwipbrlduEmAUH46uXEqMAjhX4c/R3DCmzbzY8YCA2Es2nB35l9oyG103iJ4y9MCzhkFUB2nImE5g/vFnERmNPbJN01FxfT1OXSt3g+LrHE3/XMaa1og4Uino1t3rhAM9xdLqs4dRjFM2FlTiAt5WWzhp4JYnWcBP3bSoAglRRHV5W0oJV7PgB9L90vug4EmUcuJNsjrPgMO5grAwNNX8f5C5JpsdQxSF6nRt17054xeE6Ni8iDSv/1SNX4I3kl/1xPYd5Kx2Wc0OcEUlQy6D3lgcMa+a5o5sSBx2rj6y5/1bsq3gk27e+E1QAk2r/OnKxAQfYkWJlz9FM9N9S0kO8XaQrNZOI+Xt1wMzOf9UC9VOrCj4SGKy/bW+kFDl22pBzuRmqZH9/tWlauE52K7bzQAg5lqMiGEpcWsUc/0SdcqeolZ+UGqq4xL9lbQhFXs0ahW7ESMKfbAGvKJOvVVIAg738S2kPTonrBEamsTIS1+u0j0zk+eOqUqFgVgJCVXy1GgZHH6f8TazaLeQ1sY1LqGX3m70CtL9myN2c+qWMo/a40SpC0Jj/w0dRksxQbLoLvp6OuEgFQCxdGPnu451NgscwGPc+QAX8oqOlzur5EvLhD9q4R5FpE5ySlsnGXDfuffj1LvDJyGb+bmDq7AYEC2j7kn4NMavwVLlX3dhsMggO3iYsyPQTz7RHhLY29lMyX2Ja1uRw78JBfTVJxmbmO9aJ0+9ug59vkPi7xb1Y1fcTUg26nRv+FEJgi1U/kHs/8P5z/VV22DeVWT2AqnBVReGwZIHZAJ+RwK4gBOA3W4D4vSaDxAkhU/uWmTgqWT9WikcdaCdgVZkRep4HJW30ded82UNy7NmM8KQToUlJz90is85x15/cSkHiLwYUd1r/VVQ7DfN1sTG9ZU3hdFTfETYxfo2ADc5mwZEAgSCuL3KlMGwnFQi/eN4d4d4aUc7o6L4JEnfdNjZzUXJ/uiHm1PLBahuCPKcEs+wxAKCitptzysOuYj10A/xqHwpQ6smjs1MCTsws4Y4G6Tixh3mypmK1DUBGOEzUxiq6nzxymRpWE2F1vCdlujZ8Dsnp41xfrxFaU0YhhScRpknYZ46+9M1JQyL2nob6iLp+bSYD566Dj9CW1gR6XH8te6+DHK7zhTngpY0HxFY6byx1/V2tpT3t5mcGyF+isdNtOR2nfGX6ViQGl6xBkjls55+MI0qXKsY4hGo+5VMQTmOKMqb7r8RXsx4UkRu4Win60h81l32jpIXDuWTOMAMbANUyEJp7b1/4YK4TUcqe9RNQZbjcf3xw+piU6dJgf8i0eFGyD4nkJHXnQLRnk7TBa4dZY/BM0knzmX4dqXEcYHz4jmfVIexZ65KGyqgPb0+9CmyUnza+JBII5+NtvSIeVHlrgdQ5H4vJpRsk9N5yMfspqTVPX+CgMQrpQ2CYJEHOUTD2kqPYq9L0Ic37A46x2tNsVxvn1UIZTymExXJ7S3P0ZXQuWS24gEsH1Pl3lyHw3+lxnVxy676bzN5f07QkicE8CqSnImYv5RfGmUv47FPdudfOjL0eahdinVhLBXh4x+Nc6DCZvwOhS7BAXCjE44CBcW30Cwm0kkE7sp7zCht+Nr3kRp1SUDmi6pLDqzt63DqYT/Rud9CxkLxNw0C/odVNt3FH+LchpylnqF5a6euC+LKTBBRQX+TKQRRAxCncrIhOZ+MmTZNsQ0JWnLUE7iSc71JRWAqCd/tkhFWWeVfIBPw6RPUvWmAAmKnkFFXorxRnveKKk/RhCGJ/nniG8if9rtk13zNXbI9zTtXWw2Edt17PNi3Z/Tgz/Ff2KuGYv/xkDrWWjX2PbCgiWwzhGKUCJB0rKdGGICD2EtlNNOiVSCSbpzRAVbJglEmqXw2C5GDYnCadWFjKH1tkms8/avPZ0ZZHn5A1E477Siab5ukR0YcFI2HJcmFCxSamb9R0BLZjDspogF3qSNiqRPwJznk91vZGDRb3fEB1bq8nrj118VdI3fOCuNfEu6v2hU8SEHtNZ1b+Kd90aoj7LpuLBBmBbTq0PwUzD/Ur++OZqEG5O4yf6tZY60/uwK+4kHKw3Q0YODnstCK5Q1S8GK00at6FwTz+xVmOLip1jMVN/IwyO6rbnnlVelutARk1XyPUKewn+AD+ghT8dOL/NBi/M5Duzb6qej8aSDesYQNi0CBPIpEF075A2Gq/L5BqeAp8BKT79Dr3dRgDQU2gjv4v3+ZDp8aPx7LgXCCwcRnt6vDjhbwmUrM8UHswat5A6JV/zAdoJ5/rv3cV7zKGVnt/JVQGwpFkTwzKE3+rl2YIkY/17J5R+As4s9+Eo96w+K5CuVHOVMu2UKWsskOwDeiSCbVYnt4hzGHZVceCesBOtSLhi7feCo6V47oLX9MNoPLi5MJTbjSzG+rXXSNA5SsMXGAb1pPwCI+N4OXigWszJB13hP3VlgGd2zXX3oKc2A/7JqYlx+QVLP+WfRSZd6iMTjUivnws83NzwiHjQURU3Awd0m5f3d+ObAzD6jaXqphR6oLceSvSa8ypI63JmPncOyGRXSl/clXTPx2N10Bngusecr+/ERj/WvzvRNP8EGQVK3hZnsue+ph0Am1p3il5y6s9a/0J8x/ns6nT7hd5rqpySFJXb9AnUIlbLWLXM0rsf1hSvsA2R8mqHGP0EFKAmB9WgYYm+NwbP+cyDS9juU6Be1RN6epDTCVO2IV3lDh226RmHEZYN0wf2uMg7bitqujCo989VA6fI2IyJaqPi1g9wvSy0EqaaL5x/JiCodjExjUDGWMitiuUqfv1xde+ZVUqbdDWRyDAgJ/n8lAIfO+t6nWQPdjQMqUfZWXwJ0bjtvaiVHfJVGoZ5RNIjYCNglZadI7gIyg1QoR0gnaHVG9avgutxnucFQIqA28Pk5X3ZuxPj/n7zFM2t8W7EOFRmZdYYTRYDj7pX1y65Esy8fjxni6D8OGZ/2M0nBOa88TLbRbj2qRo7SbkdE8YWg/P9zaOrm6sh4zmWAiHIWARV08lCITgmNMxLZjgcCfnIwa/joVmF7Lgc/9OwlnHWmq9UU82rL/tuegTeza0p/aMRvwgdeMudDPpt0QUR5rvqb4Z1GRUWbQlQuIg1Jo1zNkks2It84IEfr8gugxvNDrgC6tXfB8gq1I6jEscNiE9Q3nz2BCnqDCx0d22XqPTZuOB5/ZMwOpLTMJK6vN28vfo+HKHoeUc/i0LHIrjjjpmgG6PlRU0V2wsXqftzTK8cg32BVaqTXO85kSuxFvq1+bBjZQOODqsyd0XVkummpAS1s/V2J/t5tzUalXoBD65a+qQoPHNKDb/aBOHqj7CSH6f3pr9SByl7O99XKGaEoBD1lOzf7Js+JGcfyjeLwmI2QL05s+8EXFUTJbGfEov3++2Tbtqa1xcvvH89xOumqtr7cZdxZ5oSKxilyUnHBjFFVUemo9eWJZJtUXrHcGi8MSJZbHDiWt5fFOjHlBwIUNLkKffMEqKBvXqQ4Ud5p+C9DWfn6i9KyMZOu2XpDzo5EVT0Nb3vEYiYPRu+t8Txq9CLGj2QpR1UvFLquyxGjjqLMbASDNJAtubZ/Iee/8y5ocstsSVtrJ3+W/2PTKWuJhiEN9G2VTcq2HZeNQ6T0iEyexF+a35cmu+M6WdmrQwlgwWAilnG0EX+PU5jdPXuMRUibY59R8kIXz2RPrlF0xzzlNtO5poIBkJhIqOi6KC/dQ5cdx8FbN/au/aF+Un8pfj1qotVwwI+HEVbN7WABxBv0VYXS+U8Pgt+ISxBdH43Ib5J7Emb42gJ5ZOwp8ltNiBqZdTzAY+4mchR8yjW5y3Hx27b+BqmXyWAzYbWVgmBTWeyz8YUI2YV8wznD0Y9jmxxaV5D30sjpRxHzmRpkqJ2H5w2kkW73wRpdarCdQkTv3zUM1/x4wG31hdYzNubNJhDvMtv95G21L8laAxeII5/hrCEBeTQk2jM2ORJ1Bu+mk3R6htLETvFTD9IFusQmEGeo9GFGL8RjLSCFe6ql8uSiTq/My9SUpvLecnfM0ZsCiMabVq7IxMUMjZxhmWyIEYQzlsOdoyNn4sV+j50D7TIOWn4IXdjZeep2YsbTQnzwluNQMCnfOI3v0kt3b8NDCz529iwS04zuJpNAf+NUU+jfB6QhZcu/Z+qxbsNtRF2QY21iciZkRpzlZtvZUNSlKYsDNIthmeaCzwcMZXArV79BjJnN94FetEMdvLIuOpyZUGVup5qv/99qwePQq1kq1RQHnlpbGRaIdYv3sYAQ=="}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":9525,"cache_read_input_tokens":37014,"cache_creation":{"ephemeral_5m_input_tokens":9525,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"596a6503-14bf-42b6-ab00-90a34f008a96"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcMMxCDhYkCJ9CWZaho","type":"message","role":"assistant","content":[{"type":"text","text":"Exploration terminée. J'ai une vision claire. Je vérifie quelques données live (taux lat/lng, doublons VIN, API NHTSA pour décodage VIN) avant de me lancer."}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":9525,"cache_read_input_tokens":37014,"cache_creation":{"ephemeral_5m_input_tokens":9525,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"a933e23b-5221-4b81-ac16-22be118e1bf7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcMMxCDhYkCJ9CWZaho","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01UwcDjsBFTi33w8ggqZkx1W","name":"Bash","input":{"command":"sqlite3 ~/auto-ka/data/autoka.db \"SELECT COUNT(*) total, SUM(lat IS NOT NULL) with_gps, SUM(vin IS NOT NULL AND LENGTH(vin)=17) with_vin, SUM(dup_sources IS NOT NULL AND dup_sources != '' AND dup_sources != '[]') with_dups, SUM(description IS NOT NULL AND description != '') with_desc, SUM(features IS NOT NULL AND features != '' AND features != '[]') with_feat FROM vehicles WHERE active=1;\" && sqlite3 ~/auto-ka/data/autoka.db \"SELECT COUNT(*) FROM price_log;\" && sqlite3 ~/auto-ka/data/autoka.db \".tables\"","description":"Check field fill rates in live DB"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":9525,"cache_read_input_tokens":37014,"cache_creation":{"ephemeral_5m_input_tokens":9525,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"636a4f4f-535e-4266-9613-7d3c6af1144b"}} {"type":"permission_auto","tool":"Bash","key":"tout autoriser","input":{"command":"sqlite3 ~/auto-ka/data/autoka.db \"SELECT COUNT(*) total, SUM(lat IS NOT NULL) with_gps, SUM(vin IS NOT NULL AND LENGTH(vin)=17) with_vin, SUM(dup_sources IS NOT NULL AND dup_sources != '' AND dup_sources != '[]') with_dups, SUM(description IS NOT NULL AND description != '') with_desc, SUM(features IS NOT NULL AND features != '' AND features != '[]') with_feat FROM vehicles WHERE active=1;\" && sqlite3 ~/auto-ka/data/autoka.db \"SELECT COUNT(*) FROM price_log;\" && sqlite3 ~/auto-ka/data/autoka.db \".tables\"","description":"Check field fill rates in live DB"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01UwcDjsBFTi33w8ggqZkx1W","type":"tool_result","content":"59260|56893|48402|9581|24985|13451\n95297\ndealers price_log sync_log vehicles \ndetail_cache recalls users","is_error":false}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"4d18a7df-1dc9-4939-9611-1ad5ce746b66","timestamp":"2026-08-25T14:18:28.065Z","tool_use_result":{"stdout":"59260|56893|48402|9581|24985|13451\n95297\ndealers price_log sync_log vehicles \ndetail_cache recalls users","stderr":"","interrupted":false,"isImage":false,"noOutputExpected":false}}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcMMxCDhYkCJ9CWZaho","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01BXYntjY4mRZDhSxKRnk5r7","name":"Bash","input":{"command":"curl -s -m 15 -X POST \"https://vpic.nhtsa.dot.gov/api/vehicles/DecodeVINValuesBatch/\" -d \"format=json&data=3FA6P0LU1KR172845\" | python3 -c \"import json,sys; r=json.load(sys.stdin)['Results'][0]; print({k:v for k,v in r.items() if v and k in ('Make','Model','ModelYear','FuelTypePrimary','DriveType','BodyClass','EngineCylinders','DisplacementL','TransmissionStyle','Doors','PlantCountry','Series','Trim','EngineHP','ElectrificationLevel')})\"","description":"Test NHTSA vPIC VIN decode API"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":9525,"cache_read_input_tokens":37014,"cache_creation":{"ephemeral_5m_input_tokens":9525,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"e49c46a2-1ff6-4b20-8b45-c4a9d2b465c3"}} {"type":"permission_auto","tool":"Bash","key":"tout autoriser","input":{"command":"curl -s -m 15 -X POST \"https://vpic.nhtsa.dot.gov/api/vehicles/DecodeVINValuesBatch/\" -d \"format=json&data=3FA6P0LU1KR172845\" | python3 -c \"import json,sys; r=json.load(sys.stdin)['Results'][0]; print({k:v for k,v in r.items() if v and k in ('Make','Model','ModelYear','FuelTypePrimary','DriveType','BodyClass','EngineCylinders','DisplacementL','TransmissionStyle','Doors','PlantCountry','Series','Trim','EngineHP','ElectrificationLevel')})\"","description":"Test NHTSA vPIC VIN decode API"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01BXYntjY4mRZDhSxKRnk5r7","type":"tool_result","content":"{'BodyClass': 'Sedan/Saloon', 'DisplacementL': '2.0', 'Doors': '4', 'ElectrificationLevel': 'Strong HEV (Hybrid Electric Vehicle)', 'EngineCylinders': '4', 'EngineHP': '188', 'FuelTypePrimary': 'Gasoline', 'Make': 'FORD', 'Model': 'Fusion', 'ModelYear': '2019', 'PlantCountry': 'MEXICO', 'Trim': 'SE Hybrid'}","is_error":false}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"ff6b6567-6e2b-4de6-aa9b-11b199337b5f","timestamp":"2026-08-25T14:18:31.214Z","tool_use_result":{"stdout":"{'BodyClass': 'Sedan/Saloon', 'DisplacementL': '2.0', 'Doors': '4', 'ElectrificationLevel': 'Strong HEV (Hybrid Electric Vehicle)', 'EngineCylinders': '4', 'EngineHP': '188', 'FuelTypePrimary': 'Gasoline', 'Make': 'FORD', 'Model': 'Fusion', 'ModelYear': '2019', 'PlantCountry': 'MEXICO', 'Trim': 'SE Hybrid'}","stderr":"","interrupted":false,"isImage":false,"noOutputExpected":false}}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"ea92f90f-0787-4dae-9df3-163d4e4d195d","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcRP4XgppzZCzvcivT9","type":"message","role":"assistant","content":[{"type":"thinking","thinking":"","signature":"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"}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":3753,"cache_read_input_tokens":46539,"cache_creation":{"ephemeral_5m_input_tokens":3753,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"8c919169-85c4-4896-a038-efd559c2e616"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcRP4XgppzZCzvcivT9","type":"message","role":"assistant","content":[{"type":"thinking","thinking":"","signature":"CAISpAkKqAEIERgCKkCn1uQnia7EYZ9fhy51Nck4bDQYdf/maqH+wnA62fwL1rNXIv4LUfuTRQ4rsPBVXsUms2R9DZwRq8jhPj/QErKaMg5jbGF1ZGUtZmFibGUtNTgBQgluYXJyYXRpb25aJDZmY2M4ZjgzLTFmOWMtNGQzMy1iYTA3LTRkNGRmMzdkNjdmNXIQKiu/Gc7IlVMyOcQ7++7v0ogBAagB0si21AawAQISDC452PJxeX9vmPAuThoMxRFVMfaKyNVpxuhnIjA7/GvMyAdlwo4UO6piDuFRNryUMPclompzteKFN1P9aWSIqfyRB7BMyofCm5t4pUkqqAcI6OYe1Vuc4ZRhJYCvaqji451T9LxLUlPSwtMC8GnOVMoEfaDdO+szR4PhfoGwvuxb9BcPh+m9MIB6GIx0iV0fR2TjOPSDWqzoA4XtNCwpksk5D2tb5tPyy3NQXYDX9pS4E5yg9/HgWh5G/07fxcBN5NS7tDR59nXWO6I91d/os9Li0AeO+b0/ETYdJxAkGXsW7L1nWirpHvjnoXcRSLjAlPKEXN0ae1nkA3usknLPL13htcn4cpze99h0f+200Qgv1NCOG2MVqNzoq8c3tl5cziZPh6PAWJ8kj7AK0soCODth/YmDhV8GUYOEbqE8NkmuTTpTtinYjK6pa9yaF5jJ4KnVa/64gqClx60fC8+UO6ogsvpU33cQaA0cBNR5YxWw4GK2SGWIc9eQ4Alq4EsKuaxFnCmUInj4wyG2OxJmrLIr90+oU/6n0a/r1DRqS6ey37SbHrjAjwOpNCLelZMkAV8wYo43E+rmHsk9Ate/XHk+6ZTpqpE5XKkRfS877rjf2dENx7rBI4aAGu9rv9neSApRy9fgdiDCXVAPSyqH4P4+j+n2T93Qw+/q3owIKcsR5FxY6bnvv1+0XYxjvoZTqkL4y+PCmXaLeVzPuFK1xkSG6c771Reaa0dM5cGv3gynihq19Gn3h+Z1WdbF/cuHOsUJPTF6aYKjOXftQEZUPw6DddTfFlsbGffZDjkU2FRu54nadjUpUoHIj+qurxOnLOOBmQi91RL3gigy0vAV6Hwf4umf5pRrA9uC4VtvsfwqUswxV1XVSE22U8BPNjFPCogqUUTb+gdYoBQYCMSRuJRYwM/ZB8S1XPtb8cJxtV6UQHhv4ecyu90vFU79OzMrG/jqTscEmmlX7CxlebZQ7rBUnvit3V2DwQHttU5DP3giPPb5+FrOdRCI8XtiMzw3aMbLpvY9RIOF13b876aJSODnxZkXStntNDbXLYuj35t6yurkS/hhxVHk3r351bSTxKLo41+R5K1TQJ9bv7IFopo/SNBgZIQg2d0ytFrgctAAXvLgHmUjhF6JmJvxF26ZsJG4TBIY3ybdu+OSyKCfr86q6vURugapQslZSRof0Btrz24Se5z55FdjKkm69Ocrq6jlu9EMd//+V31iE7/aJTwa8fPDVWEagZs7IQtnG7fHpCBMLUJBi0oXXq0ObNrqHSk4ID19OyRfsvXZj8ClKoYe85lvHBvHlb1KR9R7ccgIWpiv9kd3WviNtOIFgW7z62uncJav7OMYAQ=="}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":3753,"cache_read_input_tokens":46539,"cache_creation":{"ephemeral_5m_input_tokens":3753,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"e0a91420-8dca-4212-99a1-02acf77e7434"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcRP4XgppzZCzvcivT9","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_015L9yQ4dvuSHrm1pR4CnEZ3","name":"ToolSearch","input":{"query":"select:TodoWrite","max_results":1},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":3753,"cache_read_input_tokens":46539,"cache_creation":{"ephemeral_5m_input_tokens":3753,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"34ad78c7-46c2-412c-b533-ed43f5e8ad48"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"type":"tool_result","tool_use_id":"toolu_015L9yQ4dvuSHrm1pR4CnEZ3","content":[{"type":"tool_reference","tool_name":"TodoWrite"}]}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"29a5fba8-4672-488e-8ff2-35b658527848","timestamp":"2026-08-25T14:18:59.442Z","tool_use_result":{"matches":["TodoWrite"],"query":"select:TodoWrite","total_deferred_tools":17}}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcRP4XgppzZCzvcivT9","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_018yBZghUebEeWRWUubv3948","name":"Read","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/autoka/web.py"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":3753,"cache_read_input_tokens":46539,"cache_creation":{"ephemeral_5m_input_tokens":3753,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"2630f349-0a62-42ec-aaab-ba3d795ba804"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_018yBZghUebEeWRWUubv3948","type":"tool_result","content":"1\t# -----------------------------------------------------------------------------\n2\t# Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n3\t# Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n4\t# web.py : API FastAPI (JSON) + service du frontend React (frontend/dist)\n5\t# -----------------------------------------------------------------------------\n6\tfrom __future__ import annotations\n7\t\n8\timport json\n9\timport threading\n10\timport time\n11\tfrom pathlib import Path\n12\t\n13\tfrom fastapi import BackgroundTasks, Body, FastAPI, HTTPException, Query\n14\tfrom fastapi.middleware.cors import CORSMiddleware\n15\tfrom fastapi.middleware.gzip import GZipMiddleware\n16\tfrom fastapi.responses import FileResponse, RedirectResponse\n17\tfrom fastapi.staticfiles import StaticFiles\n18\t\n19\tfrom . import auth, db, ingest, seo\n20\t\n21\tROOT = Path(__file__).resolve().parent.parent\n22\tSOURCES_PATH = ROOT / \"data\" / \"sources.json\"\n23\tFRONTEND_DIST = ROOT / \"frontend\" / \"dist\"\n24\t\n25\tapp = FastAPI(title=\"Auto-Ka API\", version=\"1.0\",\n26\t description=\"Agrégateur de voitures usagées — province de Québec\")\n27\tapp.add_middleware(CORSMiddleware, allow_origins=[\"*\"],\n28\t allow_methods=[\"*\"], allow_headers=[\"*\"])\n29\tapp.add_middleware(GZipMiddleware, minimum_size=1000)\n30\t\n31\t_sync_lock = threading.Lock()\n32\t\n33\t\n34\tdef _row_to_dict(row) -> dict:\n35\t d = dict(row)\n36\t d[\"features\"] = json.loads(d.get(\"features\") or \"[]\")\n37\t d[\"images\"] = json.loads(d.get(\"images\") or \"[]\")\n38\t d[\"details\"] = json.loads(d.get(\"details\") or \"{}\")\n39\t # autres offres du même VIN (dédoublonnage inter-sources — autoka/dedup.py)\n40\t if d.get(\"dup_sources\"):\n41\t try:\n42\t d[\"dup_sources\"] = json.loads(d[\"dup_sources\"])\n43\t except ValueError:\n44\t d[\"dup_sources\"] = []\n45\t return d\n46\t\n47\t\n48\tdef _apply_filters(sql: str, args: list, *, make=None, model=None, body_type=None,\n49\t fuel=None, transmission=None, drivetrain=None, region=None,\n50\t city=None, source=None, year_min=None, year_max=None,\n51\t price_min=None, price_max=None, km_max=None, q=None) -> str:\n52\t if make:\n53\t sql += \" AND make=?\"; args.append(make)\n54\t if model:\n55\t sql += \" AND model LIKE ?\"; args.append(f\"{model}%\")\n56\t if body_type:\n57\t sql += \" AND body_type=?\"; args.append(body_type)\n58\t if fuel:\n59\t if fuel == \"Hybride\": # inclut l'hybride rechargeable\n60\t sql += \" AND fuel IN ('Hybride','Hybride rechargeable')\"\n61\t else:\n62\t sql += \" AND fuel=?\"; args.append(fuel)\n63\t if transmission:\n64\t sql += \" AND transmission=?\"; args.append(transmission)\n65\t if drivetrain:\n66\t sql += \" AND drivetrain=?\"; args.append(drivetrain)\n67\t if region:\n68\t sql += \" AND region=?\"; args.append(region)\n69\t if city:\n70\t sql += \" AND city LIKE ?\"; args.append(f\"%{city}%\")\n71\t if source:\n72\t sql += \" AND source=?\"; args.append(source)\n73\t if year_min is not None:\n74\t sql += \" AND year IS NOT NULL AND year>=?\"; args.append(year_min)\n75\t if year_max is not None:\n76\t sql += \" AND year IS NOT NULL AND year<=?\"; args.append(year_max)\n77\t if price_min is not None:\n78\t sql += \" AND price IS NOT NULL AND price>=?\"; args.append(price_min)\n79\t if price_max is not None:\n80\t sql += \" AND price IS NOT NULL AND price<=?\"; args.append(price_max)\n81\t if km_max is not None:\n82\t sql += \" AND mileage_km IS NOT NULL AND mileage_km<=?\"; args.append(km_max)\n83\t if q:\n84\t sql += (\" AND (title LIKE ? OR make LIKE ? OR model LIKE ?\"\n85\t \" OR dealer_name LIKE ? OR city LIKE ?)\")\n86\t args += [f\"%{q}%\"] * 5\n87\t return sql\n88\t\n89\t\n90\t_SORTS = {\n91\t \"price_asc\": \"price IS NULL, price ASC\",\n92\t \"price_desc\": \"price IS NULL, price DESC\",\n93\t \"km_asc\": \"mileage_km IS NULL, mileage_km ASC\",\n94\t \"year_desc\": \"year IS NULL, year DESC\",\n95\t \"recent\": \"first_seen DESC\",\n96\t}\n97\t\n98\t\n99\t@app.get(\"/api/vehicles\")\n100\tdef list_vehicles(\n101\t kind: str = \"auto\",\n102\t make: str | None = None,\n103\t model: str | None = None,\n104\t body_type: str | None = None,\n105\t fuel: str | None = None,\n106\t transmission: str | None = None,\n107\t drivetrain: str | None = None,\n108\t region: str | None = None,\n109\t city: str | None = None,\n110\t source: str | None = None,\n111\t year_min: int | None = None,\n112\t year_max: int | None = None,\n113\t price_min: float | None = None,\n114\t price_max: float | None = None,\n115\t km_max: float | None = None,\n116\t q: str | None = None,\n117\t sort: str = \"recent\",\n118\t active: int = 1,\n119\t dedup: int = 1,\n120\t limit: int = Query(60, le=500),\n121\t offset: int = 0,\n122\t):\n123\t con = db.connect()\n124\t sql = \"SELECT * FROM vehicles WHERE 1=1\"\n125\t args: list = []\n126\t if active in (0, 1):\n127\t sql += \" AND active=?\"; args.append(active)\n128\t if dedup: # masquer les doublons inter-sources (même VIN)\n129\t sql += \" AND dup_of IS NULL\"\n130\t if kind and kind != \"tous\":\n131\t sql += \" AND kind=?\"; args.append(kind)\n132\t sql = _apply_filters(sql, args, make=make, model=model, body_type=body_type,\n133\t fuel=fuel, transmission=transmission,\n134\t drivetrain=drivetrain, region=region, city=city,\n135\t source=source, year_min=year_min, year_max=year_max,\n136\t price_min=price_min, price_max=price_max,\n137\t km_max=km_max, q=q)\n138\t total = con.execute(f\"SELECT COUNT(*) c FROM ({sql})\", args).fetchone()[\"c\"]\n139\t sql += f\" ORDER BY {_SORTS.get(sort, _SORTS['recent'])} LIMIT ? OFFSET ?\"\n140\t args += [limit, offset]\n141\t rows = [_row_to_dict(r) for r in con.execute(sql, args).fetchall()]\n142\t con.close()\n143\t return {\"total\": total, \"count\": len(rows), \"vehicles\": rows}\n144\t\n145\t\n146\t@app.get(\"/api/vehicles/{uid}\")\n147\tdef get_vehicle(uid: str):\n148\t con = db.connect()\n149\t row = con.execute(\"SELECT * FROM vehicles WHERE uid=?\", (uid,)).fetchone()\n150\t d = None\n151\t if row is not None:\n152\t d = _row_to_dict(row)\n153\t d[\"price_history\"] = [dict(r) for r in con.execute(\n154\t \"SELECT ts, price FROM price_log WHERE uid=? ORDER BY ts DESC LIMIT 10\",\n155\t (uid,)).fetchall()]\n156\t # véhicules similaires : même marque+modèle, autres sources incluses\n157\t if d.get(\"make\") and d.get(\"model\"):\n158\t base_model = d[\"model\"].split()[0]\n159\t d[\"similar\"] = [_row_to_dict(r) for r in con.execute(\n160\t \"SELECT * FROM vehicles WHERE active=1 AND dup_of IS NULL\"\n161\t \" AND make=? AND model LIKE ?\"\n162\t \" AND uid<>? ORDER BY price IS NULL, price ASC LIMIT 6\",\n163\t (d[\"make\"], f\"{base_model}%\", uid)).fetchall()]\n164\t else:\n165\t d[\"similar\"] = []\n166\t con.close()\n167\t if d is None:\n168\t raise HTTPException(404, \"Véhicule introuvable\")\n169\t return d\n170\t\n171\t\n172\t@app.get(\"/api/vehicles/{uid}/recalls\")\n173\tdef vehicle_recalls(uid: str):\n174\t \"\"\"Rappels Transports Canada visant ce véhicule (marque/modèle/année).\"\"\"\n175\t from . import recalls as recalls_mod\n176\t con = db.connect()\n177\t row = con.execute(\"SELECT make, model, year FROM vehicles WHERE uid=?\",\n178\t (uid,)).fetchone()\n179\t if row is None:\n180\t con.close()\n181\t raise HTTPException(404, \"Véhicule introuvable\")\n182\t try:\n183\t items = recalls_mod.for_vehicle(con, row[\"make\"], row[\"model\"],\n184\t row[\"year\"])\n185\t finally:\n186\t con.close()\n187\t return {\"uid\": uid, \"make\": row[\"make\"], \"model\": row[\"model\"],\n188\t \"year\": row[\"year\"], \"count\": len(items), \"recalls\": items}\n189\t\n190\t\n191\t@app.get(\"/api/dealers\")\n192\tdef dealers():\n193\t \"\"\"Coordonnées des concessionnaires suivis (autoka/dealers.py).\"\"\"\n194\t from . import dealers as dealers_mod\n195\t con = db.connect()\n196\t try:\n197\t rows = dealers_mod.list_dealers(con)\n198\t finally:\n199\t con.close()\n200\t return {\"count\": len(rows), \"dealers\": rows}\n201\t\n202\t\n203\t@app.get(\"/api/facets\")\n204\tdef facets(make: str | None = None, kind: str = \"auto\"):\n205\t \"\"\"Valeurs distinctes pour construire les filtres du frontend.\n206\t\n207\t `make` (optionnel) restreint la liste des modèles à cette marque —\n208\t utilisé par le sélecteur « Modèle » dépendant de « Marque ».\n209\t \"\"\"\n210\t con = db.connect()\n211\t kf = \"\" if kind in (\"\", \"tous\") else f\" AND kind='{'moto' if kind=='moto' else 'scooter' if kind=='scooter' else 'auto'}'\"\n212\t kf += \" AND dup_of IS NULL\" # compter chaque véhicule une seule fois\n213\t model_sql = (\"SELECT model, COUNT(*) n FROM vehicles\"\n214\t \" WHERE active=1 AND model<>''\" + kf)\n215\t model_args: list = []\n216\t if make:\n217\t model_sql += \" AND make=?\"\n218\t model_args.append(make)\n219\t out = {\n220\t \"makes\": [dict(r) for r in con.execute(\n221\t \"SELECT make, COUNT(*) n FROM vehicles WHERE active=1\" + kf + \" AND make<>''\"\n222\t \" GROUP BY make ORDER BY n DESC\")],\n223\t \"models\": [dict(r) for r in con.execute(\n224\t model_sql + \" GROUP BY model ORDER BY n DESC LIMIT 80\", model_args)],\n225\t \"body_types\": [r[\"body_type\"] for r in con.execute(\n226\t \"SELECT DISTINCT body_type FROM vehicles WHERE active=1\" + kf + \"\"\n227\t \" AND body_type<>'' ORDER BY body_type\")],\n228\t \"fuels\": [r[\"fuel\"] for r in con.execute(\n229\t \"SELECT DISTINCT fuel FROM vehicles WHERE active=1\" + kf + \" AND fuel<>''\"\n230\t \" ORDER BY fuel\")],\n231\t \"regions\": [dict(r) for r in con.execute(\n232\t \"SELECT region, COUNT(*) n FROM vehicles WHERE active=1\" + kf + \" AND region<>''\"\n233\t \" GROUP BY region ORDER BY n DESC\")],\n234\t \"sources\": [dict(r) for r in con.execute(\n235\t \"SELECT source, dealer_name, COUNT(*) n FROM vehicles WHERE active=1\" + kf + \"\"\n236\t \" GROUP BY source ORDER BY n DESC\")],\n237\t \"years\": [dict(r) for r in con.execute(\n238\t \"SELECT MIN(year) y_min, MAX(year) y_max FROM vehicles\"\n239\t \" WHERE active=1\" + kf + \" AND year IS NOT NULL\")],\n240\t }\n241\t con.close()\n242\t return out\n243\t\n244\t\n245\t@app.get(\"/api/sources\")\n246\tdef sources():\n247\t registry = json.loads(SOURCES_PATH.read_text(encoding=\"utf-8\"))[\"sources\"]\n248\t con = db.connect()\n249\t counts = {r[\"source\"]: r[\"n\"] for r in con.execute(\n250\t \"SELECT source, COUNT(*) n FROM vehicles WHERE active=1 GROUP BY source\")}\n251\t last = {r[\"source\"]: r[\"ts\"] for r in con.execute(\n252\t \"SELECT source, MAX(ts) ts FROM sync_log WHERE ok=1 GROUP BY source\")}\n253\t con.close()\n254\t for s in registry:\n255\t s[\"active_listings\"] = counts.get(s[\"id\"], 0)\n256\t s[\"last_sync\"] = last.get(s[\"id\"])\n257\t return {\"sources\": registry}\n258\t\n259\t\n260\t@app.get(\"/api/stats\")\n261\tdef stats(syncs_since_h: float | None = None):\n262\t con = db.connect()\n263\t row = con.execute(\n264\t \"\"\"SELECT COUNT(*) total,\n265\t COUNT(DISTINCT source) sources,\n266\t COUNT(DISTINCT region) regions,\n267\t AVG(price) avg_price,\n268\t AVG(mileage_km) avg_km,\n269\t AVG(year) avg_year\n270\t FROM vehicles WHERE active=1 AND kind='auto'\n271\t AND dup_of IS NULL\"\"\").fetchone()\n272\t by_region = [dict(r) for r in con.execute(\n273\t \"SELECT region, COUNT(*) n, ROUND(AVG(price)) avg_price FROM vehicles\"\n274\t \" WHERE active=1 AND kind='auto' AND dup_of IS NULL\"\n275\t \" AND region<>'' GROUP BY region ORDER BY n DESC\")]\n276\t by_make = [dict(r) for r in con.execute(\n277\t \"SELECT make, COUNT(*) n, ROUND(AVG(price)) avg_price FROM vehicles\"\n278\t \" WHERE active=1 AND kind='auto' AND dup_of IS NULL\"\n279\t \" AND make<>'' GROUP BY make ORDER BY n DESC LIMIT 20\")]\n280\t by_body = [dict(r) for r in con.execute(\n281\t \"SELECT body_type, COUNT(*) n FROM vehicles WHERE active=1 AND kind='auto'\"\n282\t \" AND dup_of IS NULL\"\n283\t \" AND body_type<>'' GROUP BY body_type ORDER BY n DESC\")]\n284\t # baisses de prix récentes (signal d'aubaine)\n285\t drops = [dict(r) for r in con.execute(\n286\t \"\"\"SELECT v.uid, v.title, v.year, v.price, v.images, v.dealer_name, v.city,\n287\t p.prev_price\n288\t FROM vehicles v JOIN (\n289\t SELECT uid, price prev_price,\n290\t ROW_NUMBER() OVER (PARTITION BY uid ORDER BY ts DESC) rn\n291\t FROM price_log) p ON p.uid=v.uid AND p.rn=2\n292\t WHERE v.active=1 AND kind='auto' AND v.dup_of IS NULL\n293\t AND v.price IS NOT NULL AND p.prev_price > v.price\n294\t ORDER BY (p.prev_price - v.price) DESC LIMIT 12\"\"\")]\n295\t for d in drops:\n296\t d[\"images\"] = json.loads(d.get(\"images\") or \"[]\")[:1]\n297\t # fenêtre de sync paramétrable (supervision api-ka) : ?syncs_since_h=6\n298\t # retourne toutes les entrées de la fenêtre (les ~20 dernières sinon)\n299\t if syncs_since_h is not None:\n300\t log = [dict(r) for r in con.execute(\n301\t \"SELECT * FROM sync_log WHERE ts >= ? ORDER BY ts DESC LIMIT 4000\",\n302\t (time.time() - syncs_since_h * 3600,))]\n303\t if len(log) < 20: # fenêtre trop courte -> minimum utile\n304\t log = [dict(r) for r in con.execute(\n305\t \"SELECT * FROM sync_log ORDER BY ts DESC LIMIT 20\")]\n306\t else:\n307\t log = [dict(r) for r in con.execute(\n308\t \"SELECT * FROM sync_log ORDER BY ts DESC LIMIT 20\")]\n309\t # enrichissements vague 2 : doublons VIN masqués, rappels TC, dealers\n310\t extra = {\"vin_duplicates_masked\": con.execute(\n311\t \"SELECT COUNT(*) c FROM vehicles WHERE active=1 AND dup_of IS NOT NULL\"\n312\t ).fetchone()[\"c\"]}\n313\t for key, query in (\n314\t (\"recalls_total\", \"SELECT COUNT(DISTINCT recall_number) c FROM recalls\"),\n315\t (\"dealers_total\", \"SELECT COUNT(*) c FROM dealers\")):\n316\t try:\n317\t extra[key] = con.execute(query).fetchone()[\"c\"]\n318\t except Exception: # table pas encore créée\n319\t extra[key] = 0\n320\t con.close()\n321\t return {**dict(row), **extra, \"by_region\": by_region, \"by_make\": by_make,\n322\t \"by_body\": by_body, \"price_drops\": drops, \"recent_syncs\": log}\n323\t\n324\t\n325\t@app.get(\"/api/stats/detailed\")\n326\tdef stats_detailed():\n327\t \"\"\"Agrégats complets du marché (source unique : autoka/marketstats.py).\"\"\"\n328\t from . import marketstats\n329\t return marketstats.compute()\n330\t\n331\t\n332\t# --- Module Stats commun Groupe KA (contrat ka/stats/SPEC.md) ----------------\n333\t\n334\tKA_SITE = {\n335\t \"wordmark\": \"Auto·Ka\",\n336\t \"accent\": \"#ff5a2a\",\n337\t \"domain\": \"www.auto-ka.com\",\n338\t \"tagline\": \"Voitures usagées · tout le Québec · toujours à jour\",\n339\t}\n340\t\n341\t\n342\t@app.get(\"/api/stats/dashboard\")\n343\tdef stats_dashboard(\n344\t period: str = \"30j\",\n345\t from_: str | None = Query(None, alias=\"from\"),\n346\t to: str | None = None,\n347\t):\n348\t \"\"\"Tableau de bord analytique — contrat commun Groupe KA (cache 5 min).\"\"\"\n349\t from . import statsdash\n350\t try:\n351\t return statsdash.dashboard(period, from_, to)\n352\t except ValueError:\n353\t raise HTTPException(400, \"Dates invalides (format attendu : YYYY-MM-DD)\")\n354\t\n355\t\n356\t@app.get(\"/api/stats/report\")\n357\tdef stats_report(\n358\t period: str = \"30j\",\n359\t from_: str | None = Query(None, alias=\"from\"),\n360\t to: str | None = None,\n361\t mode: str = \"complet\",\n362\t):\n363\t \"\"\"Rapport PDF estampillé Groupe-KA — 5 modes (SPEC v2) : complet,\n364\t synthese, tendances, repartitions, donnees. Mode inconnu → complet.\"\"\"\n365\t from fastapi.responses import Response\n366\t from . import kapdf, statsdash\n367\t try:\n368\t dash = statsdash.dashboard(period, from_, to)\n369\t except ValueError:\n370\t raise HTTPException(400, \"Dates invalides (format attendu : YYYY-MM-DD)\")\n371\t mode = mode if mode in kapdf.REPORT_MODES else \"complet\"\n372\t pdf = kapdf.GroupeKAReport(site=KA_SITE, dashboard=dash, mode=mode).build()\n373\t return Response(\n374\t content=pdf, media_type=\"application/pdf\",\n375\t headers={\"Content-Disposition\":\n376\t f'attachment; filename=\"{kapdf.filename(\"auto-ka\", period, mode)}\"'})\n377\t\n378\t\n379\t@app.get(\"/api/stats/catalog\")\n380\tdef stats_catalog(\n381\t period: str = \"30j\",\n382\t from_: str | None = Query(None, alias=\"from\"),\n383\t to: str | None = None,\n384\t):\n385\t \"\"\"v3 — blocs composables pour le constructeur de rapports personnalisés.\"\"\"\n386\t from . import kapdf, statsdash\n387\t try:\n388\t dash = statsdash.dashboard(period, from_, to)\n389\t except ValueError:\n390\t raise HTTPException(400, \"Dates invalides (format attendu : YYYY-MM-DD)\")\n391\t return {\"updated\": dash.get(\"updated\"), \"period\": dash.get(\"period\"),\n392\t \"blocks\": kapdf.catalog(dash)}\n393\t\n394\t\n395\t@app.post(\"/api/stats/report/custom\")\n396\tdef stats_report_custom(spec: dict = Body(...)):\n397\t \"\"\"v3 — rapport PDF personnalisé : {\"title\", \"period\", \"from\", \"to\",\n398\t \"blocks\": [{\"key\": \"series:…\", \"render\": \"bar\"}, …]} (SPEC.md §3bis).\"\"\"\n399\t from fastapi.responses import Response\n400\t from . import kapdf, statsdash\n401\t period = str(spec.get(\"period\") or \"30j\")\n402\t try:\n403\t dash = statsdash.dashboard(period, str(spec.get(\"from\") or \"\") or None,\n404\t str(spec.get(\"to\") or \"\") or None)\n405\t except ValueError:\n406\t raise HTTPException(400, \"Dates invalides (format attendu : YYYY-MM-DD)\")\n407\t known = {b[\"key\"] for b in kapdf.catalog(dash)}\n408\t blocks = [b for b in (spec.get(\"blocks\") or [])\n409\t if isinstance(b, dict) and b.get(\"key\") in known][:40]\n410\t if not blocks:\n411\t raise HTTPException(400, \"Aucun bloc valide dans la composition\")\n412\t pdf = kapdf.GroupeKAReport(\n413\t site=KA_SITE, dashboard=dash, mode=kapdf.CUSTOM_MODE,\n414\t spec={\"title\": str(spec.get(\"title\") or \"\")[:80], \"blocks\": blocks},\n415\t ).build()\n416\t fname = kapdf.filename(\"auto-ka\", period, kapdf.CUSTOM_MODE)\n417\t return Response(\n418\t content=pdf, media_type=\"application/pdf\",\n419\t headers={\"Content-Disposition\":\n420\t f'attachment; filename=\"{fname}\"'})\n421\t\n422\t\n423\t@app.get(\"/api/stats/rapport.pdf\")\n424\tdef rapport_pdf():\n425\t \"\"\"Rapport PDF « Le marché de l'occasion » — vue d'ensemble.\"\"\"\n426\t from fastapi.responses import Response\n427\t from . import pdfgen\n428\t return Response(\n429\t content=pdfgen.rapport_pdf(), media_type=\"application/pdf\",\n430\t headers={\"Content-Disposition\":\n431\t 'attachment; filename=\"auto-ka-rapport-marche.pdf\"'})\n432\t\n433\t\n434\t@app.post(\"/api/sync\")\n435\tdef trigger_sync(background: BackgroundTasks, source: str | None = None):\n436\t \"\"\"Déclenche une synchronisation (équivalent d'un webhook entrant).\"\"\"\n437\t def _job():\n438\t with _sync_lock:\n439\t ingest.run([source] if source else None)\n440\t background.add_task(_job)\n441\t return {\"status\": \"démarré\", \"source\": source or \"toutes\"}\n442\t\n443\t\n444\t# --- Connexion KA ID (SSO Groupe KA) — AVANT le catch-all du SPA -------------\n445\tapp.include_router(auth.router)\n446\tapp.include_router(auth.fav_router) # favoris « Mon univers Ka » (hub central)\n447\t\n448\t# --- SEO : rendu serveur des pages publiques, sitemaps, robots.txt -----------\n449\tapp.include_router(seo.router)\n450\t\n451\t\n452\t# --- Frontend React (build Vite) --------------------------------------------\n453\tif FRONTEND_DIST.exists():\n454\t app.mount(\"/assets\", StaticFiles(directory=FRONTEND_DIST / \"assets\"), name=\"assets\")\n455\t\n456\t # Documentation statique (/doc/) — servie avant le catch-all SPA\n457\t doc_dir = FRONTEND_DIST / \"doc\"\n458\t if doc_dir.is_dir():\n459\t @app.get(\"/doc\", include_in_schema=False)\n460\t def doc_slash():\n461\t return RedirectResponse(\"/doc/\", status_code=308)\n462\t\n463\t app.mount(\"/doc\", StaticFiles(directory=doc_dir, html=True), name=\"doc\")\n464\t\n465\t @app.get(\"/{full_path:path}\")\n466\t def spa(full_path: str):\n467\t target = FRONTEND_DIST / full_path\n468\t if full_path and target.is_file():\n469\t return FileResponse(target)\n470\t # Chemin inconnu : vrai 404 (le HTML embarque quand même le SPA,\n471\t # l'utilisateur voit la page « introuvable » de React)\n472\t return seo.render_404(\"/\" + full_path)\n473\t"}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"2b55e853-a5a9-4056-9c59-80e32484001d","timestamp":"2026-08-25T14:18:59.842Z","tool_use_result":{"type":"text","file":{"filePath":"/Users/simon-pierreboucher/auto-ka/autoka/web.py","content":"# -----------------------------------------------------------------------------\n# Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n# Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n# web.py : API FastAPI (JSON) + service du frontend React (frontend/dist)\n# -----------------------------------------------------------------------------\nfrom __future__ import annotations\n\nimport json\nimport threading\nimport time\nfrom pathlib import Path\n\nfrom fastapi import BackgroundTasks, Body, FastAPI, HTTPException, Query\nfrom fastapi.middleware.cors import CORSMiddleware\nfrom fastapi.middleware.gzip import GZipMiddleware\nfrom fastapi.responses import FileResponse, RedirectResponse\nfrom fastapi.staticfiles import StaticFiles\n\nfrom . import auth, db, ingest, seo\n\nROOT = Path(__file__).resolve().parent.parent\nSOURCES_PATH = ROOT / \"data\" / \"sources.json\"\nFRONTEND_DIST = ROOT / \"frontend\" / \"dist\"\n\napp = FastAPI(title=\"Auto-Ka API\", version=\"1.0\",\n description=\"Agrégateur de voitures usagées — province de Québec\")\napp.add_middleware(CORSMiddleware, allow_origins=[\"*\"],\n allow_methods=[\"*\"], allow_headers=[\"*\"])\napp.add_middleware(GZipMiddleware, minimum_size=1000)\n\n_sync_lock = threading.Lock()\n\n\ndef _row_to_dict(row) -> dict:\n d = dict(row)\n d[\"features\"] = json.loads(d.get(\"features\") or \"[]\")\n d[\"images\"] = json.loads(d.get(\"images\") or \"[]\")\n d[\"details\"] = json.loads(d.get(\"details\") or \"{}\")\n # autres offres du même VIN (dédoublonnage inter-sources — autoka/dedup.py)\n if d.get(\"dup_sources\"):\n try:\n d[\"dup_sources\"] = json.loads(d[\"dup_sources\"])\n except ValueError:\n d[\"dup_sources\"] = []\n return d\n\n\ndef _apply_filters(sql: str, args: list, *, make=None, model=None, body_type=None,\n fuel=None, transmission=None, drivetrain=None, region=None,\n city=None, source=None, year_min=None, year_max=None,\n price_min=None, price_max=None, km_max=None, q=None) -> str:\n if make:\n sql += \" AND make=?\"; args.append(make)\n if model:\n sql += \" AND model LIKE ?\"; args.append(f\"{model}%\")\n if body_type:\n sql += \" AND body_type=?\"; args.append(body_type)\n if fuel:\n if fuel == \"Hybride\": # inclut l'hybride rechargeable\n sql += \" AND fuel IN ('Hybride','Hybride rechargeable')\"\n else:\n sql += \" AND fuel=?\"; args.append(fuel)\n if transmission:\n sql += \" AND transmission=?\"; args.append(transmission)\n if drivetrain:\n sql += \" AND drivetrain=?\"; args.append(drivetrain)\n if region:\n sql += \" AND region=?\"; args.append(region)\n if city:\n sql += \" AND city LIKE ?\"; args.append(f\"%{city}%\")\n if source:\n sql += \" AND source=?\"; args.append(source)\n if year_min is not None:\n sql += \" AND year IS NOT NULL AND year>=?\"; args.append(year_min)\n if year_max is not None:\n sql += \" AND year IS NOT NULL AND year<=?\"; args.append(year_max)\n if price_min is not None:\n sql += \" AND price IS NOT NULL AND price>=?\"; args.append(price_min)\n if price_max is not None:\n sql += \" AND price IS NOT NULL AND price<=?\"; args.append(price_max)\n if km_max is not None:\n sql += \" AND mileage_km IS NOT NULL AND mileage_km<=?\"; args.append(km_max)\n if q:\n sql += (\" AND (title LIKE ? OR make LIKE ? OR model LIKE ?\"\n \" OR dealer_name LIKE ? OR city LIKE ?)\")\n args += [f\"%{q}%\"] * 5\n return sql\n\n\n_SORTS = {\n \"price_asc\": \"price IS NULL, price ASC\",\n \"price_desc\": \"price IS NULL, price DESC\",\n \"km_asc\": \"mileage_km IS NULL, mileage_km ASC\",\n \"year_desc\": \"year IS NULL, year DESC\",\n \"recent\": \"first_seen DESC\",\n}\n\n\n@app.get(\"/api/vehicles\")\ndef list_vehicles(\n kind: str = \"auto\",\n make: str | None = None,\n model: str | None = None,\n body_type: str | None = None,\n fuel: str | None = None,\n transmission: str | None = None,\n drivetrain: str | None = None,\n region: str | None = None,\n city: str | None = None,\n source: str | None = None,\n year_min: int | None = None,\n year_max: int | None = None,\n price_min: float | None = None,\n price_max: float | None = None,\n km_max: float | None = None,\n q: str | None = None,\n sort: str = \"recent\",\n active: int = 1,\n dedup: int = 1,\n limit: int = Query(60, le=500),\n offset: int = 0,\n):\n con = db.connect()\n sql = \"SELECT * FROM vehicles WHERE 1=1\"\n args: list = []\n if active in (0, 1):\n sql += \" AND active=?\"; args.append(active)\n if dedup: # masquer les doublons inter-sources (même VIN)\n sql += \" AND dup_of IS NULL\"\n if kind and kind != \"tous\":\n sql += \" AND kind=?\"; args.append(kind)\n sql = _apply_filters(sql, args, make=make, model=model, body_type=body_type,\n fuel=fuel, transmission=transmission,\n drivetrain=drivetrain, region=region, city=city,\n source=source, year_min=year_min, year_max=year_max,\n price_min=price_min, price_max=price_max,\n km_max=km_max, q=q)\n total = con.execute(f\"SELECT COUNT(*) c FROM ({sql})\", args).fetchone()[\"c\"]\n sql += f\" ORDER BY {_SORTS.get(sort, _SORTS['recent'])} LIMIT ? OFFSET ?\"\n args += [limit, offset]\n rows = [_row_to_dict(r) for r in con.execute(sql, args).fetchall()]\n con.close()\n return {\"total\": total, \"count\": len(rows), \"vehicles\": rows}\n\n\n@app.get(\"/api/vehicles/{uid}\")\ndef get_vehicle(uid: str):\n con = db.connect()\n row = con.execute(\"SELECT * FROM vehicles WHERE uid=?\", (uid,)).fetchone()\n d = None\n if row is not None:\n d = _row_to_dict(row)\n d[\"price_history\"] = [dict(r) for r in con.execute(\n \"SELECT ts, price FROM price_log WHERE uid=? ORDER BY ts DESC LIMIT 10\",\n (uid,)).fetchall()]\n # véhicules similaires : même marque+modèle, autres sources incluses\n if d.get(\"make\") and d.get(\"model\"):\n base_model = d[\"model\"].split()[0]\n d[\"similar\"] = [_row_to_dict(r) for r in con.execute(\n \"SELECT * FROM vehicles WHERE active=1 AND dup_of IS NULL\"\n \" AND make=? AND model LIKE ?\"\n \" AND uid<>? ORDER BY price IS NULL, price ASC LIMIT 6\",\n (d[\"make\"], f\"{base_model}%\", uid)).fetchall()]\n else:\n d[\"similar\"] = []\n con.close()\n if d is None:\n raise HTTPException(404, \"Véhicule introuvable\")\n return d\n\n\n@app.get(\"/api/vehicles/{uid}/recalls\")\ndef vehicle_recalls(uid: str):\n \"\"\"Rappels Transports Canada visant ce véhicule (marque/modèle/année).\"\"\"\n from . import recalls as recalls_mod\n con = db.connect()\n row = con.execute(\"SELECT make, model, year FROM vehicles WHERE uid=?\",\n (uid,)).fetchone()\n if row is None:\n con.close()\n raise HTTPException(404, \"Véhicule introuvable\")\n try:\n items = recalls_mod.for_vehicle(con, row[\"make\"], row[\"model\"],\n row[\"year\"])\n finally:\n con.close()\n return {\"uid\": uid, \"make\": row[\"make\"], \"model\": row[\"model\"],\n \"year\": row[\"year\"], \"count\": len(items), \"recalls\": items}\n\n\n@app.get(\"/api/dealers\")\ndef dealers():\n \"\"\"Coordonnées des concessionnaires suivis (autoka/dealers.py).\"\"\"\n from . import dealers as dealers_mod\n con = db.connect()\n try:\n rows = dealers_mod.list_dealers(con)\n finally:\n con.close()\n return {\"count\": len(rows), \"dealers\": rows}\n\n\n@app.get(\"/api/facets\")\ndef facets(make: str | None = None, kind: str = \"auto\"):\n \"\"\"Valeurs distinctes pour construire les filtres du frontend.\n\n `make` (optionnel) restreint la liste des modèles à cette marque —\n utilisé par le sélecteur « Modèle » dépendant de « Marque ».\n \"\"\"\n con = db.connect()\n kf = \"\" if kind in (\"\", \"tous\") else f\" AND kind='{'moto' if kind=='moto' else 'scooter' if kind=='scooter' else 'auto'}'\"\n kf += \" AND dup_of IS NULL\" # compter chaque véhicule une seule fois\n model_sql = (\"SELECT model, COUNT(*) n FROM vehicles\"\n \" WHERE active=1 AND model<>''\" + kf)\n model_args: list = []\n if make:\n model_sql += \" AND make=?\"\n model_args.append(make)\n out = {\n \"makes\": [dict(r) for r in con.execute(\n \"SELECT make, COUNT(*) n FROM vehicles WHERE active=1\" + kf + \" AND make<>''\"\n \" GROUP BY make ORDER BY n DESC\")],\n \"models\": [dict(r) for r in con.execute(\n model_sql + \" GROUP BY model ORDER BY n DESC LIMIT 80\", model_args)],\n \"body_types\": [r[\"body_type\"] for r in con.execute(\n \"SELECT DISTINCT body_type FROM vehicles WHERE active=1\" + kf + \"\"\n \" AND body_type<>'' ORDER BY body_type\")],\n \"fuels\": [r[\"fuel\"] for r in con.execute(\n \"SELECT DISTINCT fuel FROM vehicles WHERE active=1\" + kf + \" AND fuel<>''\"\n \" ORDER BY fuel\")],\n \"regions\": [dict(r) for r in con.execute(\n \"SELECT region, COUNT(*) n FROM vehicles WHERE active=1\" + kf + \" AND region<>''\"\n \" GROUP BY region ORDER BY n DESC\")],\n \"sources\": [dict(r) for r in con.execute(\n \"SELECT source, dealer_name, COUNT(*) n FROM vehicles WHERE active=1\" + kf + \"\"\n \" GROUP BY source ORDER BY n DESC\")],\n \"years\": [dict(r) for r in con.execute(\n \"SELECT MIN(year) y_min, MAX(year) y_max FROM vehicles\"\n \" WHERE active=1\" + kf + \" AND year IS NOT NULL\")],\n }\n con.close()\n return out\n\n\n@app.get(\"/api/sources\")\ndef sources():\n registry = json.loads(SOURCES_PATH.read_text(encoding=\"utf-8\"))[\"sources\"]\n con = db.connect()\n counts = {r[\"source\"]: r[\"n\"] for r in con.execute(\n \"SELECT source, COUNT(*) n FROM vehicles WHERE active=1 GROUP BY source\")}\n last = {r[\"source\"]: r[\"ts\"] for r in con.execute(\n \"SELECT source, MAX(ts) ts FROM sync_log WHERE ok=1 GROUP BY source\")}\n con.close()\n for s in registry:\n s[\"active_listings\"] = counts.get(s[\"id\"], 0)\n s[\"last_sync\"] = last.get(s[\"id\"])\n return {\"sources\": registry}\n\n\n@app.get(\"/api/stats\")\ndef stats(syncs_since_h: float | None = None):\n con = db.connect()\n row = con.execute(\n \"\"\"SELECT COUNT(*) total,\n COUNT(DISTINCT source) sources,\n COUNT(DISTINCT region) regions,\n AVG(price) avg_price,\n AVG(mileage_km) avg_km,\n AVG(year) avg_year\n FROM vehicles WHERE active=1 AND kind='auto'\n AND dup_of IS NULL\"\"\").fetchone()\n by_region = [dict(r) for r in con.execute(\n \"SELECT region, COUNT(*) n, ROUND(AVG(price)) avg_price FROM vehicles\"\n \" WHERE active=1 AND kind='auto' AND dup_of IS NULL\"\n \" AND region<>'' GROUP BY region ORDER BY n DESC\")]\n by_make = [dict(r) for r in con.execute(\n \"SELECT make, COUNT(*) n, ROUND(AVG(price)) avg_price FROM vehicles\"\n \" WHERE active=1 AND kind='auto' AND dup_of IS NULL\"\n \" AND make<>'' GROUP BY make ORDER BY n DESC LIMIT 20\")]\n by_body = [dict(r) for r in con.execute(\n \"SELECT body_type, COUNT(*) n FROM vehicles WHERE active=1 AND kind='auto'\"\n \" AND dup_of IS NULL\"\n \" AND body_type<>'' GROUP BY body_type ORDER BY n DESC\")]\n # baisses de prix récentes (signal d'aubaine)\n drops = [dict(r) for r in con.execute(\n \"\"\"SELECT v.uid, v.title, v.year, v.price, v.images, v.dealer_name, v.city,\n p.prev_price\n FROM vehicles v JOIN (\n SELECT uid, price prev_price,\n ROW_NUMBER() OVER (PARTITION BY uid ORDER BY ts DESC) rn\n FROM price_log) p ON p.uid=v.uid AND p.rn=2\n WHERE v.active=1 AND kind='auto' AND v.dup_of IS NULL\n AND v.price IS NOT NULL AND p.prev_price > v.price\n ORDER BY (p.prev_price - v.price) DESC LIMIT 12\"\"\")]\n for d in drops:\n d[\"images\"] = json.loads(d.get(\"images\") or \"[]\")[:1]\n # fenêtre de sync paramétrable (supervision api-ka) : ?syncs_since_h=6\n # retourne toutes les entrées de la fenêtre (les ~20 dernières sinon)\n if syncs_since_h is not None:\n log = [dict(r) for r in con.execute(\n \"SELECT * FROM sync_log WHERE ts >= ? ORDER BY ts DESC LIMIT 4000\",\n (time.time() - syncs_since_h * 3600,))]\n if len(log) < 20: # fenêtre trop courte -> minimum utile\n log = [dict(r) for r in con.execute(\n \"SELECT * FROM sync_log ORDER BY ts DESC LIMIT 20\")]\n else:\n log = [dict(r) for r in con.execute(\n \"SELECT * FROM sync_log ORDER BY ts DESC LIMIT 20\")]\n # enrichissements vague 2 : doublons VIN masqués, rappels TC, dealers\n extra = {\"vin_duplicates_masked\": con.execute(\n \"SELECT COUNT(*) c FROM vehicles WHERE active=1 AND dup_of IS NOT NULL\"\n ).fetchone()[\"c\"]}\n for key, query in (\n (\"recalls_total\", \"SELECT COUNT(DISTINCT recall_number) c FROM recalls\"),\n (\"dealers_total\", \"SELECT COUNT(*) c FROM dealers\")):\n try:\n extra[key] = con.execute(query).fetchone()[\"c\"]\n except Exception: # table pas encore créée\n extra[key] = 0\n con.close()\n return {**dict(row), **extra, \"by_region\": by_region, \"by_make\": by_make,\n \"by_body\": by_body, \"price_drops\": drops, \"recent_syncs\": log}\n\n\n@app.get(\"/api/stats/detailed\")\ndef stats_detailed():\n \"\"\"Agrégats complets du marché (source unique : autoka/marketstats.py).\"\"\"\n from . import marketstats\n return marketstats.compute()\n\n\n# --- Module Stats commun Groupe KA (contrat ka/stats/SPEC.md) ----------------\n\nKA_SITE = {\n \"wordmark\": \"Auto·Ka\",\n \"accent\": \"#ff5a2a\",\n \"domain\": \"www.auto-ka.com\",\n \"tagline\": \"Voitures usagées · tout le Québec · toujours à jour\",\n}\n\n\n@app.get(\"/api/stats/dashboard\")\ndef stats_dashboard(\n period: str = \"30j\",\n from_: str | None = Query(None, alias=\"from\"),\n to: str | None = None,\n):\n \"\"\"Tableau de bord analytique — contrat commun Groupe KA (cache 5 min).\"\"\"\n from . import statsdash\n try:\n return statsdash.dashboard(period, from_, to)\n except ValueError:\n raise HTTPException(400, \"Dates invalides (format attendu : YYYY-MM-DD)\")\n\n\n@app.get(\"/api/stats/report\")\ndef stats_report(\n period: str = \"30j\",\n from_: str | None = Query(None, alias=\"from\"),\n to: str | None = None,\n mode: str = \"complet\",\n):\n \"\"\"Rapport PDF estampillé Groupe-KA — 5 modes (SPEC v2) : complet,\n synthese, tendances, repartitions, donnees. Mode inconnu → complet.\"\"\"\n from fastapi.responses import Response\n from . import kapdf, statsdash\n try:\n dash = statsdash.dashboard(period, from_, to)\n except ValueError:\n raise HTTPException(400, \"Dates invalides (format attendu : YYYY-MM-DD)\")\n mode = mode if mode in kapdf.REPORT_MODES else \"complet\"\n pdf = kapdf.GroupeKAReport(site=KA_SITE, dashboard=dash, mode=mode).build()\n return Response(\n content=pdf, media_type=\"application/pdf\",\n headers={\"Content-Disposition\":\n f'attachment; filename=\"{kapdf.filename(\"auto-ka\", period, mode)}\"'})\n\n\n@app.get(\"/api/stats/catalog\")\ndef stats_catalog(\n period: str = \"30j\",\n from_: str | None = Query(None, alias=\"from\"),\n to: str | None = None,\n):\n \"\"\"v3 — blocs composables pour le constructeur de rapports personnalisés.\"\"\"\n from . import kapdf, statsdash\n try:\n dash = statsdash.dashboard(period, from_, to)\n except ValueError:\n raise HTTPException(400, \"Dates invalides (format attendu : YYYY-MM-DD)\")\n return {\"updated\": dash.get(\"updated\"), \"period\": dash.get(\"period\"),\n \"blocks\": kapdf.catalog(dash)}\n\n\n@app.post(\"/api/stats/report/custom\")\ndef stats_report_custom(spec: dict = Body(...)):\n \"\"\"v3 — rapport PDF personnalisé : {\"title\", \"period\", \"from\", \"to\",\n \"blocks\": [{\"key\": \"series:…\", \"render\": \"bar\"}, …]} (SPEC.md §3bis).\"\"\"\n from fastapi.responses import Response\n from . import kapdf, statsdash\n period = str(spec.get(\"period\") or \"30j\")\n try:\n dash = statsdash.dashboard(period, str(spec.get(\"from\") or \"\") or None,\n str(spec.get(\"to\") or \"\") or None)\n except ValueError:\n raise HTTPException(400, \"Dates invalides (format attendu : YYYY-MM-DD)\")\n known = {b[\"key\"] for b in kapdf.catalog(dash)}\n blocks = [b for b in (spec.get(\"blocks\") or [])\n if isinstance(b, dict) and b.get(\"key\") in known][:40]\n if not blocks:\n raise HTTPException(400, \"Aucun bloc valide dans la composition\")\n pdf = kapdf.GroupeKAReport(\n site=KA_SITE, dashboard=dash, mode=kapdf.CUSTOM_MODE,\n spec={\"title\": str(spec.get(\"title\") or \"\")[:80], \"blocks\": blocks},\n ).build()\n fname = kapdf.filename(\"auto-ka\", period, kapdf.CUSTOM_MODE)\n return Response(\n content=pdf, media_type=\"application/pdf\",\n headers={\"Content-Disposition\":\n f'attachment; filename=\"{fname}\"'})\n\n\n@app.get(\"/api/stats/rapport.pdf\")\ndef rapport_pdf():\n \"\"\"Rapport PDF « Le marché de l'occasion » — vue d'ensemble.\"\"\"\n from fastapi.responses import Response\n from . import pdfgen\n return Response(\n content=pdfgen.rapport_pdf(), media_type=\"application/pdf\",\n headers={\"Content-Disposition\":\n 'attachment; filename=\"auto-ka-rapport-marche.pdf\"'})\n\n\n@app.post(\"/api/sync\")\ndef trigger_sync(background: BackgroundTasks, source: str | None = None):\n \"\"\"Déclenche une synchronisation (équivalent d'un webhook entrant).\"\"\"\n def _job():\n with _sync_lock:\n ingest.run([source] if source else None)\n background.add_task(_job)\n return {\"status\": \"démarré\", \"source\": source or \"toutes\"}\n\n\n# --- Connexion KA ID (SSO Groupe KA) — AVANT le catch-all du SPA -------------\napp.include_router(auth.router)\napp.include_router(auth.fav_router) # favoris « Mon univers Ka » (hub central)\n\n# --- SEO : rendu serveur des pages publiques, sitemaps, robots.txt -----------\napp.include_router(seo.router)\n\n\n# --- Frontend React (build Vite) --------------------------------------------\nif FRONTEND_DIST.exists():\n app.mount(\"/assets\", StaticFiles(directory=FRONTEND_DIST / \"assets\"), name=\"assets\")\n\n # Documentation statique (/doc/) — servie avant le catch-all SPA\n doc_dir = FRONTEND_DIST / \"doc\"\n if doc_dir.is_dir():\n @app.get(\"/doc\", include_in_schema=False)\n def doc_slash():\n return RedirectResponse(\"/doc/\", status_code=308)\n\n app.mount(\"/doc\", StaticFiles(directory=doc_dir, html=True), name=\"doc\")\n\n @app.get(\"/{full_path:path}\")\n def spa(full_path: str):\n target = FRONTEND_DIST / full_path\n if full_path and target.is_file():\n return FileResponse(target)\n # Chemin inconnu : vrai 404 (le HTML embarque quand même le SPA,\n # l'utilisateur voit la page « introuvable » de React)\n return seo.render_404(\"/\" + full_path)\n","numLines":473,"startLine":1,"totalLines":473}}}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"e4d4b3e5-4128-40c8-89ad-4330d4c385c8","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcTVEAY7R7BWSQKHcwb","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_018LeDV65UYsq2MTvovV6qK3","name":"TodoWrite","input":{"todos":[{"content":"Créer autoka/vindecode.py (décodage VIN NHTSA + cache DB)","status":"in_progress","activeForm":"Création du module vindecode.py"},{"content":"Enrichir l'endpoint détail : marché, KA Score, VIN, autres offres","status":"pending","activeForm":"Enrichissement de l'endpoint détail"},{"content":"Frontend : lightbox galerie + badge marché","status":"pending","activeForm":"Ajout lightbox et badge marché"},{"content":"Frontend : sections analyse marché, autres offres, rappels, fiche VIN, KA Score, carte","status":"pending","activeForm":"Ajout des nouvelles sections détail"},{"content":"Frontend : historique prix en graphique","status":"pending","activeForm":"Graphique historique prix"},{"content":"Build frontend + tests locaux","status":"pending","activeForm":"Build et tests"},{"content":"pm2 restart + healthcheck + commit + push","status":"pending","activeForm":"Déploiement et push"}]},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":48553,"cache_read_input_tokens":16221,"cache_creation":{"ephemeral_5m_input_tokens":48553,"ephemeral_1h_input_tokens":0},"output_tokens":25,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"b1e0b413-4bda-4191-b00a-1684ae3c77c8"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_018LeDV65UYsq2MTvovV6qK3","type":"tool_result","content":"Todos have been modified successfully. Ensure that you continue to use the todo list to track your progress. Please proceed with the current tasks if applicable"}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"047d5d1c-b69f-4133-97b2-1866f033c1f7","timestamp":"2026-08-25T14:19:08.944Z","tool_use_result":{"oldTodos":[],"newTodos":[{"content":"Créer autoka/vindecode.py (décodage VIN NHTSA + cache DB)","status":"in_progress","activeForm":"Création du module vindecode.py"},{"content":"Enrichir l'endpoint détail : marché, KA Score, VIN, autres offres","status":"pending","activeForm":"Enrichissement de l'endpoint détail"},{"content":"Frontend : lightbox galerie + badge marché","status":"pending","activeForm":"Ajout lightbox et badge marché"},{"content":"Frontend : sections analyse marché, autres offres, rappels, fiche VIN, KA Score, carte","status":"pending","activeForm":"Ajout des nouvelles sections détail"},{"content":"Frontend : historique prix en graphique","status":"pending","activeForm":"Graphique historique prix"},{"content":"Build frontend + tests locaux","status":"pending","activeForm":"Build et tests"},{"content":"pm2 restart + healthcheck + commit + push","status":"pending","activeForm":"Déploiement et push"}],"verificationNudgeNeeded":false}}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"72a1739e-5141-45bb-aa7a-00b966b5bc36","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcUAS6GGXJyn7DtUPMW","type":"message","role":"assistant","content":[{"type":"thinking","thinking":"","signature":"CAISoQMKpwEIERgCKkBopNv/xExTe55DJOM/H/iNFCKkeNq+OLOS0XG0Ctq5RFseezTFAjimk6QatQ3zMdd2wlsFV8WzZpvwc/qg45iIMg5jbGF1ZGUtZmFibGUtNTgBQgh0aGlua2luZ1okNmZjYzhmODMtMWY5Yy00ZDMzLWJhMDctNGQ0ZGYzN2Q2N2Y1chAqK78ZzsiVUzI5xDv77u/SiAEBqAHiyLbUBrABAhIMQ1yEmN4HjyR5t/9RGgyrSPUJqyYpZbvuZTMiMBnuUUm9GDolqxvLTP34LPhFoOc9dWNnDcWhmuPdPDHDT49ll6LI/cxC7J4n+ZQMZSqmAU3neCORy5NdEb2IymVcB8xp45YMaCi6AEN+EGAstM9u2FRnBIdorC616f9yXWMAHkERA4F1U5STmf2+g1tkFS+NggWbuiBwPG0cZDfZ3qRf1KmHQTRh5wdbgnijcfH+5goSupULsw3YGt6xmgZ5+T8DT0qk0JQSv/ALKn0lVu9T/SUpbCAWebKaAFtE7Uw+x01039YgBhiG00CtUAONHrc+zz+83JgYAQ=="}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":550,"cache_read_input_tokens":64774,"cache_creation":{"ephemeral_5m_input_tokens":550,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"d3509b67-0a12-4461-b6ef-d26f38c3d11a"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcUAS6GGXJyn7DtUPMW","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01JCzezzBsJdZzkN4Dky3uy4","name":"Read","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/autoka/db.py"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":550,"cache_read_input_tokens":64774,"cache_creation":{"ephemeral_5m_input_tokens":550,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"1260ee6c-2685-45e7-8ca6-6188128fa32d"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01JCzezzBsJdZzkN4Dky3uy4","type":"tool_result","content":"1\t# -----------------------------------------------------------------------------\n2\t# Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n3\t# Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n4\t# db.py : persistance SQLite — upsert avec détection de changements,\n5\t# cycle de vie avec délai de grâce (2 syncs), détection de dérive,\n6\t# historique de prix (baisses de prix = signal clé en auto usagée),\n7\t# cache des pages détail.\n8\t# -----------------------------------------------------------------------------\n9\tfrom __future__ import annotations\n10\t\n11\timport json\n12\timport sqlite3\n13\timport statistics\n14\timport time\n15\tfrom pathlib import Path\n16\t\n17\tfrom .schema import Vehicle\n18\t\n19\tDB_PATH = Path(__file__).resolve().parent.parent / \"data\" / \"autoka.db\"\n20\t\n21\t# Nombre d'exécutions consécutives où une annonce doit être absente de la\n22\t# source avant d'être désactivée (délai de grâce contre les ratés ponctuels).\n23\tMISS_GRACE = 2\n24\t\n25\t# Dérive : si une source retourne <= DRIFT_RATIO × sa médiane historique\n26\t# (médiane >= DRIFT_MIN_BASE annonces), on alerte et on suspend les retraits.\n27\tDRIFT_RATIO = 0.25\n28\tDRIFT_MIN_BASE = 8\n29\tDRIFT_HISTORY = 5\n30\t\n31\t_SCHEMA = \"\"\"\n32\tCREATE TABLE IF NOT EXISTS vehicles (\n33\t uid TEXT PRIMARY KEY,\n34\t source TEXT NOT NULL,\n35\t external_id TEXT NOT NULL,\n36\t url TEXT,\n37\t kind TEXT DEFAULT 'auto',\n38\t title TEXT,\n39\t make TEXT,\n40\t model TEXT,\n41\t trim TEXT,\n42\t year INTEGER,\n43\t price REAL,\n44\t price_label TEXT,\n45\t mileage_km REAL,\n46\t mileage_label TEXT,\n47\t transmission TEXT,\n48\t fuel TEXT,\n49\t drivetrain TEXT,\n50\t body_type TEXT,\n51\t exterior_color TEXT,\n52\t interior_color TEXT,\n53\t engine TEXT,\n54\t doors INTEGER,\n55\t seats INTEGER,\n56\t vin TEXT,\n57\t stock_number TEXT,\n58\t dealer_name TEXT,\n59\t city TEXT,\n60\t region TEXT,\n61\t description TEXT,\n62\t features TEXT, -- JSON (liste de textes source)\n63\t details TEXT, -- JSON (champs structurés)\n64\t images TEXT, -- JSON\n65\t carfax_url TEXT,\n66\t content_hash TEXT,\n67\t first_seen REAL,\n68\t last_seen REAL,\n69\t updated_at REAL,\n70\t miss_count INTEGER DEFAULT 0,\n71\t active INTEGER DEFAULT 1\n72\t);\n73\tCREATE INDEX IF NOT EXISTS idx_vehicles_source ON vehicles(source);\n74\tCREATE INDEX IF NOT EXISTS idx_vehicles_make ON vehicles(make);\n75\tCREATE INDEX IF NOT EXISTS idx_vehicles_region ON vehicles(region);\n76\tCREATE INDEX IF NOT EXISTS idx_vehicles_active ON vehicles(active);\n77\tCREATE INDEX IF NOT EXISTS idx_vehicles_price ON vehicles(price);\n78\t\n79\tCREATE TABLE IF NOT EXISTS sync_log (\n80\t id INTEGER PRIMARY KEY AUTOINCREMENT,\n81\t source TEXT,\n82\t ts REAL,\n83\t found INTEGER,\n84\t added INTEGER,\n85\t updated INTEGER,\n86\t removed INTEGER,\n87\t ok INTEGER,\n88\t message TEXT,\n89\t stats TEXT -- JSON : taux de champs null, missed, alerte…\n90\t);\n91\t\n92\tCREATE TABLE IF NOT EXISTS detail_cache (\n93\t source TEXT NOT NULL,\n94\t external_id TEXT NOT NULL,\n95\t key TEXT, -- hash du contenu « liste » de l'annonce\n96\t payload TEXT, -- JSON opaque propre au connecteur\n97\t fetched_at REAL,\n98\t PRIMARY KEY (source, external_id)\n99\t);\n100\t\n101\tCREATE TABLE IF NOT EXISTS price_log (\n102\t uid TEXT NOT NULL,\n103\t ts REAL NOT NULL,\n104\t price REAL -- prix observé (NULL = retiré de l'affichage)\n105\t);\n106\tCREATE INDEX IF NOT EXISTS idx_price_log_uid ON price_log(uid);\n107\t\"\"\"\n108\t\n109\t\n110\t# Colonnes ajoutées après la v1 — migration automatique des bases existantes.\n111\t_MIGRATIONS = {\n112\t \"vehicles\": {\n113\t \"kind\": \"TEXT DEFAULT 'auto'\",\n114\t # GPS du concessionnaire (déduit de city — data/villes_gps.json) :\n115\t # permet la recherche par rayon autour d'un point\n116\t \"lat\": \"REAL\",\n117\t \"lng\": \"REAL\",\n118\t # dédoublonnage inter-sources par VIN (autoka/dedup.py) :\n119\t # dup_of = uid de l'annonce canonique (NULL = canonique ou unique) ;\n120\t # dup_sources = JSON des autres offres du même VIN (sur la canonique)\n121\t \"dup_of\": \"TEXT\",\n122\t \"dup_sources\": \"TEXT\",\n123\t },\n124\t}\n125\t\n126\t\n127\tdef connect() -> sqlite3.Connection:\n128\t DB_PATH.parent.mkdir(parents=True, exist_ok=True)\n129\t con = sqlite3.connect(DB_PATH, timeout=30)\n130\t con.row_factory = sqlite3.Row\n131\t # WAL : plusieurs processus de sync peuvent écrire sans se bloquer\n132\t con.execute(\"PRAGMA journal_mode=WAL\")\n133\t con.execute(\"PRAGMA busy_timeout=15000\")\n134\t con.executescript(_SCHEMA)\n135\t for table, cols in _MIGRATIONS.items():\n136\t existing = {r[\"name\"] for r in con.execute(f\"PRAGMA table_info({table})\")}\n137\t for col, decl in cols.items():\n138\t if col not in existing:\n139\t con.execute(f\"ALTER TABLE {table} ADD COLUMN {col} {decl}\")\n140\t # index sur des colonnes issues de migrations : après l'ALTER TABLE\n141\t con.execute(\"CREATE INDEX IF NOT EXISTS idx_vehicles_kind ON vehicles(kind)\")\n142\t con.execute(\n143\t \"CREATE INDEX IF NOT EXISTS idx_vehicles_latlng ON vehicles(lat, lng)\")\n144\t con.execute(\"CREATE INDEX IF NOT EXISTS idx_vehicles_vin ON vehicles(vin)\")\n145\t con.execute(\n146\t \"CREATE INDEX IF NOT EXISTS idx_vehicles_dup_of ON vehicles(dup_of)\")\n147\t con.commit()\n148\t return con\n149\t\n150\t\n151\t# ---------------------------------------------------------------------------\n152\t# Synchronisation d'une source\n153\t# ---------------------------------------------------------------------------\n154\t\n155\tdef _drift_alert(con: sqlite3.Connection, source: str, found: int,\n156\t null_price_rate: float) -> str | None:\n157\t \"\"\"Détecte une dérive du connecteur (chute du volume ou des prix extraits).\"\"\"\n158\t hist = con.execute(\n159\t \"SELECT found, stats FROM sync_log WHERE source=? AND ok=1\"\n160\t \" ORDER BY ts DESC LIMIT ?\", (source, DRIFT_HISTORY)).fetchall()\n161\t if len(hist) < 3:\n162\t return None\n163\t med_found = statistics.median(r[\"found\"] for r in hist)\n164\t if med_found >= DRIFT_MIN_BASE and found <= DRIFT_RATIO * med_found:\n165\t return (f\"dérive: {found} annonce(s) trouvée(s) contre une médiane de \"\n166\t f\"{med_found:.0f} — retraits suspendus, vérifier le connecteur\")\n167\t if found >= DRIFT_MIN_BASE and null_price_rate >= 0.8:\n168\t rates = []\n169\t for r in hist:\n170\t try:\n171\t rates.append(json.loads(r[\"stats\"] or \"{}\")[\"null_price_rate\"])\n172\t except (KeyError, ValueError, TypeError):\n173\t continue\n174\t if rates and statistics.median(rates) <= 0.3:\n175\t return (f\"dérive: {null_price_rate:.0%} des annonces sans prix \"\n176\t f\"(habituellement {statistics.median(rates):.0%}) — \"\n177\t \"le format de la source a probablement changé\")\n178\t return None\n179\t\n180\t\n181\tdef sync_source(con: sqlite3.Connection, source: str,\n182\t vehicles: list[Vehicle]) -> dict:\n183\t \"\"\"Synchronise les annonces d'une source.\n184\t\n185\t - nouvelle annonce -> insertion\n186\t - annonce modifiée -> mise à jour (comparaison de content_hash)\n187\t - annonce disparue -> miss_count += 1, puis active=0 après MISS_GRACE\n188\t exécutions consécutives (délai de grâce) — véhicule vendu ou retiré\n189\t - dérive détectée -> alerte consignée, retraits suspendus\n190\t \"\"\"\n191\t now = time.time()\n192\t added = updated = 0\n193\t seen_uids = set()\n194\t\n195\t n = len(vehicles)\n196\t null_price = sum(1 for v in vehicles if v.price is None)\n197\t null_km = sum(1 for v in vehicles if v.mileage_km is None)\n198\t null_price_rate = round(null_price / n, 3) if n else 0.0\n199\t\n200\t alert = _drift_alert(con, source, n, null_price_rate)\n201\t\n202\t for veh in vehicles:\n203\t seen_uids.add(veh.uid)\n204\t h = veh.content_hash()\n205\t row = con.execute(\"SELECT content_hash, price FROM vehicles WHERE uid=?\",\n206\t (veh.uid,)).fetchone()\n207\t params = dict(\n208\t uid=veh.uid, source=veh.source, external_id=veh.external_id,\n209\t url=veh.url, kind=veh.kind or \"auto\",\n210\t title=veh.title, make=veh.make, model=veh.model,\n211\t trim=veh.trim, year=veh.year, price=veh.price,\n212\t price_label=veh.price_label, mileage_km=veh.mileage_km,\n213\t mileage_label=veh.mileage_label, transmission=veh.transmission,\n214\t fuel=veh.fuel, drivetrain=veh.drivetrain, body_type=veh.body_type,\n215\t exterior_color=veh.exterior_color, interior_color=veh.interior_color,\n216\t engine=veh.engine, doors=veh.doors, seats=veh.seats, vin=veh.vin,\n217\t stock_number=veh.stock_number, dealer_name=veh.dealer_name,\n218\t city=veh.city, region=veh.region, lat=veh.lat, lng=veh.lng,\n219\t description=veh.description,\n220\t features=json.dumps(veh.features, ensure_ascii=False),\n221\t details=json.dumps(veh.details, ensure_ascii=False),\n222\t images=json.dumps(veh.images, ensure_ascii=False),\n223\t carfax_url=veh.carfax_url, content_hash=h, now=now,\n224\t )\n225\t if row is None:\n226\t con.execute(\n227\t \"\"\"INSERT INTO vehicles (uid, source, external_id, url, kind,\n228\t title, make, model, trim, year, price, price_label,\n229\t mileage_km, mileage_label, transmission, fuel, drivetrain,\n230\t body_type, exterior_color, interior_color, engine, doors,\n231\t seats, vin, stock_number, dealer_name, city, region,\n232\t lat, lng, description, features, details, images,\n233\t carfax_url, content_hash, first_seen, last_seen,\n234\t updated_at, miss_count, active)\n235\t VALUES (:uid,:source,:external_id,:url,:kind,:title,:make,\n236\t :model,:trim,:year,:price,:price_label,:mileage_km,\n237\t :mileage_label,:transmission,:fuel,:drivetrain,:body_type,\n238\t :exterior_color,:interior_color,:engine,:doors,:seats,:vin,\n239\t :stock_number,:dealer_name,:city,:region,:lat,:lng,\n240\t :description,:features,:details,:images,:carfax_url,\n241\t :content_hash,:now,:now,:now,0,1)\"\"\",\n242\t params)\n243\t if veh.price is not None: # prix initial = départ de l'historique\n244\t con.execute(\"INSERT INTO price_log (uid, ts, price) VALUES (?,?,?)\",\n245\t (veh.uid, now, veh.price))\n246\t added += 1\n247\t elif row[\"content_hash\"] != h:\n248\t con.execute(\n249\t \"\"\"UPDATE vehicles SET url=:url, kind=:kind, title=:title,\n250\t make=:make, model=:model, trim=:trim, year=:year, price=:price,\n251\t price_label=:price_label, mileage_km=:mileage_km,\n252\t mileage_label=:mileage_label, transmission=:transmission,\n253\t fuel=:fuel, drivetrain=:drivetrain, body_type=:body_type,\n254\t exterior_color=:exterior_color, interior_color=:interior_color,\n255\t engine=:engine, doors=:doors, seats=:seats, vin=:vin,\n256\t stock_number=:stock_number, dealer_name=:dealer_name,\n257\t city=:city, region=:region, lat=:lat, lng=:lng,\n258\t description=:description,\n259\t features=:features, details=:details, images=:images,\n260\t carfax_url=:carfax_url, content_hash=:content_hash,\n261\t last_seen=:now, updated_at=:now, miss_count=0, active=1\n262\t WHERE uid=:uid\"\"\", params)\n263\t if veh.price != row[\"price\"]: # changement de prix -> historique\n264\t con.execute(\"INSERT INTO price_log (uid, ts, price) VALUES (?,?,?)\",\n265\t (veh.uid, now, veh.price))\n266\t updated += 1\n267\t else:\n268\t con.execute(\n269\t \"UPDATE vehicles SET last_seen=?, miss_count=0, active=1 WHERE uid=?\",\n270\t (now, veh.uid))\n271\t\n272\t # Annonces de cette source qui n'apparaissent plus : délai de grâce,\n273\t # puis désactivation (véhicule vendu). Suspendu si dérive détectée.\n274\t removed = missed = 0\n275\t if not alert:\n276\t for r in con.execute(\n277\t \"SELECT uid, miss_count FROM vehicles WHERE source=? AND active=1\",\n278\t (source,)).fetchall():\n279\t if r[\"uid\"] in seen_uids:\n280\t continue\n281\t missed += 1\n282\t if r[\"miss_count\"] + 1 >= MISS_GRACE:\n283\t con.execute(\n284\t \"UPDATE vehicles SET active=0, miss_count=?, updated_at=?\"\n285\t \" WHERE uid=?\", (r[\"miss_count\"] + 1, now, r[\"uid\"]))\n286\t removed += 1\n287\t else:\n288\t con.execute(\"UPDATE vehicles SET miss_count=miss_count+1 WHERE uid=?\",\n289\t (r[\"uid\"],))\n290\t\n291\t stats = {\n292\t \"null_price_rate\": null_price_rate,\n293\t \"null_km_rate\": round(null_km / n, 3) if n else 0.0,\n294\t \"missed\": missed,\n295\t }\n296\t if alert:\n297\t stats[\"alert\"] = alert\n298\t con.execute(\n299\t \"INSERT INTO sync_log (source, ts, found, added, updated, removed, ok,\"\n300\t \" message, stats) VALUES (?,?,?,?,?,?,1,?,?)\",\n301\t (source, now, n, added, updated, removed, alert or \"ok\",\n302\t json.dumps(stats, ensure_ascii=False)))\n303\t con.commit()\n304\t out = {\"source\": source, \"found\": n, \"added\": added,\n305\t \"updated\": updated, \"removed\": removed}\n306\t if alert:\n307\t out[\"alert\"] = alert\n308\t return out\n309\t\n310\t\n311\tdef log_failure(con: sqlite3.Connection, source: str, message: str) -> None:\n312\t con.execute(\n313\t \"INSERT INTO sync_log (source, ts, found, added, updated, removed, ok, message)\"\n314\t \" VALUES (?,?,0,0,0,0,0,?)\", (source, time.time(), message))\n315\t con.commit()\n316\t\n317\t\n318\t# ---------------------------------------------------------------------------\n319\t# Cache des pages détail (« détail si nouveau/modifié »)\n320\t# ---------------------------------------------------------------------------\n321\t\n322\tdef get_cached_detail(con: sqlite3.Connection, source: str,\n323\t external_id: str, key: str) -> dict | None:\n324\t \"\"\"Payload détail mis en cache si la clé (hash liste) n'a pas changé.\"\"\"\n325\t row = con.execute(\n326\t \"SELECT key, payload FROM detail_cache WHERE source=? AND external_id=?\",\n327\t (source, external_id)).fetchone()\n328\t if row and row[\"key\"] == key and row[\"payload\"]:\n329\t try:\n330\t return json.loads(row[\"payload\"])\n331\t except ValueError:\n332\t return None\n333\t return None\n334\t\n335\t\n336\tdef put_cached_detail(con: sqlite3.Connection, source: str,\n337\t external_id: str, key: str, payload: dict) -> None:\n338\t con.execute(\n339\t \"INSERT INTO detail_cache (source, external_id, key, payload, fetched_at)\"\n340\t \" VALUES (?,?,?,?,?)\"\n341\t \" ON CONFLICT(source, external_id) DO UPDATE SET\"\n342\t \" key=excluded.key, payload=excluded.payload, fetched_at=excluded.fetched_at\",\n343\t (source, external_id, key, json.dumps(payload, ensure_ascii=False),\n344\t time.time()))\n345\t con.commit()\n346\t"}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"87d5c024-4ef7-4d96-af96-fe8daa9034f1","timestamp":"2026-08-25T14:19:15.000Z","tool_use_result":{"type":"text","file":{"filePath":"/Users/simon-pierreboucher/auto-ka/autoka/db.py","content":"# -----------------------------------------------------------------------------\n# Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n# Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n# db.py : persistance SQLite — upsert avec détection de changements,\n# cycle de vie avec délai de grâce (2 syncs), détection de dérive,\n# historique de prix (baisses de prix = signal clé en auto usagée),\n# cache des pages détail.\n# -----------------------------------------------------------------------------\nfrom __future__ import annotations\n\nimport json\nimport sqlite3\nimport statistics\nimport time\nfrom pathlib import Path\n\nfrom .schema import Vehicle\n\nDB_PATH = Path(__file__).resolve().parent.parent / \"data\" / \"autoka.db\"\n\n# Nombre d'exécutions consécutives où une annonce doit être absente de la\n# source avant d'être désactivée (délai de grâce contre les ratés ponctuels).\nMISS_GRACE = 2\n\n# Dérive : si une source retourne <= DRIFT_RATIO × sa médiane historique\n# (médiane >= DRIFT_MIN_BASE annonces), on alerte et on suspend les retraits.\nDRIFT_RATIO = 0.25\nDRIFT_MIN_BASE = 8\nDRIFT_HISTORY = 5\n\n_SCHEMA = \"\"\"\nCREATE TABLE IF NOT EXISTS vehicles (\n uid TEXT PRIMARY KEY,\n source TEXT NOT NULL,\n external_id TEXT NOT NULL,\n url TEXT,\n kind TEXT DEFAULT 'auto',\n title TEXT,\n make TEXT,\n model TEXT,\n trim TEXT,\n year INTEGER,\n price REAL,\n price_label TEXT,\n mileage_km REAL,\n mileage_label TEXT,\n transmission TEXT,\n fuel TEXT,\n drivetrain TEXT,\n body_type TEXT,\n exterior_color TEXT,\n interior_color TEXT,\n engine TEXT,\n doors INTEGER,\n seats INTEGER,\n vin TEXT,\n stock_number TEXT,\n dealer_name TEXT,\n city TEXT,\n region TEXT,\n description TEXT,\n features TEXT, -- JSON (liste de textes source)\n details TEXT, -- JSON (champs structurés)\n images TEXT, -- JSON\n carfax_url TEXT,\n content_hash TEXT,\n first_seen REAL,\n last_seen REAL,\n updated_at REAL,\n miss_count INTEGER DEFAULT 0,\n active INTEGER DEFAULT 1\n);\nCREATE INDEX IF NOT EXISTS idx_vehicles_source ON vehicles(source);\nCREATE INDEX IF NOT EXISTS idx_vehicles_make ON vehicles(make);\nCREATE INDEX IF NOT EXISTS idx_vehicles_region ON vehicles(region);\nCREATE INDEX IF NOT EXISTS idx_vehicles_active ON vehicles(active);\nCREATE INDEX IF NOT EXISTS idx_vehicles_price ON vehicles(price);\n\nCREATE TABLE IF NOT EXISTS sync_log (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n source TEXT,\n ts REAL,\n found INTEGER,\n added INTEGER,\n updated INTEGER,\n removed INTEGER,\n ok INTEGER,\n message TEXT,\n stats TEXT -- JSON : taux de champs null, missed, alerte…\n);\n\nCREATE TABLE IF NOT EXISTS detail_cache (\n source TEXT NOT NULL,\n external_id TEXT NOT NULL,\n key TEXT, -- hash du contenu « liste » de l'annonce\n payload TEXT, -- JSON opaque propre au connecteur\n fetched_at REAL,\n PRIMARY KEY (source, external_id)\n);\n\nCREATE TABLE IF NOT EXISTS price_log (\n uid TEXT NOT NULL,\n ts REAL NOT NULL,\n price REAL -- prix observé (NULL = retiré de l'affichage)\n);\nCREATE INDEX IF NOT EXISTS idx_price_log_uid ON price_log(uid);\n\"\"\"\n\n\n# Colonnes ajoutées après la v1 — migration automatique des bases existantes.\n_MIGRATIONS = {\n \"vehicles\": {\n \"kind\": \"TEXT DEFAULT 'auto'\",\n # GPS du concessionnaire (déduit de city — data/villes_gps.json) :\n # permet la recherche par rayon autour d'un point\n \"lat\": \"REAL\",\n \"lng\": \"REAL\",\n # dédoublonnage inter-sources par VIN (autoka/dedup.py) :\n # dup_of = uid de l'annonce canonique (NULL = canonique ou unique) ;\n # dup_sources = JSON des autres offres du même VIN (sur la canonique)\n \"dup_of\": \"TEXT\",\n \"dup_sources\": \"TEXT\",\n },\n}\n\n\ndef connect() -> sqlite3.Connection:\n DB_PATH.parent.mkdir(parents=True, exist_ok=True)\n con = sqlite3.connect(DB_PATH, timeout=30)\n con.row_factory = sqlite3.Row\n # WAL : plusieurs processus de sync peuvent écrire sans se bloquer\n con.execute(\"PRAGMA journal_mode=WAL\")\n con.execute(\"PRAGMA busy_timeout=15000\")\n con.executescript(_SCHEMA)\n for table, cols in _MIGRATIONS.items():\n existing = {r[\"name\"] for r in con.execute(f\"PRAGMA table_info({table})\")}\n for col, decl in cols.items():\n if col not in existing:\n con.execute(f\"ALTER TABLE {table} ADD COLUMN {col} {decl}\")\n # index sur des colonnes issues de migrations : après l'ALTER TABLE\n con.execute(\"CREATE INDEX IF NOT EXISTS idx_vehicles_kind ON vehicles(kind)\")\n con.execute(\n \"CREATE INDEX IF NOT EXISTS idx_vehicles_latlng ON vehicles(lat, lng)\")\n con.execute(\"CREATE INDEX IF NOT EXISTS idx_vehicles_vin ON vehicles(vin)\")\n con.execute(\n \"CREATE INDEX IF NOT EXISTS idx_vehicles_dup_of ON vehicles(dup_of)\")\n con.commit()\n return con\n\n\n# ---------------------------------------------------------------------------\n# Synchronisation d'une source\n# ---------------------------------------------------------------------------\n\ndef _drift_alert(con: sqlite3.Connection, source: str, found: int,\n null_price_rate: float) -> str | None:\n \"\"\"Détecte une dérive du connecteur (chute du volume ou des prix extraits).\"\"\"\n hist = con.execute(\n \"SELECT found, stats FROM sync_log WHERE source=? AND ok=1\"\n \" ORDER BY ts DESC LIMIT ?\", (source, DRIFT_HISTORY)).fetchall()\n if len(hist) < 3:\n return None\n med_found = statistics.median(r[\"found\"] for r in hist)\n if med_found >= DRIFT_MIN_BASE and found <= DRIFT_RATIO * med_found:\n return (f\"dérive: {found} annonce(s) trouvée(s) contre une médiane de \"\n f\"{med_found:.0f} — retraits suspendus, vérifier le connecteur\")\n if found >= DRIFT_MIN_BASE and null_price_rate >= 0.8:\n rates = []\n for r in hist:\n try:\n rates.append(json.loads(r[\"stats\"] or \"{}\")[\"null_price_rate\"])\n except (KeyError, ValueError, TypeError):\n continue\n if rates and statistics.median(rates) <= 0.3:\n return (f\"dérive: {null_price_rate:.0%} des annonces sans prix \"\n f\"(habituellement {statistics.median(rates):.0%}) — \"\n \"le format de la source a probablement changé\")\n return None\n\n\ndef sync_source(con: sqlite3.Connection, source: str,\n vehicles: list[Vehicle]) -> dict:\n \"\"\"Synchronise les annonces d'une source.\n\n - nouvelle annonce -> insertion\n - annonce modifiée -> mise à jour (comparaison de content_hash)\n - annonce disparue -> miss_count += 1, puis active=0 après MISS_GRACE\n exécutions consécutives (délai de grâce) — véhicule vendu ou retiré\n - dérive détectée -> alerte consignée, retraits suspendus\n \"\"\"\n now = time.time()\n added = updated = 0\n seen_uids = set()\n\n n = len(vehicles)\n null_price = sum(1 for v in vehicles if v.price is None)\n null_km = sum(1 for v in vehicles if v.mileage_km is None)\n null_price_rate = round(null_price / n, 3) if n else 0.0\n\n alert = _drift_alert(con, source, n, null_price_rate)\n\n for veh in vehicles:\n seen_uids.add(veh.uid)\n h = veh.content_hash()\n row = con.execute(\"SELECT content_hash, price FROM vehicles WHERE uid=?\",\n (veh.uid,)).fetchone()\n params = dict(\n uid=veh.uid, source=veh.source, external_id=veh.external_id,\n url=veh.url, kind=veh.kind or \"auto\",\n title=veh.title, make=veh.make, model=veh.model,\n trim=veh.trim, year=veh.year, price=veh.price,\n price_label=veh.price_label, mileage_km=veh.mileage_km,\n mileage_label=veh.mileage_label, transmission=veh.transmission,\n fuel=veh.fuel, drivetrain=veh.drivetrain, body_type=veh.body_type,\n exterior_color=veh.exterior_color, interior_color=veh.interior_color,\n engine=veh.engine, doors=veh.doors, seats=veh.seats, vin=veh.vin,\n stock_number=veh.stock_number, dealer_name=veh.dealer_name,\n city=veh.city, region=veh.region, lat=veh.lat, lng=veh.lng,\n description=veh.description,\n features=json.dumps(veh.features, ensure_ascii=False),\n details=json.dumps(veh.details, ensure_ascii=False),\n images=json.dumps(veh.images, ensure_ascii=False),\n carfax_url=veh.carfax_url, content_hash=h, now=now,\n )\n if row is None:\n con.execute(\n \"\"\"INSERT INTO vehicles (uid, source, external_id, url, kind,\n title, make, model, trim, year, price, price_label,\n mileage_km, mileage_label, transmission, fuel, drivetrain,\n body_type, exterior_color, interior_color, engine, doors,\n seats, vin, stock_number, dealer_name, city, region,\n lat, lng, description, features, details, images,\n carfax_url, content_hash, first_seen, last_seen,\n updated_at, miss_count, active)\n VALUES (:uid,:source,:external_id,:url,:kind,:title,:make,\n :model,:trim,:year,:price,:price_label,:mileage_km,\n :mileage_label,:transmission,:fuel,:drivetrain,:body_type,\n :exterior_color,:interior_color,:engine,:doors,:seats,:vin,\n :stock_number,:dealer_name,:city,:region,:lat,:lng,\n :description,:features,:details,:images,:carfax_url,\n :content_hash,:now,:now,:now,0,1)\"\"\",\n params)\n if veh.price is not None: # prix initial = départ de l'historique\n con.execute(\"INSERT INTO price_log (uid, ts, price) VALUES (?,?,?)\",\n (veh.uid, now, veh.price))\n added += 1\n elif row[\"content_hash\"] != h:\n con.execute(\n \"\"\"UPDATE vehicles SET url=:url, kind=:kind, title=:title,\n make=:make, model=:model, trim=:trim, year=:year, price=:price,\n price_label=:price_label, mileage_km=:mileage_km,\n mileage_label=:mileage_label, transmission=:transmission,\n fuel=:fuel, drivetrain=:drivetrain, body_type=:body_type,\n exterior_color=:exterior_color, interior_color=:interior_color,\n engine=:engine, doors=:doors, seats=:seats, vin=:vin,\n stock_number=:stock_number, dealer_name=:dealer_name,\n city=:city, region=:region, lat=:lat, lng=:lng,\n description=:description,\n features=:features, details=:details, images=:images,\n carfax_url=:carfax_url, content_hash=:content_hash,\n last_seen=:now, updated_at=:now, miss_count=0, active=1\n WHERE uid=:uid\"\"\", params)\n if veh.price != row[\"price\"]: # changement de prix -> historique\n con.execute(\"INSERT INTO price_log (uid, ts, price) VALUES (?,?,?)\",\n (veh.uid, now, veh.price))\n updated += 1\n else:\n con.execute(\n \"UPDATE vehicles SET last_seen=?, miss_count=0, active=1 WHERE uid=?\",\n (now, veh.uid))\n\n # Annonces de cette source qui n'apparaissent plus : délai de grâce,\n # puis désactivation (véhicule vendu). Suspendu si dérive détectée.\n removed = missed = 0\n if not alert:\n for r in con.execute(\n \"SELECT uid, miss_count FROM vehicles WHERE source=? AND active=1\",\n (source,)).fetchall():\n if r[\"uid\"] in seen_uids:\n continue\n missed += 1\n if r[\"miss_count\"] + 1 >= MISS_GRACE:\n con.execute(\n \"UPDATE vehicles SET active=0, miss_count=?, updated_at=?\"\n \" WHERE uid=?\", (r[\"miss_count\"] + 1, now, r[\"uid\"]))\n removed += 1\n else:\n con.execute(\"UPDATE vehicles SET miss_count=miss_count+1 WHERE uid=?\",\n (r[\"uid\"],))\n\n stats = {\n \"null_price_rate\": null_price_rate,\n \"null_km_rate\": round(null_km / n, 3) if n else 0.0,\n \"missed\": missed,\n }\n if alert:\n stats[\"alert\"] = alert\n con.execute(\n \"INSERT INTO sync_log (source, ts, found, added, updated, removed, ok,\"\n \" message, stats) VALUES (?,?,?,?,?,?,1,?,?)\",\n (source, now, n, added, updated, removed, alert or \"ok\",\n json.dumps(stats, ensure_ascii=False)))\n con.commit()\n out = {\"source\": source, \"found\": n, \"added\": added,\n \"updated\": updated, \"removed\": removed}\n if alert:\n out[\"alert\"] = alert\n return out\n\n\ndef log_failure(con: sqlite3.Connection, source: str, message: str) -> None:\n con.execute(\n \"INSERT INTO sync_log (source, ts, found, added, updated, removed, ok, message)\"\n \" VALUES (?,?,0,0,0,0,0,?)\", (source, time.time(), message))\n con.commit()\n\n\n# ---------------------------------------------------------------------------\n# Cache des pages détail (« détail si nouveau/modifié »)\n# ---------------------------------------------------------------------------\n\ndef get_cached_detail(con: sqlite3.Connection, source: str,\n external_id: str, key: str) -> dict | None:\n \"\"\"Payload détail mis en cache si la clé (hash liste) n'a pas changé.\"\"\"\n row = con.execute(\n \"SELECT key, payload FROM detail_cache WHERE source=? AND external_id=?\",\n (source, external_id)).fetchone()\n if row and row[\"key\"] == key and row[\"payload\"]:\n try:\n return json.loads(row[\"payload\"])\n except ValueError:\n return None\n return None\n\n\ndef put_cached_detail(con: sqlite3.Connection, source: str,\n external_id: str, key: str, payload: dict) -> None:\n con.execute(\n \"INSERT INTO detail_cache (source, external_id, key, payload, fetched_at)\"\n \" VALUES (?,?,?,?,?)\"\n \" ON CONFLICT(source, external_id) DO UPDATE SET\"\n \" key=excluded.key, payload=excluded.payload, fetched_at=excluded.fetched_at\",\n (source, external_id, key, json.dumps(payload, ensure_ascii=False),\n time.time()))\n con.commit()\n","numLines":346,"startLine":1,"totalLines":346}}}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcUAS6GGXJyn7DtUPMW","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01VuW6zr2nRGqzhYo38iXrcF","name":"Bash","input":{"command":"sqlite3 ~/auto-ka/data/autoka.db \"SELECT dup_sources FROM vehicles WHERE dup_sources IS NOT NULL AND dup_sources != '[]' AND dup_sources != '' LIMIT 2;\"","description":"Inspect dup_sources JSON format"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":550,"cache_read_input_tokens":64774,"cache_creation":{"ephemeral_5m_input_tokens":550,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"257bdf47-d60f-4adf-905e-7c65cddeb852"}} {"type":"permission_auto","tool":"Bash","key":"tout autoriser","input":{"command":"sqlite3 ~/auto-ka/data/autoka.db \"SELECT dup_sources FROM vehicles WHERE dup_sources IS NOT NULL AND dup_sources != '[]' AND dup_sources != '' LIMIT 2;\"","description":"Inspect dup_sources JSON format"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01VuW6zr2nRGqzhYo38iXrcF","type":"tool_result","content":"[{\"uid\": \"autousagee:5168959\", \"source\": \"autousagee\", \"url\": \"https://www.autousagee.ca/vehicule-usagee/denis-auto/202512/gmc-terrain-2022/5168959\", \"price\": 22895.0, \"dealer_name\": \"Denis Auto\", \"city\": \"Gatineau\"}]\n[{\"uid\": \"autousagee:5163986\", \"source\": \"autousagee\", \"url\": \"https://www.autousagee.ca/vehicule-usagee/denis-auto/202512/honda-cr-v-2018/5163986\", \"price\": 13495.0, \"dealer_name\": \"Denis Auto\", \"city\": \"Gatineau\"}]","is_error":false}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"d14fb84b-3026-4168-8c26-eae079037fa1","timestamp":"2026-08-25T14:19:16.256Z","tool_use_result":{"stdout":"[{\"uid\": \"autousagee:5168959\", \"source\": \"autousagee\", \"url\": \"https://www.autousagee.ca/vehicule-usagee/denis-auto/202512/gmc-terrain-2022/5168959\", \"price\": 22895.0, \"dealer_name\": \"Denis Auto\", \"city\": \"Gatineau\"}]\n[{\"uid\": \"autousagee:5163986\", \"source\": \"autousagee\", \"url\": \"https://www.autousagee.ca/vehicule-usagee/denis-auto/202512/honda-cr-v-2018/5163986\", \"price\": 13495.0, \"dealer_name\": \"Denis Auto\", \"city\": \"Gatineau\"}]","stderr":"","interrupted":false,"isImage":false,"noOutputExpected":false}}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"70f5fc96-dc7c-4636-a5e1-9a61e36af571","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcUiJ1KNnqkpsnPQVnk","type":"message","role":"assistant","content":[{"type":"thinking","thinking":"","signature":"CAISygMKpwEIERgCKkB68eQGO/+uextW6ASImO0/W+daRyqy+q8bja2YGhks7QahA1opUsmGUx/KYu1kAGFkcHj+/XfSc8byWp1WwnA6Mg5jbGF1ZGUtZmFibGUtNTgBQgh0aGlua2luZ1okNmZjYzhmODMtMWY5Yy00ZDMzLWJhMDctNGQ0ZGYzN2Q2N2Y1chAqK78ZzsiVUzI5xDv77u/SiAEBqAHqyLbUBrABAhIMJwinXEGRixWwsgGbGgxZtQBC92IOUxGPpiQiMGGieJXC2FpwD7LvqUjDTziynn29lr889QZHcxX2YTGhudzN3BCJeyFcmvIdgH/fsyrPARNaDDj/FoS3YnrlfkGeSHsBpQDFmCgrnP7/RgQSeFgJ4Gd0fR5foIDiomQZHjNmvTCsxHHN6dA546GNgm9H7xcK8nin1obucLNnqv9ljcsMqZYnX/LmyGp83o5yxNPVIW4ykwrpe/NElkZx8gvyJbHiqPyZkVhYDE8xyGsp8KfPkM3fYRr8OKvt6SPnlNU2+MxjqMhP4CHVuUhiE6RnjOqAa9Lzouqo5XUbNyaaIKqig4Kp60xy59hn2H1Ugod9vtI80I/o8iX2jGjKlrhQxxgB"}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":7338,"cache_read_input_tokens":65324,"cache_creation":{"ephemeral_5m_input_tokens":7338,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"2ef7f708-1582-4391-9fd3-08da73af6b8e"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcUiJ1KNnqkpsnPQVnk","type":"message","role":"assistant","content":[{"type":"text","text":"Backend compris. Je lis maintenant les fichiers frontend clés."}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":7338,"cache_read_input_tokens":65324,"cache_creation":{"ephemeral_5m_input_tokens":7338,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"1e46b138-f680-472a-ab3a-53d5958b5d24"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcUiJ1KNnqkpsnPQVnk","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01Jx1ghUg7xB4WDUyQLTn7Ja","name":"Read","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/frontend/src/pages/Vehicle.tsx"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":7338,"cache_read_input_tokens":65324,"cache_creation":{"ephemeral_5m_input_tokens":7338,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"a4dde14f-008f-4418-81e9-024f74c33e2c"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01Jx1ghUg7xB4WDUyQLTn7Ja","type":"tool_result","content":"1\t// -----------------------------------------------------------------------------\n2\t// Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n3\t// Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n4\t// Vehicle.tsx : fiche véhicule — galerie, specs, historique de prix, similaires\n5\t// -----------------------------------------------------------------------------\n6\timport { useEffect, useState } from \"react\";\n7\timport { Link, useParams } from \"react-router-dom\";\n8\timport { VehicleDetail, fetchVehicle, fmtDate, fmtKm, fmtPrice } from \"../api\";\n9\timport VehicleCard from \"../components/VehicleCard\";\n10\timport FavButton from \"../components/FavButton\";\n11\t\n12\texport default function VehiclePage() {\n13\t const { uid } = useParams<{ uid: string }>();\n14\t const [v, setV] = useState(null);\n15\t const [error, setError] = useState(false);\n16\t const [img, setImg] = useState(0);\n17\t\n18\t useEffect(() => {\n19\t setV(null); setError(false); setImg(0);\n20\t if (uid) fetchVehicle(uid).then(setV).catch(() => setError(true));\n21\t window.scrollTo(0, 0);\n22\t }, [uid]);\n23\t\n24\t useEffect(() => {\n25\t if (v) document.title = `${v.title} — ${fmtPrice(v.price)} | Auto·Ka`;\n26\t }, [v]);\n27\t\n28\t if (error)\n29\t return (\n30\t
\n31\t
🚗
\n32\t

Véhicule introuvable

\n33\t

Il a peut-être été vendu — l'inventaire évolue chaque jour.

\n34\t

← Retour à la recherche

\n35\t
\n36\t );\n37\t\n38\t if (!v)\n39\t return (\n40\t
\n41\t
\n42\t
\n43\t
\n44\t
\n45\t
\n46\t
\n47\t );\n48\t\n49\t const prevPrice = v.price_history.find(\n50\t (h) => h.price != null && v.price != null && h.price !== v.price\n51\t )?.price;\n52\t\n53\t const specs: [string, string][] = [\n54\t [\"Année\", v.year ? String(v.year) : \"—\"],\n55\t [\"Kilométrage\", fmtKm(v.mileage_km)],\n56\t [\"Transmission\", v.transmission || \"—\"],\n57\t [\"Carburant\", v.fuel || \"—\"],\n58\t [\"Motricité\", v.drivetrain || \"—\"],\n59\t [\"Carrosserie\", v.body_type || \"—\"],\n60\t [\"Moteur\", v.engine || \"—\"],\n61\t [\"Couleur ext.\", v.exterior_color || \"—\"],\n62\t [\"Couleur int.\", v.interior_color || \"—\"],\n63\t [\"Portes\", v.doors ? String(v.doors) : \"—\"],\n64\t [\"Places\", v.seats ? String(v.seats) : \"—\"],\n65\t [\"NIV (VIN)\", v.vin || \"—\"],\n66\t [\"No de stock\", v.stock_number || \"—\"],\n67\t ].filter(([, val]) => val !== \"—\") as [string, string][];\n68\t\n69\t return (\n70\t
\n71\t

\n72\t ← Retour à la recherche\n73\t

\n74\t
\n75\t
\n76\t {v.dealer_name || v.source} — {v.city}{v.region ? ` · ${v.region}` : \"\"}\n77\t

{v.title}

\n78\t
\n79\t
\n80\t
{fmtPrice(v.price)}
\n81\t {prevPrice != null && v.price != null && prevPrice > v.price && (\n82\t
{fmtPrice(prevPrice)}
\n83\t )}\n84\t
\n85\t
\n86\t\n87\t
\n88\t
\n89\t
\n90\t
\n91\t {v.images.length > 0 ? (\n92\t \n93\t {v.title}\n94\t \n95\t ) : (\n96\t
🚗
\n97\t )}\n98\t \n99\t
\n100\t {v.images.length > 1 && (\n101\t
\n102\t {v.images.map((u, i) => (\n103\t setImg(i)}\n110\t />\n111\t ))}\n112\t
\n113\t )}\n114\t
\n115\t\n116\t {v.description && (\n117\t
\n118\t

📝 Description du concessionnaire

\n119\t
{v.description}
\n120\t
\n121\t )}\n122\t
\n123\t\n124\t
\n125\t
\n126\t

🔧 Caractéristiques

\n127\t

\n128\t \n129\t {specs.map(([k, val]) => (\n130\t \n131\t \n132\t \n133\t \n134\t ))}\n135\t \n136\t
{k}{val}
\n137\t \n138\t Voir chez {v.dealer_name || \"le concessionnaire\"} →\n139\t \n140\t {v.carfax_url && (\n141\t \n148\t 📋 Rapport Carfax\n149\t \n150\t )}\n151\t
\n152\t annonce originale — prix et disponibilité confirmés à la source\n153\t
\n154\t
\n155\t\n156\t {v.features.length > 0 && (\n157\t
\n158\t

✨ Équipements ({v.features.length})

\n159\t
\n160\t {v.features.map((f) => (\n161\t {f}\n162\t ))}\n163\t
\n164\t
\n165\t )}\n166\t\n167\t {v.price_history.length > 1 && (\n168\t
\n169\t

📉 Historique de prix

\n170\t
\n171\t {v.price_history.map((h, i) => {\n172\t const next = v.price_history[i + 1];\n173\t const dir =\n174\t next?.price != null && h.price != null\n175\t ? h.price < next.price ? \"down\" : h.price > next.price ? \"up\" : \"\"\n176\t : \"\";\n177\t return (\n178\t
\n179\t {fmtDate(h.ts)}\n180\t {fmtPrice(h.price)}\n181\t
\n182\t );\n183\t })}\n184\t
\n185\t
\n186\t )}\n187\t\n188\t
\n189\t

ℹ️ Suivi Auto-Ka

\n190\t \n191\t \n192\t \n193\t \n194\t \n195\t \n196\t
Repéré le{fmtDate(v.first_seen)}
Vérifié le{fmtDate(v.updated_at)}
Statut{v.active ? \"En vente\" : \"Retiré / vendu\"}
\n197\t
\n198\t
\n199\t
\n200\t\n201\t {v.similar.length > 0 && (\n202\t
\n203\t Comparer\n204\t

\n205\t {v.make} {v.model} similaires au Québec\n206\t

\n207\t
\n208\t {v.similar.map((s) => (\n209\t \n210\t ))}\n211\t
\n212\t
\n213\t )}\n214\t
\n215\t );\n216\t}\n217\t"}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"9d1aec48-a50c-4a6b-bb11-77d0133b09c3","timestamp":"2026-08-25T14:19:23.755Z","tool_use_result":{"type":"text","file":{"filePath":"/Users/simon-pierreboucher/auto-ka/frontend/src/pages/Vehicle.tsx","content":"// -----------------------------------------------------------------------------\n// Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n// Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n// Vehicle.tsx : fiche véhicule — galerie, specs, historique de prix, similaires\n// -----------------------------------------------------------------------------\nimport { useEffect, useState } from \"react\";\nimport { Link, useParams } from \"react-router-dom\";\nimport { VehicleDetail, fetchVehicle, fmtDate, fmtKm, fmtPrice } from \"../api\";\nimport VehicleCard from \"../components/VehicleCard\";\nimport FavButton from \"../components/FavButton\";\n\nexport default function VehiclePage() {\n const { uid } = useParams<{ uid: string }>();\n const [v, setV] = useState(null);\n const [error, setError] = useState(false);\n const [img, setImg] = useState(0);\n\n useEffect(() => {\n setV(null); setError(false); setImg(0);\n if (uid) fetchVehicle(uid).then(setV).catch(() => setError(true));\n window.scrollTo(0, 0);\n }, [uid]);\n\n useEffect(() => {\n if (v) document.title = `${v.title} — ${fmtPrice(v.price)} | Auto·Ka`;\n }, [v]);\n\n if (error)\n return (\n
\n
🚗
\n

Véhicule introuvable

\n

Il a peut-être été vendu — l'inventaire évolue chaque jour.

\n

← Retour à la recherche

\n
\n );\n\n if (!v)\n return (\n
\n
\n
\n
\n
\n
\n
\n );\n\n const prevPrice = v.price_history.find(\n (h) => h.price != null && v.price != null && h.price !== v.price\n )?.price;\n\n const specs: [string, string][] = [\n [\"Année\", v.year ? String(v.year) : \"—\"],\n [\"Kilométrage\", fmtKm(v.mileage_km)],\n [\"Transmission\", v.transmission || \"—\"],\n [\"Carburant\", v.fuel || \"—\"],\n [\"Motricité\", v.drivetrain || \"—\"],\n [\"Carrosserie\", v.body_type || \"—\"],\n [\"Moteur\", v.engine || \"—\"],\n [\"Couleur ext.\", v.exterior_color || \"—\"],\n [\"Couleur int.\", v.interior_color || \"—\"],\n [\"Portes\", v.doors ? String(v.doors) : \"—\"],\n [\"Places\", v.seats ? String(v.seats) : \"—\"],\n [\"NIV (VIN)\", v.vin || \"—\"],\n [\"No de stock\", v.stock_number || \"—\"],\n ].filter(([, val]) => val !== \"—\") as [string, string][];\n\n return (\n
\n

\n ← Retour à la recherche\n

\n
\n
\n {v.dealer_name || v.source} — {v.city}{v.region ? ` · ${v.region}` : \"\"}\n

{v.title}

\n
\n
\n
{fmtPrice(v.price)}
\n {prevPrice != null && v.price != null && prevPrice > v.price && (\n
{fmtPrice(prevPrice)}
\n )}\n
\n
\n\n
\n
\n
\n
\n {v.images.length > 0 ? (\n \n {v.title}\n \n ) : (\n
🚗
\n )}\n \n
\n {v.images.length > 1 && (\n
\n {v.images.map((u, i) => (\n setImg(i)}\n />\n ))}\n
\n )}\n
\n\n {v.description && (\n
\n

📝 Description du concessionnaire

\n
{v.description}
\n
\n )}\n
\n\n
\n
\n

🔧 Caractéristiques

\n \n \n {specs.map(([k, val]) => (\n \n \n \n \n ))}\n \n
{k}{val}
\n \n Voir chez {v.dealer_name || \"le concessionnaire\"} →\n \n {v.carfax_url && (\n \n 📋 Rapport Carfax\n \n )}\n
\n annonce originale — prix et disponibilité confirmés à la source\n
\n
\n\n {v.features.length > 0 && (\n
\n

✨ Équipements ({v.features.length})

\n
\n {v.features.map((f) => (\n {f}\n ))}\n
\n
\n )}\n\n {v.price_history.length > 1 && (\n
\n

📉 Historique de prix

\n
\n {v.price_history.map((h, i) => {\n const next = v.price_history[i + 1];\n const dir =\n next?.price != null && h.price != null\n ? h.price < next.price ? \"down\" : h.price > next.price ? \"up\" : \"\"\n : \"\";\n return (\n
\n {fmtDate(h.ts)}\n {fmtPrice(h.price)}\n
\n );\n })}\n
\n
\n )}\n\n
\n

ℹ️ Suivi Auto-Ka

\n \n \n \n \n \n \n
Repéré le{fmtDate(v.first_seen)}
Vérifié le{fmtDate(v.updated_at)}
Statut{v.active ? \"En vente\" : \"Retiré / vendu\"}
\n
\n
\n
\n\n {v.similar.length > 0 && (\n
\n Comparer\n

\n {v.make} {v.model} similaires au Québec\n

\n
\n {v.similar.map((s) => (\n \n ))}\n
\n
\n )}\n
\n );\n}\n","numLines":217,"startLine":1,"totalLines":217}}}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcUiJ1KNnqkpsnPQVnk","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01M2Sg9PENzHTD36K5R5VNa5","name":"Read","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/frontend/src/api.ts"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":7338,"cache_read_input_tokens":65324,"cache_creation":{"ephemeral_5m_input_tokens":7338,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"822b895c-ce9a-4549-9e22-7fbf85254d00"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01M2Sg9PENzHTD36K5R5VNa5","type":"tool_result","content":"1\t// -----------------------------------------------------------------------------\n2\t// Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n3\t// Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n4\t// api.ts : client typé de l'API FastAPI\n5\t// -----------------------------------------------------------------------------\n6\t\n7\texport interface Vehicle {\n8\t uid: string;\n9\t kind: string;\n10\t source: string;\n11\t external_id: string;\n12\t url: string;\n13\t title: string;\n14\t make: string;\n15\t model: string;\n16\t trim: string;\n17\t year: number | null;\n18\t price: number | null;\n19\t price_label: string;\n20\t mileage_km: number | null;\n21\t mileage_label: string;\n22\t transmission: string;\n23\t fuel: string;\n24\t drivetrain: string;\n25\t body_type: string;\n26\t exterior_color: string;\n27\t interior_color: string;\n28\t engine: string;\n29\t doors: number | null;\n30\t seats: number | null;\n31\t vin: string;\n32\t stock_number: string;\n33\t dealer_name: string;\n34\t city: string;\n35\t region: string;\n36\t description: string;\n37\t features: string[];\n38\t details: Record;\n39\t images: string[];\n40\t carfax_url: string;\n41\t first_seen: number;\n42\t updated_at: number;\n43\t active: number;\n44\t}\n45\t\n46\texport interface VehicleDetail extends Vehicle {\n47\t price_history: { ts: number; price: number | null }[];\n48\t similar: Vehicle[];\n49\t}\n50\t\n51\texport interface Facets {\n52\t makes: { make: string; n: number }[];\n53\t models: { model: string; n: number }[];\n54\t body_types: string[];\n55\t fuels: string[];\n56\t regions: { region: string; n: number }[];\n57\t sources: { source: string; dealer_name: string; n: number }[];\n58\t years: { y_min: number | null; y_max: number | null }[];\n59\t}\n60\t\n61\texport interface Source {\n62\t id: string;\n63\t name: string;\n64\t url: string;\n65\t listing_url?: string;\n66\t city?: string;\n67\t region?: string;\n68\t platform?: string;\n69\t status?: string;\n70\t active_listings: number;\n71\t last_sync: number | null;\n72\t}\n73\t\n74\texport interface Stats {\n75\t total: number;\n76\t sources: number;\n77\t regions: number;\n78\t avg_price: number | null;\n79\t avg_km: number | null;\n80\t avg_year: number | null;\n81\t by_region: { region: string; n: number; avg_price: number | null }[];\n82\t by_make: { make: string; n: number; avg_price: number | null }[];\n83\t by_body: { body_type: string; n: number }[];\n84\t price_drops: {\n85\t uid: string; title: string; year: number | null; price: number;\n86\t prev_price: number; images: string[]; dealer_name: string; city: string;\n87\t }[];\n88\t recent_syncs: {\n89\t source: string; ts: number; found: number; added: number;\n90\t updated: number; removed: number; ok: number; message: string;\n91\t }[];\n92\t}\n93\t\n94\texport interface VehicleQuery {\n95\t kind?: string;\n96\t make?: string;\n97\t model?: string;\n98\t body_type?: string;\n99\t fuel?: string;\n100\t transmission?: string;\n101\t drivetrain?: string;\n102\t region?: string;\n103\t city?: string;\n104\t source?: string;\n105\t year_min?: number;\n106\t year_max?: number;\n107\t price_min?: number;\n108\t price_max?: number;\n109\t km_max?: number;\n110\t q?: string;\n111\t sort?: string;\n112\t limit?: number;\n113\t offset?: number;\n114\t}\n115\t\n116\t/** Slug URL — DOIT rester synchrone avec slugify() de autoka/seo.py. */\n117\texport function slugify(text: string, maxLen = 70): string {\n118\t const t = (text || \"\")\n119\t .normalize(\"NFKD\")\n120\t .replace(/[\\u0300-\\u036f]/g, \"\")\n121\t .replace(/[^a-zA-Z0-9]+/g, \"-\")\n122\t .replace(/^-+|-+$/g, \"\")\n123\t .toLowerCase()\n124\t .slice(0, maxLen)\n125\t .replace(/-+$/g, \"\");\n126\t return t || \"x\";\n127\t}\n128\t\n129\t/** URL canonique d'une fiche : /vehicule/{uid}/{slug lisible}. */\n130\texport function vehiclePath(v: Vehicle): string {\n131\t const base =\n132\t [v.year, v.make, v.model].filter(Boolean).join(\" \") ||\n133\t v.title || \"vehicule\";\n134\t return `/vehicule/${encodeURIComponent(v.uid)}/${slugify(base)}`;\n135\t}\n136\t\n137\tasync function get(path: string): Promise {\n138\t const res = await fetch(path);\n139\t if (!res.ok) throw new Error(`API ${res.status}`);\n140\t return res.json();\n141\t}\n142\t\n143\texport function fetchVehicles(query: VehicleQuery) {\n144\t const params = new URLSearchParams();\n145\t for (const [k, v] of Object.entries(query)) {\n146\t if (v !== undefined && v !== null && v !== \"\") params.set(k, String(v));\n147\t }\n148\t return get<{ total: number; count: number; vehicles: Vehicle[] }>(\n149\t `/api/vehicles?${params.toString()}`\n150\t );\n151\t}\n152\t\n153\texport function fetchVehicle(uid: string) {\n154\t return get(`/api/vehicles/${encodeURIComponent(uid)}`);\n155\t}\n156\t\n157\texport function fetchFacets(make?: string, kind?: string) {\n158\t const params = new URLSearchParams();\n159\t if (make) params.set(\"make\", make);\n160\t if (kind) params.set(\"kind\", kind);\n161\t const qs = params.toString();\n162\t return get(`/api/facets${qs ? `?${qs}` : \"\"}`);\n163\t}\n164\t\n165\texport function fetchSources() {\n166\t return get<{ sources: Source[] }>(\"/api/sources\");\n167\t}\n168\t\n169\texport function fetchStats() {\n170\t return get(\"/api/stats\");\n171\t}\n172\t\n173\t// -- noms d'affichage des sources (peuplés depuis /api/sources) ---------------\n174\tconst names: Record = {};\n175\t\n176\texport function registerSourceNames(sources: Source[]) {\n177\t for (const s of sources) names[s.id] = s.name;\n178\t}\n179\t\n180\texport function sourceName(id: string): string {\n181\t return names[id] ?? id;\n182\t}\n183\t\n184\t// -- compte (SSO KA ID — Groupe KA) --------------------------------------------\n185\texport interface Socials {\n186\t instagram?: string;\n187\t facebook?: string;\n188\t x?: string;\n189\t linkedin?: string;\n190\t tiktok?: string;\n191\t youtube?: string;\n192\t}\n193\t\n194\texport interface Me {\n195\t ka_id: string;\n196\t email: string;\n197\t name: string;\n198\t picture: string;\n199\t provider: string;\n200\t created: number | null;\n201\t // — profil Groupe KA (source de vérité : le hub groupe-ka.com) —\n202\t bio?: string;\n203\t city?: string;\n204\t job_title?: string;\n205\t company?: string;\n206\t age?: number | null;\n207\t website?: string;\n208\t socials?: Socials;\n209\t role_label?: string;\n210\t public_url?: string;\n211\t profile_source?: \"groupe-ka\" | \"local\";\n212\t}\n213\t\n214\texport async function fetchMe(): Promise<{ user: Me | null; enabled: boolean }> {\n215\t try {\n216\t const res = await fetch(\"/api/auth/me\");\n217\t if (!res.ok) return { user: null, enabled: false };\n218\t return res.json();\n219\t } catch {\n220\t return { user: null, enabled: false };\n221\t }\n222\t}\n223\t\n224\texport async function logout(): Promise {\n225\t await fetch(\"/api/auth/logout\", { method: \"POST\" });\n226\t}\n227\t\n228\t// -- favoris « Mon univers Ka » (magasin central : le hub groupe-ka.com) -------\n229\texport interface FavItem {\n230\t item_id: string;\n231\t title: string;\n232\t subtitle?: string;\n233\t price_label?: string;\n234\t image_url?: string;\n235\t url?: string;\n236\t app?: string;\n237\t created_at?: string;\n238\t}\n239\t\n240\texport function fetchFavorites() {\n241\t return get<{ ids: string[]; items: FavItem[] }>(\"/api/favorites\");\n242\t}\n243\t\n244\texport async function toggleFavorite(on: boolean, item: FavItem): Promise {\n245\t const res = await fetch(\"/api/favorites/toggle\", {\n246\t method: \"POST\",\n247\t headers: { \"Content-Type\": \"application/json\" },\n248\t body: JSON.stringify({ on, item }),\n249\t });\n250\t if (!res.ok) throw new Error(`API ${res.status}`);\n251\t}\n252\t\n253\t/** Transforme un véhicule en item de favori pour le hub Groupe KA. */\n254\texport function vehicleFavItem(v: Vehicle): FavItem {\n255\t const title =\n256\t [v.year, v.make, v.model].filter(Boolean).join(\" \") || v.title || \"Véhicule\";\n257\t const where =\n258\t [v.dealer_name || sourceName(v.source), v.region || v.city]\n259\t .filter(Boolean).join(\" · \") ||\n260\t (v.mileage_km != null ? fmtKm(v.mileage_km) : \"\");\n261\t return {\n262\t item_id: v.uid,\n263\t title,\n264\t subtitle: where,\n265\t price_label: fmtPrice(v.price),\n266\t image_url: v.images && v.images.length > 0 ? v.images[0] : \"\",\n267\t url: `https://www.auto-ka.com${vehiclePath(v)}`,\n268\t };\n269\t}\n270\t\n271\t// -- formatteurs ---------------------------------------------------------------\n272\texport const fmtPrice = (p: number | null | undefined) =>\n273\t p == null ? \"Prix sur demande\" : `${Math.round(p).toLocaleString(\"fr-CA\")} $`;\n274\t\n275\texport const fmtKm = (km: number | null | undefined) =>\n276\t km == null ? \"— km\" : `${Math.round(km).toLocaleString(\"fr-CA\")} km`;\n277\t\n278\texport const fmtDate = (ts: number | null | undefined) =>\n279\t ts == null\n280\t ? \"—\"\n281\t : new Date(ts * 1000).toLocaleDateString(\"fr-CA\", {\n282\t day: \"numeric\",\n283\t month: \"short\",\n284\t year: \"numeric\",\n285\t });\n286\t"}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"e5c46606-1750-4d2a-9abb-8856434bd87b","timestamp":"2026-08-25T14:19:23.798Z","tool_use_result":{"type":"text","file":{"filePath":"/Users/simon-pierreboucher/auto-ka/frontend/src/api.ts","content":"// -----------------------------------------------------------------------------\n// Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n// Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n// api.ts : client typé de l'API FastAPI\n// -----------------------------------------------------------------------------\n\nexport interface Vehicle {\n uid: string;\n kind: string;\n source: string;\n external_id: string;\n url: string;\n title: string;\n make: string;\n model: string;\n trim: string;\n year: number | null;\n price: number | null;\n price_label: string;\n mileage_km: number | null;\n mileage_label: string;\n transmission: string;\n fuel: string;\n drivetrain: string;\n body_type: string;\n exterior_color: string;\n interior_color: string;\n engine: string;\n doors: number | null;\n seats: number | null;\n vin: string;\n stock_number: string;\n dealer_name: string;\n city: string;\n region: string;\n description: string;\n features: string[];\n details: Record;\n images: string[];\n carfax_url: string;\n first_seen: number;\n updated_at: number;\n active: number;\n}\n\nexport interface VehicleDetail extends Vehicle {\n price_history: { ts: number; price: number | null }[];\n similar: Vehicle[];\n}\n\nexport interface Facets {\n makes: { make: string; n: number }[];\n models: { model: string; n: number }[];\n body_types: string[];\n fuels: string[];\n regions: { region: string; n: number }[];\n sources: { source: string; dealer_name: string; n: number }[];\n years: { y_min: number | null; y_max: number | null }[];\n}\n\nexport interface Source {\n id: string;\n name: string;\n url: string;\n listing_url?: string;\n city?: string;\n region?: string;\n platform?: string;\n status?: string;\n active_listings: number;\n last_sync: number | null;\n}\n\nexport interface Stats {\n total: number;\n sources: number;\n regions: number;\n avg_price: number | null;\n avg_km: number | null;\n avg_year: number | null;\n by_region: { region: string; n: number; avg_price: number | null }[];\n by_make: { make: string; n: number; avg_price: number | null }[];\n by_body: { body_type: string; n: number }[];\n price_drops: {\n uid: string; title: string; year: number | null; price: number;\n prev_price: number; images: string[]; dealer_name: string; city: string;\n }[];\n recent_syncs: {\n source: string; ts: number; found: number; added: number;\n updated: number; removed: number; ok: number; message: string;\n }[];\n}\n\nexport interface VehicleQuery {\n kind?: string;\n make?: string;\n model?: string;\n body_type?: string;\n fuel?: string;\n transmission?: string;\n drivetrain?: string;\n region?: string;\n city?: string;\n source?: string;\n year_min?: number;\n year_max?: number;\n price_min?: number;\n price_max?: number;\n km_max?: number;\n q?: string;\n sort?: string;\n limit?: number;\n offset?: number;\n}\n\n/** Slug URL — DOIT rester synchrone avec slugify() de autoka/seo.py. */\nexport function slugify(text: string, maxLen = 70): string {\n const t = (text || \"\")\n .normalize(\"NFKD\")\n .replace(/[\\u0300-\\u036f]/g, \"\")\n .replace(/[^a-zA-Z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\")\n .toLowerCase()\n .slice(0, maxLen)\n .replace(/-+$/g, \"\");\n return t || \"x\";\n}\n\n/** URL canonique d'une fiche : /vehicule/{uid}/{slug lisible}. */\nexport function vehiclePath(v: Vehicle): string {\n const base =\n [v.year, v.make, v.model].filter(Boolean).join(\" \") ||\n v.title || \"vehicule\";\n return `/vehicule/${encodeURIComponent(v.uid)}/${slugify(base)}`;\n}\n\nasync function get(path: string): Promise {\n const res = await fetch(path);\n if (!res.ok) throw new Error(`API ${res.status}`);\n return res.json();\n}\n\nexport function fetchVehicles(query: VehicleQuery) {\n const params = new URLSearchParams();\n for (const [k, v] of Object.entries(query)) {\n if (v !== undefined && v !== null && v !== \"\") params.set(k, String(v));\n }\n return get<{ total: number; count: number; vehicles: Vehicle[] }>(\n `/api/vehicles?${params.toString()}`\n );\n}\n\nexport function fetchVehicle(uid: string) {\n return get(`/api/vehicles/${encodeURIComponent(uid)}`);\n}\n\nexport function fetchFacets(make?: string, kind?: string) {\n const params = new URLSearchParams();\n if (make) params.set(\"make\", make);\n if (kind) params.set(\"kind\", kind);\n const qs = params.toString();\n return get(`/api/facets${qs ? `?${qs}` : \"\"}`);\n}\n\nexport function fetchSources() {\n return get<{ sources: Source[] }>(\"/api/sources\");\n}\n\nexport function fetchStats() {\n return get(\"/api/stats\");\n}\n\n// -- noms d'affichage des sources (peuplés depuis /api/sources) ---------------\nconst names: Record = {};\n\nexport function registerSourceNames(sources: Source[]) {\n for (const s of sources) names[s.id] = s.name;\n}\n\nexport function sourceName(id: string): string {\n return names[id] ?? id;\n}\n\n// -- compte (SSO KA ID — Groupe KA) --------------------------------------------\nexport interface Socials {\n instagram?: string;\n facebook?: string;\n x?: string;\n linkedin?: string;\n tiktok?: string;\n youtube?: string;\n}\n\nexport interface Me {\n ka_id: string;\n email: string;\n name: string;\n picture: string;\n provider: string;\n created: number | null;\n // — profil Groupe KA (source de vérité : le hub groupe-ka.com) —\n bio?: string;\n city?: string;\n job_title?: string;\n company?: string;\n age?: number | null;\n website?: string;\n socials?: Socials;\n role_label?: string;\n public_url?: string;\n profile_source?: \"groupe-ka\" | \"local\";\n}\n\nexport async function fetchMe(): Promise<{ user: Me | null; enabled: boolean }> {\n try {\n const res = await fetch(\"/api/auth/me\");\n if (!res.ok) return { user: null, enabled: false };\n return res.json();\n } catch {\n return { user: null, enabled: false };\n }\n}\n\nexport async function logout(): Promise {\n await fetch(\"/api/auth/logout\", { method: \"POST\" });\n}\n\n// -- favoris « Mon univers Ka » (magasin central : le hub groupe-ka.com) -------\nexport interface FavItem {\n item_id: string;\n title: string;\n subtitle?: string;\n price_label?: string;\n image_url?: string;\n url?: string;\n app?: string;\n created_at?: string;\n}\n\nexport function fetchFavorites() {\n return get<{ ids: string[]; items: FavItem[] }>(\"/api/favorites\");\n}\n\nexport async function toggleFavorite(on: boolean, item: FavItem): Promise {\n const res = await fetch(\"/api/favorites/toggle\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ on, item }),\n });\n if (!res.ok) throw new Error(`API ${res.status}`);\n}\n\n/** Transforme un véhicule en item de favori pour le hub Groupe KA. */\nexport function vehicleFavItem(v: Vehicle): FavItem {\n const title =\n [v.year, v.make, v.model].filter(Boolean).join(\" \") || v.title || \"Véhicule\";\n const where =\n [v.dealer_name || sourceName(v.source), v.region || v.city]\n .filter(Boolean).join(\" · \") ||\n (v.mileage_km != null ? fmtKm(v.mileage_km) : \"\");\n return {\n item_id: v.uid,\n title,\n subtitle: where,\n price_label: fmtPrice(v.price),\n image_url: v.images && v.images.length > 0 ? v.images[0] : \"\",\n url: `https://www.auto-ka.com${vehiclePath(v)}`,\n };\n}\n\n// -- formatteurs ---------------------------------------------------------------\nexport const fmtPrice = (p: number | null | undefined) =>\n p == null ? \"Prix sur demande\" : `${Math.round(p).toLocaleString(\"fr-CA\")} $`;\n\nexport const fmtKm = (km: number | null | undefined) =>\n km == null ? \"— km\" : `${Math.round(km).toLocaleString(\"fr-CA\")} km`;\n\nexport const fmtDate = (ts: number | null | undefined) =>\n ts == null\n ? \"—\"\n : new Date(ts * 1000).toLocaleDateString(\"fr-CA\", {\n day: \"numeric\",\n month: \"short\",\n year: \"numeric\",\n });\n","numLines":286,"startLine":1,"totalLines":286}}}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"2e8a144d-453a-44ee-86ae-584b486f61ea","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcVFiNKgFnHHPyzrJta","type":"message","role":"assistant","content":[{"type":"thinking","thinking":"","signature":"CAISmAMKpwEIERgCKkCmZNFMRaaES5t9LzmKW3ZmQ1sNBIsclyglrhHcoeh5v7EkuyABbLllLqnNyyKaGCzqQOYAKu+Cn8K+yh88ymzOMg5jbGF1ZGUtZmFibGUtNTgBQgh0aGlua2luZ1okNmZjYzhmODMtMWY5Yy00ZDMzLWJhMDctNGQ0ZGYzN2Q2N2Y1chAqK78ZzsiVUzI5xDv77u/SiAEBqAH0yLbUBrABAhIMaXe2++4v4OJTeC14GgwcYg7PzzosLWKh5i4iMO8hyuPlYnIJJmmkJ3CY6wTW5Ov+O+ERxl58HA7J4U+haIiu97B2Bc7O+5eoSa3NMyqdAeNW6MICTxkuFZx7Cm3O3Yht+EkRtxisY5Zs1D/WqzbSvxWXvTyNbFE4kV0d9P+ffCIOdmZPv6VlnssRUJJbSO3zS2UeZEpIGOqP1KKN7QhKTKqP/xABCKVQLlesw5sbr+SqTzKlF8tX3mZTg/aRbgyvLCMX3seEvJIZd4Od6BdPxbCN1s40G5xGzpSqqoBCWziQ7FWg24FjXw0vGLEYAQ=="}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":7505,"cache_read_input_tokens":72662,"cache_creation":{"ephemeral_5m_input_tokens":7505,"ephemeral_1h_input_tokens":0},"output_tokens":6,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"ac65e05a-c71b-4c66-a210-9d67c1abcae8"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcVFiNKgFnHHPyzrJta","type":"message","role":"assistant","content":[{"type":"text","text":"Je passe à l'implémentation. D'abord le module backend `vindecode.py`."}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":7505,"cache_read_input_tokens":72662,"cache_creation":{"ephemeral_5m_input_tokens":7505,"ephemeral_1h_input_tokens":0},"output_tokens":6,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"23e56fc5-ecde-4cb7-b351-3457d06c7a82"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcVFiNKgFnHHPyzrJta","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01NcDD5f525FDeCuXW6PKySq","name":"TodoWrite","input":{"todos":[{"content":"Créer autoka/vindecode.py (décodage VIN NHTSA + cache DB)","status":"in_progress","activeForm":"Création du module vindecode.py"},{"content":"Enrichir l'endpoint détail : marché, KA Score, VIN, autres offres","status":"pending","activeForm":"Enrichissement de l'endpoint détail"},{"content":"Frontend : lightbox galerie + badge marché","status":"pending","activeForm":"Ajout lightbox et badge marché"},{"content":"Frontend : sections analyse marché, autres offres, rappels, fiche VIN, KA Score, carte","status":"pending","activeForm":"Ajout des nouvelles sections détail"},{"content":"Frontend : historique prix en graphique","status":"pending","activeForm":"Graphique historique prix"},{"content":"Build frontend + tests locaux","status":"pending","activeForm":"Build et tests"},{"content":"pm2 restart + healthcheck + commit + push","status":"pending","activeForm":"Déploiement et push"}]},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":7505,"cache_read_input_tokens":72662,"cache_creation":{"ephemeral_5m_input_tokens":7505,"ephemeral_1h_input_tokens":0},"output_tokens":6,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"91a1ae80-71c6-4d41-887d-8a305c1b3f6e"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01NcDD5f525FDeCuXW6PKySq","type":"tool_result","content":"Todos have been modified successfully. Ensure that you continue to use the todo list to track your progress. Please proceed with the current tasks if applicable"}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"cbdc01c9-1fac-4c67-94c0-8fa7c12dc32a","timestamp":"2026-08-25T14:19:37.089Z","tool_use_result":{"oldTodos":[{"content":"Créer autoka/vindecode.py (décodage VIN NHTSA + cache DB)","status":"in_progress","activeForm":"Création du module vindecode.py"},{"content":"Enrichir l'endpoint détail : marché, KA Score, VIN, autres offres","status":"pending","activeForm":"Enrichissement de l'endpoint détail"},{"content":"Frontend : lightbox galerie + badge marché","status":"pending","activeForm":"Ajout lightbox et badge marché"},{"content":"Frontend : sections analyse marché, autres offres, rappels, fiche VIN, KA Score, carte","status":"pending","activeForm":"Ajout des nouvelles sections détail"},{"content":"Frontend : historique prix en graphique","status":"pending","activeForm":"Graphique historique prix"},{"content":"Build frontend + tests locaux","status":"pending","activeForm":"Build et tests"},{"content":"pm2 restart + healthcheck + commit + push","status":"pending","activeForm":"Déploiement et push"}],"newTodos":[{"content":"Créer autoka/vindecode.py (décodage VIN NHTSA + cache DB)","status":"in_progress","activeForm":"Création du module vindecode.py"},{"content":"Enrichir l'endpoint détail : marché, KA Score, VIN, autres offres","status":"pending","activeForm":"Enrichissement de l'endpoint détail"},{"content":"Frontend : lightbox galerie + badge marché","status":"pending","activeForm":"Ajout lightbox et badge marché"},{"content":"Frontend : sections analyse marché, autres offres, rappels, fiche VIN, KA Score, carte","status":"pending","activeForm":"Ajout des nouvelles sections détail"},{"content":"Frontend : historique prix en graphique","status":"pending","activeForm":"Graphique historique prix"},{"content":"Build frontend + tests locaux","status":"pending","activeForm":"Build et tests"},{"content":"pm2 restart + healthcheck + commit + push","status":"pending","activeForm":"Déploiement et push"}],"verificationNudgeNeeded":false}}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcVFiNKgFnHHPyzrJta","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_012XUcRCp3MgR1M5KopupBS6","name":"Write","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/autoka/vindecode.py","content":"# -----------------------------------------------------------------------------\n# Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n# Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n# vindecode.py : fiche technique constructeur via le VIN — API vPIC de la NHTSA\n# (gratuite, sans clé), décodage paresseux + cache SQLite.\n# -----------------------------------------------------------------------------\nfrom __future__ import annotations\n\nimport json\nimport sqlite3\nimport time\n\nimport requests\n\nVPIC_URL = \"https://vpic.nhtsa.dot.gov/api/vehicles/DecodeVINValuesBatch/\"\nTIMEOUT = 12\n\n# Champs vPIC retenus → libellé français affiché sur la fiche.\n# L'ordre du dict = l'ordre d'affichage.\n_FIELDS: dict[str, str] = {\n \"Trim\": \"Version (usine)\",\n \"Series\": \"Série\",\n \"BodyClass\": \"Carrosserie (usine)\",\n \"DriveType\": \"Motricité (usine)\",\n \"EngineCylinders\": \"Cylindres\",\n \"DisplacementL\": \"Cylindrée (L)\",\n \"EngineHP\": \"Puissance (ch)\",\n \"EngineConfiguration\": \"Configuration moteur\",\n \"FuelTypePrimary\": \"Carburant (usine)\",\n \"FuelTypeSecondary\": \"Carburant secondaire\",\n \"ElectrificationLevel\": \"Électrification\",\n \"BatteryKWh\": \"Batterie (kWh)\",\n \"TransmissionStyle\": \"Transmission (usine)\",\n \"TransmissionSpeeds\": \"Rapports\",\n \"Turbo\": \"Turbo\",\n \"Doors\": \"Portes (usine)\",\n \"Seats\": \"Places (usine)\",\n \"GVWR\": \"PNBV\",\n \"PlantCountry\": \"Pays d'assemblage\",\n \"PlantCity\": \"Ville d'assemblage\",\n \"ABS\": \"Freins ABS\",\n \"AirBagLocFront\": \"Coussins avant\",\n \"AirBagLocSide\": \"Coussins latéraux\",\n \"AirBagLocCurtain\": \"Coussins rideaux\",\n \"TPMS\": \"Surveillance pneus (TPMS)\",\n \"AdaptiveCruiseControl\": \"Régulateur adaptatif\",\n \"ForwardCollisionWarning\": \"Alerte de collision avant\",\n \"LaneDepartureWarning\": \"Alerte de sortie de voie\",\n \"BlindSpotMon\": \"Surveillance angles morts\",\n \"RearVisibilitySystem\": \"Caméra de recul\",\n}\n\n# Traductions des valeurs vPIC les plus fréquentes (anglais → français).\n_VALUES_FR: dict[str, str] = {\n \"Gasoline\": \"Essence\", \"Diesel\": \"Diesel\", \"Electric\": \"Électrique\",\n \"Sedan/Saloon\": \"Berline\", \"Hatchback/Liftback/Notchback\": \"Hayon\",\n \"Sport Utility Vehicle (SUV)/Multi-Purpose Vehicle (MPV)\": \"VUS\",\n \"Pickup\": \"Camionnette\", \"Minivan\": \"Minifourgonnette\",\n \"Coupe\": \"Coupé\", \"Convertible/Cabriolet\": \"Cabriolet\", \"Wagon\": \"Familiale\",\n \"4WD/4-Wheel Drive/4x4\": \"4x4\", \"AWD/All-Wheel Drive\": \"Intégrale (AWD)\",\n \"FWD/Front-Wheel Drive\": \"Traction (FWD)\",\n \"RWD/Rear-Wheel Drive\": \"Propulsion (RWD)\",\n \"Automatic\": \"Automatique\", \"Manual/Standard\": \"Manuelle\",\n \"Continuously Variable Transmission (CVT)\": \"CVT\",\n \"Automated Manual Transmission (AMT)\": \"Manuelle automatisée\",\n \"Dual-Clutch Transmission (DCT)\": \"Double embrayage (DCT)\",\n \"Strong HEV (Hybrid Electric Vehicle)\": \"Hybride\",\n \"Mild HEV (Hybrid Electric Vehicle)\": \"Hybride légère\",\n \"PHEV (Plug-in Hybrid Electric Vehicle)\": \"Hybride rechargeable\",\n \"BEV (Battery Electric Vehicle)\": \"100 % électrique\",\n \"Standard\": \"De série\", \"Optional\": \"En option\", \"Yes\": \"Oui\", \"No\": \"Non\",\n \"Direct\": \"Directe (TPMS direct)\", \"Indirect\": \"Indirecte\",\n \"1st Row (Driver and Passenger)\": \"1re rangée (conducteur et passager)\",\n \"1st and 2nd Rows\": \"1re et 2e rangées\",\n \"1st, 2nd and 3rd Rows\": \"1re, 2e et 3e rangées\",\n \"All Rows\": \"Toutes les rangées\",\n \"UNITED STATES (USA)\": \"États-Unis\", \"CANADA\": \"Canada\", \"MEXICO\": \"Mexique\",\n \"JAPAN\": \"Japon\", \"GERMANY\": \"Allemagne\", \"SOUTH KOREA\": \"Corée du Sud\",\n \"V-Shaped\": \"En V\", \"In-Line\": \"En ligne\", \"Horizontally opposed (boxer)\": \"Boxer\",\n}\n\n_SCHEMA = \"\"\"\nCREATE TABLE IF NOT EXISTS vin_decode (\n vin TEXT PRIMARY KEY,\n data TEXT, -- JSON {libellé fr: valeur} (vide = décodage sans résultat)\n fetched_at REAL\n);\n\"\"\"\n\n\ndef _ensure(con: sqlite3.Connection) -> None:\n con.executescript(_SCHEMA)\n\n\ndef _fr(value: str) -> str:\n return _VALUES_FR.get(value, value)\n\n\ndef _extract(raw: dict) -> dict[str, str]:\n out: dict[str, str] = {}\n for key, label in _FIELDS.items():\n val = (raw.get(key) or \"\").strip()\n if not val or val.lower() in (\"not applicable\", \"n/a\", \"0\"):\n continue\n out[label] = _fr(val)\n return out\n\n\ndef decode(con: sqlite3.Connection, vin: str) -> dict[str, str] | None:\n \"\"\"Fiche constructeur d'un VIN (cache DB, appel réseau au premier accès).\n\n Retourne un dict {libellé fr: valeur} ou None si indisponible.\n \"\"\"\n vin = (vin or \"\").strip().upper()\n if len(vin) != 17:\n return None\n _ensure(con)\n row = con.execute(\"SELECT data FROM vin_decode WHERE vin=?\", (vin,)).fetchone()\n if row is not None:\n try:\n data = json.loads(row[\"data\"] or \"{}\")\n except ValueError:\n data = {}\n return data or None\n try:\n resp = requests.post(VPIC_URL, data={\"format\": \"json\", \"data\": vin},\n timeout=TIMEOUT)\n resp.raise_for_status()\n results = resp.json().get(\"Results\") or []\n data = _extract(results[0]) if results else {}\n except Exception:\n # échec réseau : ne pas mettre en cache, on retentera au prochain accès\n return None\n con.execute(\n \"INSERT OR REPLACE INTO vin_decode (vin, data, fetched_at) VALUES (?,?,?)\",\n (vin, json.dumps(data, ensure_ascii=False), time.time()))\n con.commit()\n return data or None\n"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":7505,"cache_read_input_tokens":72662,"cache_creation":{"ephemeral_5m_input_tokens":7505,"ephemeral_1h_input_tokens":0},"output_tokens":6,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"50c93412-effb-47a5-9d30-2305cee7f836"}} {"type":"permission_auto","tool":"Write","key":"tout autoriser","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/autoka/vindecode.py","content":"# -----------------------------------------------------------------------------\n# Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n# Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n# vindecode.py : fiche technique constructeur via le VIN — API vPIC de la NHTSA\n# (gratuite, sans clé), décodage paresseux + cache SQLite.\n# -----------------------------------------------------------------------------\nfrom __future__ import annotations\n\nimport json\nimport sqlite3\nimport time\n\nimport requests\n\nVPIC_URL = \"https://vpic.nhtsa.dot.gov/api/vehicles/DecodeVINValuesBatch/\"\nTIMEOUT = 12\n\n# Champs vPIC retenus → libellé français affiché sur la fiche.\n# L'ordre du dict = l'ordre d'affichage.\n_FIELDS: dict[str, str] = {\n \"Trim\": \"Version (usine)\",\n \"Series\": \"Série\",\n \"BodyClass\": \"Carrosserie (usine)\",\n \"DriveType\": \"Motricité (usine)\",\n \"EngineCylinders\": \"Cylindres\",\n \"DisplacementL\": \"Cylindrée (L)\",\n \"EngineHP\": \"Puissance (ch)\",\n \"EngineConfiguration\": \"Configuration moteur\",\n \"FuelTypePrimary\": \"Carburant (usine)\",\n \"FuelTypeSecondary\": \"Carburant secondaire\",\n \"ElectrificationLevel\": \"Électrification\",\n \"BatteryKWh\": \"Batterie (kWh)\",\n \"TransmissionStyle\": \"Transmission (usine)\",\n \"TransmissionSpeeds\": \"Rapports\",\n \"Turbo\": \"Turbo\",\n \"Doors\": \"Portes (usine)\",\n \"Seats\": \"Places (usine)\",\n \"GVWR\": \"PNBV\",\n \"PlantCountry\": \"Pays d'assemblage\",\n \"PlantCity\": \"Ville d'assemblage\",\n \"ABS\": \"Freins ABS\",\n \"AirBagLocFront\": \"Coussins avant\",\n \"AirBagLocSide\": \"Coussins latéraux\",\n \"AirBagLocCurtain\": \"Coussins rideaux\",\n \"TPMS\": \"Surveillance pneus (TPMS)\",\n \"AdaptiveCruiseControl\": \"Régulateur adaptatif\",\n \"ForwardCollisionWarning\": \"Alerte de collision avant\",\n \"LaneDepartureWarning\": \"Alerte de sortie de voie\",\n \"BlindSpotMon\": \"Surveillance angles morts\",\n \"RearVisibilitySystem\": \"Caméra de recul\",\n}\n\n# Traductions des valeurs vPIC les plus fréquentes (anglais → français).\n_VALUES_FR: dict[str, str] = {\n \"Gasoline\": \"Essence\", \"Diesel\": \"Diesel\", \"Electric\": \"Électrique\",\n \"Sedan/Saloon\": \"Berline\", \"Hatchback/Liftback/Notchback\": \"Hayon\",\n \"Sport Utility Vehicle (SUV)/Multi-Purpose Vehicle (MPV)\": \"VUS\",\n \"Pickup\": \"Camionnette\", \"Minivan\": \"Minifourgonnette\",\n \"Coupe\": \"Coupé\", \"Convertible/Cabriolet\": \"Cabriolet\", \"Wagon\": \"Familiale\",\n \"4WD/4-Wheel Drive/4x4\": \"4x4\", \"AWD/All-Wheel Drive\": \"Intégrale (AWD)\",\n \"FWD/Front-Wheel Drive\": \"Traction (FWD)\",\n \"RWD/Rear-Wheel Drive\": \"Propulsion (RWD)\",\n \"Automatic\": \"Automatique\", \"Manual/Standard\": \"Manuelle\",\n \"Continuously Variable Transmission (CVT)\": \"CVT\",\n \"Automated Manual Transmission (AMT)\": \"Manuelle automatisée\",\n \"Dual-Clutch Transmission (DCT)\": \"Double embrayage (DCT)\",\n \"Strong HEV (Hybrid Electric Vehicle)\": \"Hybride\",\n \"Mild HEV (Hybrid Electric Vehicle)\": \"Hybride légère\",\n \"PHEV (Plug-in Hybrid Electric Vehicle)\": \"Hybride rechargeable\",\n \"BEV (Battery Electric Vehicle)\": \"100 % électrique\",\n \"Standard\": \"De série\", \"Optional\": \"En option\", \"Yes\": \"Oui\", \"No\": \"Non\",\n \"Direct\": \"Directe (TPMS direct)\", \"Indirect\": \"Indirecte\",\n \"1st Row (Driver and Passenger)\": \"1re rangée (conducteur et passager)\",\n \"1st and 2nd Rows\": \"1re et 2e rangées\",\n \"1st, 2nd and 3rd Rows\": \"1re, 2e et 3e rangées\",\n \"All Rows\": \"Toutes les rangées\",\n \"UNITED STATES (USA)\": \"États-Unis\", \"CANADA\": \"Canada\", \"MEXICO\": \"Mexique\",\n \"JAPAN\": \"Japon\", \"GERMANY\": \"Allemagne\", \"SOUTH KOREA\": \"Corée du Sud\",\n \"V-Shaped\": \"En V\", \"In-Line\": \"En ligne\", \"Horizontally opposed (boxer)\": \"Boxer\",\n}\n\n_SCHEMA = \"\"\"\nCREATE TABLE IF NOT EXISTS vin_decode (\n vin TEXT PRIMARY KEY,\n data TEXT, -- JSON {libellé fr: valeur} (vide = décodage sans résultat)\n fetched_at REAL\n);\n\"\"\"\n\n\ndef _ensure(con: sqlite3.Connection) -> None:\n con.executescript(_SCHEMA)\n\n\ndef _fr(value: str) -> str:\n return _VALUES_FR.get(value, value)\n\n\ndef _extract(raw: dict) -> dict[str, str]:\n out: dict[str, str] = {}\n for key, label in _FIELDS.items():\n val = (raw.get(key) or \"\").strip()\n if not val or val.lower() in (\"not applicable\", \"n/a\", \"0\"):\n continue\n out[label] = _fr(val)\n return out\n\n\ndef decode(con: sqlite3.Connection, vin: str) -> dict[str, str] | None:\n \"\"\"Fiche constructeur d'un VIN (cache DB, appel réseau au premier accès).\n\n Retourne un dict {libellé fr: valeur} ou None si indisponible.\n \"\"\"\n vin = (vin or \"\").strip().upper()\n if len(vin) != 17:\n return None\n _ensure(con)\n row = con.execute(\"SELECT data FROM vin_decode WHERE vin=?\", (vin,)).fetchone()\n if row is not None:\n try:\n data = json.loads(row[\"data\"] or \"{}\")\n except ValueError:\n data = {}\n return data or None\n try:\n resp = requests.post(VPIC_URL, data={\"format\": \"json\", \"data\": vin},\n timeout=TIMEOUT)\n resp.raise_for_status()\n results = resp.json().get(\"Results\") or []\n data = _extract(results[0]) if results else {}\n except Exception:\n # échec réseau : ne pas mettre en cache, on retentera au prochain accès\n return None\n con.execute(\n \"INSERT OR REPLACE INTO vin_decode (vin, data, fetched_at) VALUES (?,?,?)\",\n (vin, json.dumps(data, ensure_ascii=False), time.time()))\n con.commit()\n return data or None\n"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_012XUcRCp3MgR1M5KopupBS6","type":"tool_result","content":"File created successfully at: /Users/simon-pierreboucher/auto-ka/autoka/vindecode.py"}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"e23ec851-9e7a-4c7c-9ebf-f3812bb40ba7","timestamp":"2026-08-25T14:20:04.567Z","tool_use_result":{"type":"create","filePath":"/Users/simon-pierreboucher/auto-ka/autoka/vindecode.py","content":"# -----------------------------------------------------------------------------\n# Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n# Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n# vindecode.py : fiche technique constructeur via le VIN — API vPIC de la NHTSA\n# (gratuite, sans clé), décodage paresseux + cache SQLite.\n# -----------------------------------------------------------------------------\nfrom __future__ import annotations\n\nimport json\nimport sqlite3\nimport time\n\nimport requests\n\nVPIC_URL = \"https://vpic.nhtsa.dot.gov/api/vehicles/DecodeVINValuesBatch/\"\nTIMEOUT = 12\n\n# Champs vPIC retenus → libellé français affiché sur la fiche.\n# L'ordre du dict = l'ordre d'affichage.\n_FIELDS: dict[str, str] = {\n \"Trim\": \"Version (usine)\",\n \"Series\": \"Série\",\n \"BodyClass\": \"Carrosserie (usine)\",\n \"DriveType\": \"Motricité (usine)\",\n \"EngineCylinders\": \"Cylindres\",\n \"DisplacementL\": \"Cylindrée (L)\",\n \"EngineHP\": \"Puissance (ch)\",\n \"EngineConfiguration\": \"Configuration moteur\",\n \"FuelTypePrimary\": \"Carburant (usine)\",\n \"FuelTypeSecondary\": \"Carburant secondaire\",\n \"ElectrificationLevel\": \"Électrification\",\n \"BatteryKWh\": \"Batterie (kWh)\",\n \"TransmissionStyle\": \"Transmission (usine)\",\n \"TransmissionSpeeds\": \"Rapports\",\n \"Turbo\": \"Turbo\",\n \"Doors\": \"Portes (usine)\",\n \"Seats\": \"Places (usine)\",\n \"GVWR\": \"PNBV\",\n \"PlantCountry\": \"Pays d'assemblage\",\n \"PlantCity\": \"Ville d'assemblage\",\n \"ABS\": \"Freins ABS\",\n \"AirBagLocFront\": \"Coussins avant\",\n \"AirBagLocSide\": \"Coussins latéraux\",\n \"AirBagLocCurtain\": \"Coussins rideaux\",\n \"TPMS\": \"Surveillance pneus (TPMS)\",\n \"AdaptiveCruiseControl\": \"Régulateur adaptatif\",\n \"ForwardCollisionWarning\": \"Alerte de collision avant\",\n \"LaneDepartureWarning\": \"Alerte de sortie de voie\",\n \"BlindSpotMon\": \"Surveillance angles morts\",\n \"RearVisibilitySystem\": \"Caméra de recul\",\n}\n\n# Traductions des valeurs vPIC les plus fréquentes (anglais → français).\n_VALUES_FR: dict[str, str] = {\n \"Gasoline\": \"Essence\", \"Diesel\": \"Diesel\", \"Electric\": \"Électrique\",\n \"Sedan/Saloon\": \"Berline\", \"Hatchback/Liftback/Notchback\": \"Hayon\",\n \"Sport Utility Vehicle (SUV)/Multi-Purpose Vehicle (MPV)\": \"VUS\",\n \"Pickup\": \"Camionnette\", \"Minivan\": \"Minifourgonnette\",\n \"Coupe\": \"Coupé\", \"Convertible/Cabriolet\": \"Cabriolet\", \"Wagon\": \"Familiale\",\n \"4WD/4-Wheel Drive/4x4\": \"4x4\", \"AWD/All-Wheel Drive\": \"Intégrale (AWD)\",\n \"FWD/Front-Wheel Drive\": \"Traction (FWD)\",\n \"RWD/Rear-Wheel Drive\": \"Propulsion (RWD)\",\n \"Automatic\": \"Automatique\", \"Manual/Standard\": \"Manuelle\",\n \"Continuously Variable Transmission (CVT)\": \"CVT\",\n \"Automated Manual Transmission (AMT)\": \"Manuelle automatisée\",\n \"Dual-Clutch Transmission (DCT)\": \"Double embrayage (DCT)\",\n \"Strong HEV (Hybrid Electric Vehicle)\": \"Hybride\",\n \"Mild HEV (Hybrid Electric Vehicle)\": \"Hybride légère\",\n \"PHEV (Plug-in Hybrid Electric Vehicle)\": \"Hybride rechargeable\",\n \"BEV (Battery Electric Vehicle)\": \"100 % électrique\",\n \"Standard\": \"De série\", \"Optional\": \"En option\", \"Yes\": \"Oui\", \"No\": \"Non\",\n \"Direct\": \"Directe (TPMS direct)\", \"Indirect\": \"Indirecte\",\n \"1st Row (Driver and Passenger)\": \"1re rangée (conducteur et passager)\",\n \"1st and 2nd Rows\": \"1re et 2e rangées\",\n \"1st, 2nd and 3rd Rows\": \"1re, 2e et 3e rangées\",\n \"All Rows\": \"Toutes les rangées\",\n \"UNITED STATES (USA)\": \"États-Unis\", \"CANADA\": \"Canada\", \"MEXICO\": \"Mexique\",\n \"JAPAN\": \"Japon\", \"GERMANY\": \"Allemagne\", \"SOUTH KOREA\": \"Corée du Sud\",\n \"V-Shaped\": \"En V\", \"In-Line\": \"En ligne\", \"Horizontally opposed (boxer)\": \"Boxer\",\n}\n\n_SCHEMA = \"\"\"\nCREATE TABLE IF NOT EXISTS vin_decode (\n vin TEXT PRIMARY KEY,\n data TEXT, -- JSON {libellé fr: valeur} (vide = décodage sans résultat)\n fetched_at REAL\n);\n\"\"\"\n\n\ndef _ensure(con: sqlite3.Connection) -> None:\n con.executescript(_SCHEMA)\n\n\ndef _fr(value: str) -> str:\n return _VALUES_FR.get(value, value)\n\n\ndef _extract(raw: dict) -> dict[str, str]:\n out: dict[str, str] = {}\n for key, label in _FIELDS.items():\n val = (raw.get(key) or \"\").strip()\n if not val or val.lower() in (\"not applicable\", \"n/a\", \"0\"):\n continue\n out[label] = _fr(val)\n return out\n\n\ndef decode(con: sqlite3.Connection, vin: str) -> dict[str, str] | None:\n \"\"\"Fiche constructeur d'un VIN (cache DB, appel réseau au premier accès).\n\n Retourne un dict {libellé fr: valeur} ou None si indisponible.\n \"\"\"\n vin = (vin or \"\").strip().upper()\n if len(vin) != 17:\n return None\n _ensure(con)\n row = con.execute(\"SELECT data FROM vin_decode WHERE vin=?\", (vin,)).fetchone()\n if row is not None:\n try:\n data = json.loads(row[\"data\"] or \"{}\")\n except ValueError:\n data = {}\n return data or None\n try:\n resp = requests.post(VPIC_URL, data={\"format\": \"json\", \"data\": vin},\n timeout=TIMEOUT)\n resp.raise_for_status()\n results = resp.json().get(\"Results\") or []\n data = _extract(results[0]) if results else {}\n except Exception:\n # échec réseau : ne pas mettre en cache, on retentera au prochain accès\n return None\n con.execute(\n \"INSERT OR REPLACE INTO vin_decode (vin, data, fetched_at) VALUES (?,?,?)\",\n (vin, json.dumps(data, ensure_ascii=False), time.time()))\n con.commit()\n return data or None\n","structuredPatch":[],"originalFile":null,"userModified":false}}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"8fbc5fa0-92ef-47f5-a85d-e1b8e591895f","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcYG151mM6RG8FtPGmy","type":"message","role":"assistant","content":[{"type":"thinking","thinking":"","signature":"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"}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":3438,"cache_read_input_tokens":80167,"cache_creation":{"ephemeral_5m_input_tokens":3438,"ephemeral_1h_input_tokens":0},"output_tokens":4,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"9ef4ba7e-d2fa-4c5a-a5c8-5682872e0be5"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcYG151mM6RG8FtPGmy","type":"message","role":"assistant","content":[{"type":"text","text":"Module VIN créé. J'enrichis maintenant l'endpoint détail dans `web.py` (analyse marché, KA Score, fiche VIN)."}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":3438,"cache_read_input_tokens":80167,"cache_creation":{"ephemeral_5m_input_tokens":3438,"ephemeral_1h_input_tokens":0},"output_tokens":4,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"70831cf8-c55f-484f-842b-4278be059d04"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcYG151mM6RG8FtPGmy","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01Lnvk3Kowto7DcWmP3LP3Zh","name":"Edit","input":{"replace_all":false,"file_path":"/Users/simon-pierreboucher/auto-ka/autoka/web.py","old_string":"import json\nimport threading\nimport time\nfrom pathlib import Path","new_string":"import json\nimport statistics\nimport threading\nimport time\nfrom pathlib import Path"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":3438,"cache_read_input_tokens":80167,"cache_creation":{"ephemeral_5m_input_tokens":3438,"ephemeral_1h_input_tokens":0},"output_tokens":4,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"b313ff9a-4034-462b-92ee-b44ee752b0ee"}} {"type":"permission_auto","tool":"Edit","key":"tout autoriser","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/autoka/web.py","old_string":"import json\nimport threading\nimport time\nfrom pathlib import Path","new_string":"import json\nimport statistics\nimport threading\nimport time\nfrom pathlib import Path","replace_all":false}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01Lnvk3Kowto7DcWmP3LP3Zh","type":"tool_result","content":"The file /Users/simon-pierreboucher/auto-ka/autoka/web.py has been updated successfully."}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"5a682e0f-5d75-415e-a9ea-a4f092b5863e","timestamp":"2026-08-25T14:20:24.453Z","tool_use_result":{"filePath":"/Users/simon-pierreboucher/auto-ka/autoka/web.py","oldString":"import json\nimport threading\nimport time\nfrom pathlib import Path","newString":"import json\nimport statistics\nimport threading\nimport time\nfrom pathlib import Path","originalFile":"# -----------------------------------------------------------------------------\n# Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n# Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n# web.py : API FastAPI (JSON) + service du frontend React (frontend/dist)\n# -----------------------------------------------------------------------------\nfrom __future__ import annotations\n\nimport json\nimport threading\nimport time\nfrom pathlib import Path\n\nfrom fastapi import BackgroundTasks, Body, FastAPI, HTTPException, Query\nfrom fastapi.middleware.cors import CORSMiddleware\nfrom fastapi.middleware.gzip import GZipMiddleware\nfrom fastapi.responses import FileResponse, RedirectResponse\nfrom fastapi.staticfiles import StaticFiles\n\nfrom . import auth, db, ingest, seo\n\nROOT = Path(__file__).resolve().parent.parent\nSOURCES_PATH = ROOT / \"data\" / \"sources.json\"\nFRONTEND_DIST = ROOT / \"frontend\" / \"dist\"\n\napp = FastAPI(title=\"Auto-Ka API\", version=\"1.0\",\n description=\"Agrégateur de voitures usagées — province de Québec\")\napp.add_middleware(CORSMiddleware, allow_origins=[\"*\"],\n allow_methods=[\"*\"], allow_headers=[\"*\"])\napp.add_middleware(GZipMiddleware, minimum_size=1000)\n\n_sync_lock = threading.Lock()\n\n\ndef _row_to_dict(row) -> dict:\n d = dict(row)\n d[\"features\"] = json.loads(d.get(\"features\") or \"[]\")\n d[\"images\"] = json.loads(d.get(\"images\") or \"[]\")\n d[\"details\"] = json.loads(d.get(\"details\") or \"{}\")\n # autres offres du même VIN (dédoublonnage inter-sources — autoka/dedup.py)\n if d.get(\"dup_sources\"):\n try:\n d[\"dup_sources\"] = json.loads(d[\"dup_sources\"])\n except ValueError:\n d[\"dup_sources\"] = []\n return d\n\n\ndef _apply_filters(sql: str, args: list, *, make=None, model=None, body_type=None,\n fuel=None, transmission=None, drivetrain=None, region=None,\n city=None, source=None, year_min=None, year_max=None,\n price_min=None, price_max=None, km_max=None, q=None) -> str:\n if make:\n sql += \" AND make=?\"; args.append(make)\n if model:\n sql += \" AND model LIKE ?\"; args.append(f\"{model}%\")\n if body_type:\n sql += \" AND body_type=?\"; args.append(body_type)\n if fuel:\n if fuel == \"Hybride\": # inclut l'hybride rechargeable\n sql += \" AND fuel IN ('Hybride','Hybride rechargeable')\"\n else:\n sql += \" AND fuel=?\"; args.append(fuel)\n if transmission:\n sql += \" AND transmission=?\"; args.append(transmission)\n if drivetrain:\n sql += \" AND drivetrain=?\"; args.append(drivetrain)\n if region:\n sql += \" AND region=?\"; args.append(region)\n if city:\n sql += \" AND city LIKE ?\"; args.append(f\"%{city}%\")\n if source:\n sql += \" AND source=?\"; args.append(source)\n if year_min is not None:\n sql += \" AND year IS NOT NULL AND year>=?\"; args.append(year_min)\n if year_max is not None:\n sql += \" AND year IS NOT NULL AND year<=?\"; args.append(year_max)\n if price_min is not None:\n sql += \" AND price IS NOT NULL AND price>=?\"; args.append(price_min)\n if price_max is not None:\n sql += \" AND price IS NOT NULL AND price<=?\"; args.append(price_max)\n if km_max is not None:\n sql += \" AND mileage_km IS NOT NULL AND mileage_km<=?\"; args.append(km_max)\n if q:\n sql += (\" AND (title LIKE ? OR make LIKE ? OR model LIKE ?\"\n \" OR dealer_name LIKE ? OR city LIKE ?)\")\n args += [f\"%{q}%\"] * 5\n return sql\n\n\n_SORTS = {\n \"price_asc\": \"price IS NULL, price ASC\",\n \"price_desc\": \"price IS NULL, price DESC\",\n \"km_asc\": \"mileage_km IS NULL, mileage_km ASC\",\n \"year_desc\": \"year IS NULL, year DESC\",\n \"recent\": \"first_seen DESC\",\n}\n\n\n@app.get(\"/api/vehicles\")\ndef list_vehicles(\n kind: str = \"auto\",\n make: str | None = None,\n model: str | None = None,\n body_type: str | None = None,\n fuel: str | None = None,\n transmission: str | None = None,\n drivetrain: str | None = None,\n region: str | None = None,\n city: str | None = None,\n source: str | None = None,\n year_min: int | None = None,\n year_max: int | None = None,\n price_min: float | None = None,\n price_max: float | None = None,\n km_max: float | None = None,\n q: str | None = None,\n sort: str = \"recent\",\n active: int = 1,\n dedup: int = 1,\n limit: int = Query(60, le=500),\n offset: int = 0,\n):\n con = db.connect()\n sql = \"SELECT * FROM vehicles WHERE 1=1\"\n args: list = []\n if active in (0, 1):\n sql += \" AND active=?\"; args.append(active)\n if dedup: # masquer les doublons inter-sources (même VIN)\n sql += \" AND dup_of IS NULL\"\n if kind and kind != \"tous\":\n sql += \" AND kind=?\"; args.append(kind)\n sql = _apply_filters(sql, args, make=make, model=model, body_type=body_type,\n fuel=fuel, transmission=transmission,\n drivetrain=drivetrain, region=region, city=city,\n source=source, year_min=year_min, year_max=year_max,\n price_min=price_min, price_max=price_max,\n km_max=km_max, q=q)\n total = con.execute(f\"SELECT COUNT(*) c FROM ({sql})\", args).fetchone()[\"c\"]\n sql += f\" ORDER BY {_SORTS.get(sort, _SORTS['recent'])} LIMIT ? OFFSET ?\"\n args += [limit, offset]\n rows = [_row_to_dict(r) for r in con.execute(sql, args).fetchall()]\n con.close()\n return {\"total\": total, \"count\": len(rows), \"vehicles\": rows}\n\n\n@app.get(\"/api/vehicles/{uid}\")\ndef get_vehicle(uid: str):\n con = db.connect()\n row = con.execute(\"SELECT * FROM vehicles WHERE uid=?\", (uid,)).fetchone()\n d = None\n if row is not None:\n d = _row_to_dict(row)\n d[\"price_history\"] = [dict(r) for r in con.execute(\n \"SELECT ts, price FROM price_log WHERE uid=? ORDER BY ts DESC LIMIT 10\",\n (uid,)).fetchall()]\n # véhicules similaires : même marque+modèle, autres sources incluses\n if d.get(\"make\") and d.get(\"model\"):\n base_model = d[\"model\"].split()[0]\n d[\"similar\"] = [_row_to_dict(r) for r in con.execute(\n \"SELECT * FROM vehicles WHERE active=1 AND dup_of IS NULL\"\n \" AND make=? AND model LIKE ?\"\n \" AND uid<>? ORDER BY price IS NULL, price ASC LIMIT 6\",\n (d[\"make\"], f\"{base_model}%\", uid)).fetchall()]\n else:\n d[\"similar\"] = []\n con.close()\n if d is None:\n raise HTTPException(404, \"Véhicule introuvable\")\n return d\n\n\n@app.get(\"/api/vehicles/{uid}/recalls\")\ndef vehicle_recalls(uid: str):\n \"\"\"Rappels Transports Canada visant ce véhicule (marque/modèle/année).\"\"\"\n from . import recalls as recalls_mod\n con = db.connect()\n row = con.execute(\"SELECT make, model, year FROM vehicles WHERE uid=?\",\n (uid,)).fetchone()\n if row is None:\n con.close()\n raise HTTPException(404, \"Véhicule introuvable\")\n try:\n items = recalls_mod.for_vehicle(con, row[\"make\"], row[\"model\"],\n row[\"year\"])\n finally:\n con.close()\n return {\"uid\": uid, \"make\": row[\"make\"], \"model\": row[\"model\"],\n \"year\": row[\"year\"], \"count\": len(items), \"recalls\": items}\n\n\n@app.get(\"/api/dealers\")\ndef dealers():\n \"\"\"Coordonnées des concessionnaires suivis (autoka/dealers.py).\"\"\"\n from . import dealers as dealers_mod\n con = db.connect()\n try:\n rows = dealers_mod.list_dealers(con)\n finally:\n con.close()\n return {\"count\": len(rows), \"dealers\": rows}\n\n\n@app.get(\"/api/facets\")\ndef facets(make: str | None = None, kind: str = \"auto\"):\n \"\"\"Valeurs distinctes pour construire les filtres du frontend.\n\n `make` (optionnel) restreint la liste des modèles à cette marque —\n utilisé par le sélecteur « Modèle » dépendant de « Marque ».\n \"\"\"\n con = db.connect()\n kf = \"\" if kind in (\"\", \"tous\") else f\" AND kind='{'moto' if kind=='moto' else 'scooter' if kind=='scooter' else 'auto'}'\"\n kf += \" AND dup_of IS NULL\" # compter chaque véhicule une seule fois\n model_sql = (\"SELECT model, COUNT(*) n FROM vehicles\"\n \" WHERE active=1 AND model<>''\" + kf)\n model_args: list = []\n if make:\n model_sql += \" AND make=?\"\n model_args.append(make)\n out = {\n \"makes\": [dict(r) for r in con.execute(\n \"SELECT make, COUNT(*) n FROM vehicles WHERE active=1\" + kf + \" AND make<>''\"\n \" GROUP BY make ORDER BY n DESC\")],\n \"models\": [dict(r) for r in con.execute(\n model_sql + \" GROUP BY model ORDER BY n DESC LIMIT 80\", model_args)],\n \"body_types\": [r[\"body_type\"] for r in con.execute(\n \"SELECT DISTINCT body_type FROM vehicles WHERE active=1\" + kf + \"\"\n \" AND body_type<>'' ORDER BY body_type\")],\n \"fuels\": [r[\"fuel\"] for r in con.execute(\n \"SELECT DISTINCT fuel FROM vehicles WHERE active=1\" + kf + \" AND fuel<>''\"\n \" ORDER BY fuel\")],\n \"regions\": [dict(r) for r in con.execute(\n \"SELECT region, COUNT(*) n FROM vehicles WHERE active=1\" + kf + \" AND region<>''\"\n \" GROUP BY region ORDER BY n DESC\")],\n \"sources\": [dict(r) for r in con.execute(\n \"SELECT source, dealer_name, COUNT(*) n FROM vehicles WHERE active=1\" + kf + \"\"\n \" GROUP BY source ORDER BY n DESC\")],\n \"years\": [dict(r) for r in con.execute(\n \"SELECT MIN(year) y_min, MAX(year) y_max FROM vehicles\"\n \" WHERE active=1\" + kf + \" AND year IS NOT NULL\")],\n }\n con.close()\n return out\n\n\n@app.get(\"/api/sources\")\ndef sources():\n registry = json.loads(SOURCES_PATH.read_text(encoding=\"utf-8\"))[\"sources\"]\n con = db.connect()\n counts = {r[\"source\"]: r[\"n\"] for r in con.execute(\n \"SELECT source, COUNT(*) n FROM vehicles WHERE active=1 GROUP BY source\")}\n last = {r[\"source\"]: r[\"ts\"] for r in con.execute(\n \"SELECT source, MAX(ts) ts FROM sync_log WHERE ok=1 GROUP BY source\")}\n con.close()\n for s in registry:\n s[\"active_listings\"] = counts.get(s[\"id\"], 0)\n s[\"last_sync\"] = last.get(s[\"id\"])\n return {\"sources\": registry}\n\n\n@app.get(\"/api/stats\")\ndef stats(syncs_since_h: float | None = None):\n con = db.connect()\n row = con.execute(\n \"\"\"SELECT COUNT(*) total,\n COUNT(DISTINCT source) sources,\n COUNT(DISTINCT region) regions,\n AVG(price) avg_price,\n AVG(mileage_km) avg_km,\n AVG(year) avg_year\n FROM vehicles WHERE active=1 AND kind='auto'\n AND dup_of IS NULL\"\"\").fetchone()\n by_region = [dict(r) for r in con.execute(\n \"SELECT region, COUNT(*) n, ROUND(AVG(price)) avg_price FROM vehicles\"\n \" WHERE active=1 AND kind='auto' AND dup_of IS NULL\"\n \" AND region<>'' GROUP BY region ORDER BY n DESC\")]\n by_make = [dict(r) for r in con.execute(\n \"SELECT make, COUNT(*) n, ROUND(AVG(price)) avg_price FROM vehicles\"\n \" WHERE active=1 AND kind='auto' AND dup_of IS NULL\"\n \" AND make<>'' GROUP BY make ORDER BY n DESC LIMIT 20\")]\n by_body = [dict(r) for r in con.execute(\n \"SELECT body_type, COUNT(*) n FROM vehicles WHERE active=1 AND kind='auto'\"\n \" AND dup_of IS NULL\"\n \" AND body_type<>'' GROUP BY body_type ORDER BY n DESC\")]\n # baisses de prix récentes (signal d'aubaine)\n drops = [dict(r) for r in con.execute(\n \"\"\"SELECT v.uid, v.title, v.year, v.price, v.images, v.dealer_name, v.city,\n p.prev_price\n FROM vehicles v JOIN (\n SELECT uid, price prev_price,\n ROW_NUMBER() OVER (PARTITION BY uid ORDER BY ts DESC) rn\n FROM price_log) p ON p.uid=v.uid AND p.rn=2\n WHERE v.active=1 AND kind='auto' AND v.dup_of IS NULL\n AND v.price IS NOT NULL AND p.prev_price > v.price\n ORDER BY (p.prev_price - v.price) DESC LIMIT 12\"\"\")]\n for d in drops:\n d[\"images\"] = json.loads(d.get(\"images\") or \"[]\")[:1]\n # fenêtre de sync paramétrable (supervision api-ka) : ?syncs_since_h=6\n # retourne toutes les entrées de la fenêtre (les ~20 dernières sinon)\n if syncs_since_h is not None:\n log = [dict(r) for r in con.execute(\n \"SELECT * FROM sync_log WHERE ts >= ? ORDER BY ts DESC LIMIT 4000\",\n (time.time() - syncs_since_h * 3600,))]\n if len(log) < 20: # fenêtre trop courte -> minimum utile\n log = [dict(r) for r in con.execute(\n \"SELECT * FROM sync_log ORDER BY ts DESC LIMIT 20\")]\n else:\n log = [dict(r) for r in con.execute(\n \"SELECT * FROM sync_log ORDER BY ts DESC LIMIT 20\")]\n # enrichissements vague 2 : doublons VIN masqués, rappels TC, dealers\n extra = {\"vin_duplicates_masked\": con.execute(\n \"SELECT COUNT(*) c FROM vehicles WHERE active=1 AND dup_of IS NOT NULL\"\n ).fetchone()[\"c\"]}\n for key, query in (\n (\"recalls_total\", \"SELECT COUNT(DISTINCT recall_number) c FROM recalls\"),\n (\"dealers_total\", \"SELECT COUNT(*) c FROM dealers\")):\n try:\n extra[key] = con.execute(query).fetchone()[\"c\"]\n except Exception: # table pas encore créée\n extra[key] = 0\n con.close()\n return {**dict(row), **extra, \"by_region\": by_region, \"by_make\": by_make,\n \"by_body\": by_body, \"price_drops\": drops, \"recent_syncs\": log}\n\n\n@app.get(\"/api/stats/detailed\")\ndef stats_detailed():\n \"\"\"Agrégats complets du marché (source unique : autoka/marketstats.py).\"\"\"\n from . import marketstats\n return marketstats.compute()\n\n\n# --- Module Stats commun Groupe KA (contrat ka/stats/SPEC.md) ----------------\n\nKA_SITE = {\n \"wordmark\": \"Auto·Ka\",\n \"accent\": \"#ff5a2a\",\n \"domain\": \"www.auto-ka.com\",\n \"tagline\": \"Voitures usagées · tout le Québec · toujours à jour\",\n}\n\n\n@app.get(\"/api/stats/dashboard\")\ndef stats_dashboard(\n period: str = \"30j\",\n from_: str | None = Query(None, alias=\"from\"),\n to: str | None = None,\n):\n \"\"\"Tableau de bord analytique — contrat commun Groupe KA (cache 5 min).\"\"\"\n from . import statsdash\n try:\n return statsdash.dashboard(period, from_, to)\n except ValueError:\n raise HTTPException(400, \"Dates invalides (format attendu : YYYY-MM-DD)\")\n\n\n@app.get(\"/api/stats/report\")\ndef stats_report(\n period: str = \"30j\",\n from_: str | None = Query(None, alias=\"from\"),\n to: str | None = None,\n mode: str = \"complet\",\n):\n \"\"\"Rapport PDF estampillé Groupe-KA — 5 modes (SPEC v2) : complet,\n synthese, tendances, repartitions, donnees. Mode inconnu → complet.\"\"\"\n from fastapi.responses import Response\n from . import kapdf, statsdash\n try:\n dash = statsdash.dashboard(period, from_, to)\n except ValueError:\n raise HTTPException(400, \"Dates invalides (format attendu : YYYY-MM-DD)\")\n mode = mode if mode in kapdf.REPORT_MODES else \"complet\"\n pdf = kapdf.GroupeKAReport(site=KA_SITE, dashboard=dash, mode=mode).build()\n return Response(\n content=pdf, media_type=\"application/pdf\",\n headers={\"Content-Disposition\":\n f'attachment; filename=\"{kapdf.filename(\"auto-ka\", period, mode)}\"'})\n\n\n@app.get(\"/api/stats/catalog\")\ndef stats_catalog(\n period: str = \"30j\",\n from_: str | None = Query(None, alias=\"from\"),\n to: str | None = None,\n):\n \"\"\"v3 — blocs composables pour le constructeur de rapports personnalisés.\"\"\"\n from . import kapdf, statsdash\n try:\n dash = statsdash.dashboard(period, from_, to)\n except ValueError:\n raise HTTPException(400, \"Dates invalides (format attendu : YYYY-MM-DD)\")\n return {\"updated\": dash.get(\"updated\"), \"period\": dash.get(\"period\"),\n \"blocks\": kapdf.catalog(dash)}\n\n\n@app.post(\"/api/stats/report/custom\")\ndef stats_report_custom(spec: dict = Body(...)):\n \"\"\"v3 — rapport PDF personnalisé : {\"title\", \"period\", \"from\", \"to\",\n \"blocks\": [{\"key\": \"series:…\", \"render\": \"bar\"}, …]} (SPEC.md §3bis).\"\"\"\n from fastapi.responses import Response\n from . import kapdf, statsdash\n period = str(spec.get(\"period\") or \"30j\")\n try:\n dash = statsdash.dashboard(period, str(spec.get(\"from\") or \"\") or None,\n str(spec.get(\"to\") or \"\") or None)\n except ValueError:\n raise HTTPException(400, \"Dates invalides (format attendu : YYYY-MM-DD)\")\n known = {b[\"key\"] for b in kapdf.catalog(dash)}\n blocks = [b for b in (spec.get(\"blocks\") or [])\n if isinstance(b, dict) and b.get(\"key\") in known][:40]\n if not blocks:\n raise HTTPException(400, \"Aucun bloc valide dans la composition\")\n pdf = kapdf.GroupeKAReport(\n site=KA_SITE, dashboard=dash, mode=kapdf.CUSTOM_MODE,\n spec={\"title\": str(spec.get(\"title\") or \"\")[:80], \"blocks\": blocks},\n ).build()\n fname = kapdf.filename(\"auto-ka\", period, kapdf.CUSTOM_MODE)\n return Response(\n content=pdf, media_type=\"application/pdf\",\n headers={\"Content-Disposition\":\n f'attachment; filename=\"{fname}\"'})\n\n\n@app.get(\"/api/stats/rapport.pdf\")\ndef rapport_pdf():\n \"\"\"Rapport PDF « Le marché de l'occasion » — vue d'ensemble.\"\"\"\n from fastapi.responses import Response\n from . import pdfgen\n return Response(\n content=pdfgen.rapport_pdf(), media_type=\"application/pdf\",\n headers={\"Content-Disposition\":\n 'attachment; filename=\"auto-ka-rapport-marche.pdf\"'})\n\n\n@app.post(\"/api/sync\")\ndef trigger_sync(background: BackgroundTasks, source: str | None = None):\n \"\"\"Déclenche une synchronisation (équivalent d'un webhook entrant).\"\"\"\n def _job():\n with _sync_lock:\n ingest.run([source] if source else None)\n background.add_task(_job)\n return {\"status\": \"démarré\", \"source\": source or \"toutes\"}\n\n\n# --- Connexion KA ID (SSO Groupe KA) — AVANT le catch-all du SPA -------------\napp.include_router(auth.router)\napp.include_router(auth.fav_router) # favoris « Mon univers Ka » (hub central)\n\n# --- SEO : rendu serveur des pages publiques, sitemaps, robots.txt -----------\napp.include_router(seo.router)\n\n\n# --- Frontend React (build Vite) --------------------------------------------\nif FRONTEND_DIST.exists():\n app.mount(\"/assets\", StaticFiles(directory=FRONTEND_DIST / \"assets\"), name=\"assets\")\n\n # Documentation statique (/doc/) — servie avant le catch-all SPA\n doc_dir = FRONTEND_DIST / \"doc\"\n if doc_dir.is_dir():\n @app.get(\"/doc\", include_in_schema=False)\n def doc_slash():\n return RedirectResponse(\"/doc/\", status_code=308)\n\n app.mount(\"/doc\", StaticFiles(directory=doc_dir, html=True), name=\"doc\")\n\n @app.get(\"/{full_path:path}\")\n def spa(full_path: str):\n target = FRONTEND_DIST / full_path\n if full_path and target.is_file():\n return FileResponse(target)\n # Chemin inconnu : vrai 404 (le HTML embarque quand même le SPA,\n # l'utilisateur voit la page « introuvable » de React)\n return seo.render_404(\"/\" + full_path)\n","structuredPatch":[{"oldStart":6,"oldLines":6,"newStart":6,"newLines":7,"lines":[" from __future__ import annotations"," "," import json","+import statistics"," import threading"," import time"," from pathlib import Path"]}],"userModified":false,"replaceAll":false}}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcYG151mM6RG8FtPGmy","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01RYUxQzyUcWK11jvKsXkada","name":"Edit","input":{"replace_all":false,"file_path":"/Users/simon-pierreboucher/auto-ka/autoka/web.py","old_string":"@app.get(\"/api/vehicles/{uid}\")\ndef get_vehicle(uid: str):\n con = db.connect()\n row = con.execute(\"SELECT * FROM vehicles WHERE uid=?\", (uid,)).fetchone()\n d = None\n if row is not None:\n d = _row_to_dict(row)\n d[\"price_history\"] = [dict(r) for r in con.execute(\n \"SELECT ts, price FROM price_log WHERE uid=? ORDER BY ts DESC LIMIT 10\",\n (uid,)).fetchall()]\n # véhicules similaires : même marque+modèle, autres sources incluses\n if d.get(\"make\") and d.get(\"model\"):\n base_model = d[\"model\"].split()[0]\n d[\"similar\"] = [_row_to_dict(r) for r in con.execute(\n \"SELECT * FROM vehicles WHERE active=1 AND dup_of IS NULL\"\n \" AND make=? AND model LIKE ?\"\n \" AND uid<>? ORDER BY price IS NULL, price ASC LIMIT 6\",\n (d[\"make\"], f\"{base_model}%\", uid)).fetchall()]\n else:\n d[\"similar\"] = []\n con.close()\n if d is None:\n raise HTTPException(404, \"Véhicule introuvable\")\n return d","new_string":"def _market_analysis(con, d: dict) -> dict | None:\n \"\"\"Positionnement du prix face aux comparables (même marque/modèle,\n année ±1, doublons VIN exclus). Minimum 5 comparables avec prix.\"\"\"\n if not (d.get(\"make\") and d.get(\"model\") and d.get(\"price\")):\n return None\n base_model = d[\"model\"].split()[0]\n sql = (\"SELECT uid, price, mileage_km, year FROM vehicles\"\n \" WHERE active=1 AND dup_of IS NULL AND price IS NOT NULL\"\n \" AND make=? AND model LIKE ? AND uid<>?\")\n args: list = [d[\"make\"], f\"{base_model}%\", d[\"uid\"]]\n if d.get(\"year\"):\n sql += \" AND year BETWEEN ? AND ?\"\n args += [d[\"year\"] - 1, d[\"year\"] + 1]\n rows = con.execute(sql + \" LIMIT 500\", args).fetchall()\n prices = sorted(r[\"price\"] for r in rows)\n n = len(prices)\n if n < 5:\n return None\n price = d[\"price\"]\n med = statistics.median(prices)\n delta_pct = round((price - med) / med * 100, 1) if med else 0.0\n percentile = round(sum(1 for p in prices if p < price) / n * 100)\n if delta_pct <= -10:\n badge, label = \"excellent\", \"Excellent prix\"\n elif delta_pct <= -4:\n badge, label = \"good\", \"Bon prix\"\n elif delta_pct < 4:\n badge, label = \"fair\", \"Prix du marché\"\n else:\n badge, label = \"high\", \"Au-dessus du marché\"\n # nuage prix/km pour le graphique comparatif (échantillon)\n points = [{\"p\": r[\"price\"], \"km\": r[\"mileage_km\"]}\n for r in rows if r[\"mileage_km\"] is not None][:150]\n q = statistics.quantiles(prices, n=4) if n >= 4 else [prices[0], med, prices[-1]]\n return {\n \"n\": n, \"median\": round(med), \"p25\": round(q[0]), \"p75\": round(q[2]),\n \"min\": round(prices[0]), \"max\": round(prices[-1]),\n \"delta_pct\": delta_pct, \"percentile\": percentile,\n \"badge\": badge, \"label\": label, \"points\": points,\n }\n\n\ndef _ka_score(d: dict, market: dict | None) -> dict:\n \"\"\"Score composite Auto-Ka (0-100) : prix, kilométrage, fiche, fraîcheur.\"\"\"\n parts: list[dict] = []\n\n if market: # prix : sous la médiane des comparables = meilleur score\n parts.append({\"key\": \"prix\", \"label\": \"Prix vs marché\",\n \"score\": round(100 - market[\"percentile\"]), \"weight\": 40})\n\n if d.get(\"mileage_km\") is not None and d.get(\"year\"):\n age = max(time.localtime().tm_year - d[\"year\"], 0.5)\n expected = age * 17000 # usage annuel moyen au Québec\n ratio = d[\"mileage_km\"] / expected if expected else 1.0\n km_score = max(0, min(100, round(100 - (ratio - 0.4) * 100)))\n parts.append({\"key\": \"km\", \"label\": \"Kilométrage vs âge\",\n \"score\": km_score, \"weight\": 25})\n\n completeness = sum((\n bool(d.get(\"images\")) and len(d[\"images\"]) >= 5,\n bool(d.get(\"description\")),\n bool(d.get(\"features\")),\n bool(d.get(\"vin\")) and len(d.get(\"vin\") or \"\") == 17,\n bool(d.get(\"carfax_url\")),\n d.get(\"mileage_km\") is not None,\n bool(d.get(\"transmission\")) and bool(d.get(\"fuel\")),\n d.get(\"lat\") is not None,\n ))\n parts.append({\"key\": \"fiche\", \"label\": \"Qualité de la fiche\",\n \"score\": round(completeness / 8 * 100), \"weight\": 20})\n\n days = max((time.time() - (d.get(\"first_seen\") or time.time())) / 86400, 0)\n fresh = max(0, min(100, round(100 - days * 100 / 90))) # 0 après ~90 jours\n parts.append({\"key\": \"fraicheur\", \"label\": \"Fraîcheur de l'annonce\",\n \"score\": fresh, \"weight\": 15})\n\n total_w = sum(p[\"weight\"] for p in parts)\n overall = round(sum(p[\"score\"] * p[\"weight\"] for p in parts) / total_w)\n return {\"overall\": overall, \"parts\": parts}\n\n\n@app.get(\"/api/vehicles/{uid}\")\ndef get_vehicle(uid: str):\n con = db.connect()\n row = con.execute(\"SELECT * FROM vehicles WHERE uid=?\", (uid,)).fetchone()\n d = None\n if row is not None:\n d = _row_to_dict(row)\n d[\"price_history\"] = [dict(r) for r in con.execute(\n \"SELECT ts, price FROM price_log WHERE uid=? ORDER BY ts DESC LIMIT 30\",\n (uid,)).fetchall()]\n # véhicules similaires : même marque+modèle, autres sources incluses\n if d.get(\"make\") and d.get(\"model\"):\n base_model = d[\"model\"].split()[0]\n d[\"similar\"] = [_row_to_dict(r) for r in con.execute(\n \"SELECT * FROM vehicles WHERE active=1 AND dup_of IS NULL\"\n \" AND make=? AND model LIKE ?\"\n \" AND uid<>? ORDER BY price IS NULL, price ASC LIMIT 6\",\n (d[\"make\"], f\"{base_model}%\", uid)).fetchall()]\n else:\n d[\"similar\"] = []\n # enrichissements fiche : marché, score composite, fiche constructeur\n d[\"market\"] = _market_analysis(con, d)\n d[\"ka_score\"] = _ka_score(d, d[\"market\"])\n try:\n from . import vindecode\n d[\"vin_info\"] = vindecode.decode(con, d.get(\"vin\") or \"\")\n except Exception:\n d[\"vin_info\"] = None\n con.close()\n if d is None:\n raise HTTPException(404, \"Véhicule introuvable\")\n return d"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":3438,"cache_read_input_tokens":80167,"cache_creation":{"ephemeral_5m_input_tokens":3438,"ephemeral_1h_input_tokens":0},"output_tokens":4,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"5b65fd43-9f45-455e-bc3b-1ee1d156606a"}} {"type":"permission_auto","tool":"Edit","key":"tout autoriser","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/autoka/web.py","old_string":"@app.get(\"/api/vehicles/{uid}\")\ndef get_vehicle(uid: str):\n con = db.connect()\n row = con.execute(\"SELECT * FROM vehicles WHERE uid=?\", (uid,)).fetchone()\n d = None\n if row is not None:\n d = _row_to_dict(row)\n d[\"price_history\"] = [dict(r) for r in con.execute(\n \"SELECT ts, price FROM price_log WHERE uid=? ORDER BY ts DESC LIMIT 10\",\n (uid,)).fetchall()]\n # véhicules similaires : même marque+modèle, autres sources incluses\n if d.get(\"make\") and d.get(\"model\"):\n base_model = d[\"model\"].split()[0]\n d[\"similar\"] = [_row_to_dict(r) for r in con.execute(\n \"SELECT * FROM vehicles WHERE active=1 AND dup_of IS NULL\"\n \" AND make=? AND model LIKE ?\"\n \" AND uid<>? ORDER BY price IS NULL, price ASC LIMIT 6\",\n (d[\"make\"], f\"{base_model}%\", uid)).fetchall()]\n else:\n d[\"similar\"] = []\n con.close()\n if d is None:\n raise HTTPException(404, \"Véhicule introuvable\")\n return d","new_string":"def _market_analysis(con, d: dict) -> dict | None:\n \"\"\"Positionnement du prix face aux comparables (même marque/modèle,\n année ±1, doublons VIN exclus). Minimum 5 comparables avec prix.\"\"\"\n if not (d.get(\"make\") and d.get(\"model\") and d.get(\"price\")):\n return None\n base_model = d[\"model\"].split()[0]\n sql = (\"SELECT uid, price, mileage_km, year FROM vehicles\"\n \" WHERE active=1 AND dup_of IS NULL AND price IS NOT NULL\"\n \" AND make=? AND model LIKE ? AND uid<>?\")\n args: list = [d[\"make\"], f\"{base_model}%\", d[\"uid\"]]\n if d.get(\"year\"):\n sql += \" AND year BETWEEN ? AND ?\"\n args += [d[\"year\"] - 1, d[\"year\"] + 1]\n rows = con.execute(sql + \" LIMIT 500\", args).fetchall()\n prices = sorted(r[\"price\"] for r in rows)\n n = len(prices)\n if n < 5:\n return None\n price = d[\"price\"]\n med = statistics.median(prices)\n delta_pct = round((price - med) / med * 100, 1) if med else 0.0\n percentile = round(sum(1 for p in prices if p < price) / n * 100)\n if delta_pct <= -10:\n badge, label = \"excellent\", \"Excellent prix\"\n elif delta_pct <= -4:\n badge, label = \"good\", \"Bon prix\"\n elif delta_pct < 4:\n badge, label = \"fair\", \"Prix du marché\"\n else:\n badge, label = \"high\", \"Au-dessus du marché\"\n # nuage prix/km pour le graphique comparatif (échantillon)\n points = [{\"p\": r[\"price\"], \"km\": r[\"mileage_km\"]}\n for r in rows if r[\"mileage_km\"] is not None][:150]\n q = statistics.quantiles(prices, n=4) if n >= 4 else [prices[0], med, prices[-1]]\n return {\n \"n\": n, \"median\": round(med), \"p25\": round(q[0]), \"p75\": round(q[2]),\n \"min\": round(prices[0]), \"max\": round(prices[-1]),\n \"delta_pct\": delta_pct, \"percentile\": percentile,\n \"badge\": badge, \"label\": label, \"points\": points,\n }\n\n\ndef _ka_score(d: dict, market: dict | None) -> dict:\n \"\"\"Score composite Auto-Ka (0-100) : prix, kilométrage, fiche, fraîcheur.\"\"\"\n parts: list[dict] = []\n\n if market: # prix : sous la médiane des comparables = meilleur score\n parts.append({\"key\": \"prix\", \"label\": \"Prix vs marché\",\n \"score\": round(100 - market[\"percentile\"]), \"weight\": 40})\n\n if d.get(\"mileage_km\") is not None and d.get(\"year\"):\n age = max(time.localtime().tm_year - d[\"year\"], 0.5)\n expected = age * 17000 # usage annuel moyen au Québec\n ratio = d[\"mileage_km\"] / expected if expected else 1.0\n km_score = max(0, min(100, round(100 - (ratio - 0.4) * 100)))\n parts.append({\"key\": \"km\", \"label\": \"Kilométrage vs âge\",\n \"score\": km_score, \"weight\": 25})\n\n completeness = sum((\n bool(d.get(\"images\")) and len(d[\"images\"]) >= 5,\n bool(d.get(\"description\")),\n bool(d.get(\"features\")),\n bool(d.get(\"vin\")) and len(d.get(\"vin\") or \"\") == 17,\n bool(d.get(\"carfax_url\")),\n d.get(\"mileage_km\") is not None,\n bool(d.get(\"transmission\")) and bool(d.get(\"fuel\")),\n d.get(\"lat\") is not None,\n ))\n parts.append({\"key\": \"fiche\", \"label\": \"Qualité de la fiche\",\n \"score\": round(completeness / 8 * 100), \"weight\": 20})\n\n days = max((time.time() - (d.get(\"first_seen\") or time.time())) / 86400, 0)\n fresh = max(0, min(100, round(100 - days * 100 / 90))) # 0 après ~90 jours\n parts.append({\"key\": \"fraicheur\", \"label\": \"Fraîcheur de l'annonce\",\n \"score\": fresh, \"weight\": 15})\n\n total_w = sum(p[\"weight\"] for p in parts)\n overall = round(sum(p[\"score\"] * p[\"weight\"] for p in parts) / total_w)\n return {\"overall\": overall, \"parts\": parts}\n\n\n@app.get(\"/api/vehicles/{uid}\")\ndef get_vehicle(uid: str):\n con = db.connect()\n row = con.execute(\"SELECT * FROM vehicles WHERE uid=?\", (uid,)).fetchone()\n d = None\n if row is not None:\n d = _row_to_dict(row)\n d[\"price_history\"] = [dict(r) for r in con.execute(\n \"SELECT ts, price FROM price_log WHERE uid=? ORDER BY ts DESC LIMIT 30\",\n (uid,)).fetchall()]\n # véhicules similaires : même marque+modèle, autres sources incluses\n if d.get(\"make\") and d.get(\"model\"):\n base_model = d[\"model\"].split()[0]\n d[\"similar\"] = [_row_to_dict(r) for r in con.execute(\n \"SELECT * FROM vehicles WHERE active=1 AND dup_of IS NULL\"\n \" AND make=? AND model LIKE ?\"\n \" AND uid<>? ORDER BY price IS NULL, price ASC LIMIT 6\",\n (d[\"make\"], f\"{base_model}%\", uid)).fetchall()]\n else:\n d[\"similar\"] = []\n # enrichissements fiche : marché, score composite, fiche constructeur\n d[\"market\"] = _market_analysis(con, d)\n d[\"ka_score\"] = _ka_score(d, d[\"market\"])\n try:\n from . import vindecode\n d[\"vin_info\"] = vindecode.decode(con, d.get(\"vin\") or \"\")\n except Exception:\n d[\"vin_info\"] = None\n con.close()\n if d is None:\n raise HTTPException(404, \"Véhicule introuvable\")\n return d","replace_all":false}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01RYUxQzyUcWK11jvKsXkada","type":"tool_result","content":"The file /Users/simon-pierreboucher/auto-ka/autoka/web.py has been updated successfully."}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"741afad9-f01e-4402-8073-afa87ee5a0a1","timestamp":"2026-08-25T14:20:47.543Z","tool_use_result":{"filePath":"/Users/simon-pierreboucher/auto-ka/autoka/web.py","oldString":"@app.get(\"/api/vehicles/{uid}\")\ndef get_vehicle(uid: str):\n con = db.connect()\n row = con.execute(\"SELECT * FROM vehicles WHERE uid=?\", (uid,)).fetchone()\n d = None\n if row is not None:\n d = _row_to_dict(row)\n d[\"price_history\"] = [dict(r) for r in con.execute(\n \"SELECT ts, price FROM price_log WHERE uid=? ORDER BY ts DESC LIMIT 10\",\n (uid,)).fetchall()]\n # véhicules similaires : même marque+modèle, autres sources incluses\n if d.get(\"make\") and d.get(\"model\"):\n base_model = d[\"model\"].split()[0]\n d[\"similar\"] = [_row_to_dict(r) for r in con.execute(\n \"SELECT * FROM vehicles WHERE active=1 AND dup_of IS NULL\"\n \" AND make=? AND model LIKE ?\"\n \" AND uid<>? ORDER BY price IS NULL, price ASC LIMIT 6\",\n (d[\"make\"], f\"{base_model}%\", uid)).fetchall()]\n else:\n d[\"similar\"] = []\n con.close()\n if d is None:\n raise HTTPException(404, \"Véhicule introuvable\")\n return d","newString":"def _market_analysis(con, d: dict) -> dict | None:\n \"\"\"Positionnement du prix face aux comparables (même marque/modèle,\n année ±1, doublons VIN exclus). Minimum 5 comparables avec prix.\"\"\"\n if not (d.get(\"make\") and d.get(\"model\") and d.get(\"price\")):\n return None\n base_model = d[\"model\"].split()[0]\n sql = (\"SELECT uid, price, mileage_km, year FROM vehicles\"\n \" WHERE active=1 AND dup_of IS NULL AND price IS NOT NULL\"\n \" AND make=? AND model LIKE ? AND uid<>?\")\n args: list = [d[\"make\"], f\"{base_model}%\", d[\"uid\"]]\n if d.get(\"year\"):\n sql += \" AND year BETWEEN ? AND ?\"\n args += [d[\"year\"] - 1, d[\"year\"] + 1]\n rows = con.execute(sql + \" LIMIT 500\", args).fetchall()\n prices = sorted(r[\"price\"] for r in rows)\n n = len(prices)\n if n < 5:\n return None\n price = d[\"price\"]\n med = statistics.median(prices)\n delta_pct = round((price - med) / med * 100, 1) if med else 0.0\n percentile = round(sum(1 for p in prices if p < price) / n * 100)\n if delta_pct <= -10:\n badge, label = \"excellent\", \"Excellent prix\"\n elif delta_pct <= -4:\n badge, label = \"good\", \"Bon prix\"\n elif delta_pct < 4:\n badge, label = \"fair\", \"Prix du marché\"\n else:\n badge, label = \"high\", \"Au-dessus du marché\"\n # nuage prix/km pour le graphique comparatif (échantillon)\n points = [{\"p\": r[\"price\"], \"km\": r[\"mileage_km\"]}\n for r in rows if r[\"mileage_km\"] is not None][:150]\n q = statistics.quantiles(prices, n=4) if n >= 4 else [prices[0], med, prices[-1]]\n return {\n \"n\": n, \"median\": round(med), \"p25\": round(q[0]), \"p75\": round(q[2]),\n \"min\": round(prices[0]), \"max\": round(prices[-1]),\n \"delta_pct\": delta_pct, \"percentile\": percentile,\n \"badge\": badge, \"label\": label, \"points\": points,\n }\n\n\ndef _ka_score(d: dict, market: dict | None) -> dict:\n \"\"\"Score composite Auto-Ka (0-100) : prix, kilométrage, fiche, fraîcheur.\"\"\"\n parts: list[dict] = []\n\n if market: # prix : sous la médiane des comparables = meilleur score\n parts.append({\"key\": \"prix\", \"label\": \"Prix vs marché\",\n \"score\": round(100 - market[\"percentile\"]), \"weight\": 40})\n\n if d.get(\"mileage_km\") is not None and d.get(\"year\"):\n age = max(time.localtime().tm_year - d[\"year\"], 0.5)\n expected = age * 17000 # usage annuel moyen au Québec\n ratio = d[\"mileage_km\"] / expected if expected else 1.0\n km_score = max(0, min(100, round(100 - (ratio - 0.4) * 100)))\n parts.append({\"key\": \"km\", \"label\": \"Kilométrage vs âge\",\n \"score\": km_score, \"weight\": 25})\n\n completeness = sum((\n bool(d.get(\"images\")) and len(d[\"images\"]) >= 5,\n bool(d.get(\"description\")),\n bool(d.get(\"features\")),\n bool(d.get(\"vin\")) and len(d.get(\"vin\") or \"\") == 17,\n bool(d.get(\"carfax_url\")),\n d.get(\"mileage_km\") is not None,\n bool(d.get(\"transmission\")) and bool(d.get(\"fuel\")),\n d.get(\"lat\") is not None,\n ))\n parts.append({\"key\": \"fiche\", \"label\": \"Qualité de la fiche\",\n \"score\": round(completeness / 8 * 100), \"weight\": 20})\n\n days = max((time.time() - (d.get(\"first_seen\") or time.time())) / 86400, 0)\n fresh = max(0, min(100, round(100 - days * 100 / 90))) # 0 après ~90 jours\n parts.append({\"key\": \"fraicheur\", \"label\": \"Fraîcheur de l'annonce\",\n \"score\": fresh, \"weight\": 15})\n\n total_w = sum(p[\"weight\"] for p in parts)\n overall = round(sum(p[\"score\"] * p[\"weight\"] for p in parts) / total_w)\n return {\"overall\": overall, \"parts\": parts}\n\n\n@app.get(\"/api/vehicles/{uid}\")\ndef get_vehicle(uid: str):\n con = db.connect()\n row = con.execute(\"SELECT * FROM vehicles WHERE uid=?\", (uid,)).fetchone()\n d = None\n if row is not None:\n d = _row_to_dict(row)\n d[\"price_history\"] = [dict(r) for r in con.execute(\n \"SELECT ts, price FROM price_log WHERE uid=? ORDER BY ts DESC LIMIT 30\",\n (uid,)).fetchall()]\n # véhicules similaires : même marque+modèle, autres sources incluses\n if d.get(\"make\") and d.get(\"model\"):\n base_model = d[\"model\"].split()[0]\n d[\"similar\"] = [_row_to_dict(r) for r in con.execute(\n \"SELECT * FROM vehicles WHERE active=1 AND dup_of IS NULL\"\n \" AND make=? AND model LIKE ?\"\n \" AND uid<>? ORDER BY price IS NULL, price ASC LIMIT 6\",\n (d[\"make\"], f\"{base_model}%\", uid)).fetchall()]\n else:\n d[\"similar\"] = []\n # enrichissements fiche : marché, score composite, fiche constructeur\n d[\"market\"] = _market_analysis(con, d)\n d[\"ka_score\"] = _ka_score(d, d[\"market\"])\n try:\n from . import vindecode\n d[\"vin_info\"] = vindecode.decode(con, d.get(\"vin\") or \"\")\n except Exception:\n d[\"vin_info\"] = None\n con.close()\n if d is None:\n raise HTTPException(404, \"Véhicule introuvable\")\n return d","originalFile":"# -----------------------------------------------------------------------------\n# Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n# Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n# web.py : API FastAPI (JSON) + service du frontend React (frontend/dist)\n# -----------------------------------------------------------------------------\nfrom __future__ import annotations\n\nimport json\nimport statistics\nimport threading\nimport time\nfrom pathlib import Path\n\nfrom fastapi import BackgroundTasks, Body, FastAPI, HTTPException, Query\nfrom fastapi.middleware.cors import CORSMiddleware\nfrom fastapi.middleware.gzip import GZipMiddleware\nfrom fastapi.responses import FileResponse, RedirectResponse\nfrom fastapi.staticfiles import StaticFiles\n\nfrom . import auth, db, ingest, seo\n\nROOT = Path(__file__).resolve().parent.parent\nSOURCES_PATH = ROOT / \"data\" / \"sources.json\"\nFRONTEND_DIST = ROOT / \"frontend\" / \"dist\"\n\napp = FastAPI(title=\"Auto-Ka API\", version=\"1.0\",\n description=\"Agrégateur de voitures usagées — province de Québec\")\napp.add_middleware(CORSMiddleware, allow_origins=[\"*\"],\n allow_methods=[\"*\"], allow_headers=[\"*\"])\napp.add_middleware(GZipMiddleware, minimum_size=1000)\n\n_sync_lock = threading.Lock()\n\n\ndef _row_to_dict(row) -> dict:\n d = dict(row)\n d[\"features\"] = json.loads(d.get(\"features\") or \"[]\")\n d[\"images\"] = json.loads(d.get(\"images\") or \"[]\")\n d[\"details\"] = json.loads(d.get(\"details\") or \"{}\")\n # autres offres du même VIN (dédoublonnage inter-sources — autoka/dedup.py)\n if d.get(\"dup_sources\"):\n try:\n d[\"dup_sources\"] = json.loads(d[\"dup_sources\"])\n except ValueError:\n d[\"dup_sources\"] = []\n return d\n\n\ndef _apply_filters(sql: str, args: list, *, make=None, model=None, body_type=None,\n fuel=None, transmission=None, drivetrain=None, region=None,\n city=None, source=None, year_min=None, year_max=None,\n price_min=None, price_max=None, km_max=None, q=None) -> str:\n if make:\n sql += \" AND make=?\"; args.append(make)\n if model:\n sql += \" AND model LIKE ?\"; args.append(f\"{model}%\")\n if body_type:\n sql += \" AND body_type=?\"; args.append(body_type)\n if fuel:\n if fuel == \"Hybride\": # inclut l'hybride rechargeable\n sql += \" AND fuel IN ('Hybride','Hybride rechargeable')\"\n else:\n sql += \" AND fuel=?\"; args.append(fuel)\n if transmission:\n sql += \" AND transmission=?\"; args.append(transmission)\n if drivetrain:\n sql += \" AND drivetrain=?\"; args.append(drivetrain)\n if region:\n sql += \" AND region=?\"; args.append(region)\n if city:\n sql += \" AND city LIKE ?\"; args.append(f\"%{city}%\")\n if source:\n sql += \" AND source=?\"; args.append(source)\n if year_min is not None:\n sql += \" AND year IS NOT NULL AND year>=?\"; args.append(year_min)\n if year_max is not None:\n sql += \" AND year IS NOT NULL AND year<=?\"; args.append(year_max)\n if price_min is not None:\n sql += \" AND price IS NOT NULL AND price>=?\"; args.append(price_min)\n if price_max is not None:\n sql += \" AND price IS NOT NULL AND price<=?\"; args.append(price_max)\n if km_max is not None:\n sql += \" AND mileage_km IS NOT NULL AND mileage_km<=?\"; args.append(km_max)\n if q:\n sql += (\" AND (title LIKE ? OR make LIKE ? OR model LIKE ?\"\n \" OR dealer_name LIKE ? OR city LIKE ?)\")\n args += [f\"%{q}%\"] * 5\n return sql\n\n\n_SORTS = {\n \"price_asc\": \"price IS NULL, price ASC\",\n \"price_desc\": \"price IS NULL, price DESC\",\n \"km_asc\": \"mileage_km IS NULL, mileage_km ASC\",\n \"year_desc\": \"year IS NULL, year DESC\",\n \"recent\": \"first_seen DESC\",\n}\n\n\n@app.get(\"/api/vehicles\")\ndef list_vehicles(\n kind: str = \"auto\",\n make: str | None = None,\n model: str | None = None,\n body_type: str | None = None,\n fuel: str | None = None,\n transmission: str | None = None,\n drivetrain: str | None = None,\n region: str | None = None,\n city: str | None = None,\n source: str | None = None,\n year_min: int | None = None,\n year_max: int | None = None,\n price_min: float | None = None,\n price_max: float | None = None,\n km_max: float | None = None,\n q: str | None = None,\n sort: str = \"recent\",\n active: int = 1,\n dedup: int = 1,\n limit: int = Query(60, le=500),\n offset: int = 0,\n):\n con = db.connect()\n sql = \"SELECT * FROM vehicles WHERE 1=1\"\n args: list = []\n if active in (0, 1):\n sql += \" AND active=?\"; args.append(active)\n if dedup: # masquer les doublons inter-sources (même VIN)\n sql += \" AND dup_of IS NULL\"\n if kind and kind != \"tous\":\n sql += \" AND kind=?\"; args.append(kind)\n sql = _apply_filters(sql, args, make=make, model=model, body_type=body_type,\n fuel=fuel, transmission=transmission,\n drivetrain=drivetrain, region=region, city=city,\n source=source, year_min=year_min, year_max=year_max,\n price_min=price_min, price_max=price_max,\n km_max=km_max, q=q)\n total = con.execute(f\"SELECT COUNT(*) c FROM ({sql})\", args).fetchone()[\"c\"]\n sql += f\" ORDER BY {_SORTS.get(sort, _SORTS['recent'])} LIMIT ? OFFSET ?\"\n args += [limit, offset]\n rows = [_row_to_dict(r) for r in con.execute(sql, args).fetchall()]\n con.close()\n return {\"total\": total, \"count\": len(rows), \"vehicles\": rows}\n\n\n@app.get(\"/api/vehicles/{uid}\")\ndef get_vehicle(uid: str):\n con = db.connect()\n row = con.execute(\"SELECT * FROM vehicles WHERE uid=?\", (uid,)).fetchone()\n d = None\n if row is not None:\n d = _row_to_dict(row)\n d[\"price_history\"] = [dict(r) for r in con.execute(\n \"SELECT ts, price FROM price_log WHERE uid=? ORDER BY ts DESC LIMIT 10\",\n (uid,)).fetchall()]\n # véhicules similaires : même marque+modèle, autres sources incluses\n if d.get(\"make\") and d.get(\"model\"):\n base_model = d[\"model\"].split()[0]\n d[\"similar\"] = [_row_to_dict(r) for r in con.execute(\n \"SELECT * FROM vehicles WHERE active=1 AND dup_of IS NULL\"\n \" AND make=? AND model LIKE ?\"\n \" AND uid<>? ORDER BY price IS NULL, price ASC LIMIT 6\",\n (d[\"make\"], f\"{base_model}%\", uid)).fetchall()]\n else:\n d[\"similar\"] = []\n con.close()\n if d is None:\n raise HTTPException(404, \"Véhicule introuvable\")\n return d\n\n\n@app.get(\"/api/vehicles/{uid}/recalls\")\ndef vehicle_recalls(uid: str):\n \"\"\"Rappels Transports Canada visant ce véhicule (marque/modèle/année).\"\"\"\n from . import recalls as recalls_mod\n con = db.connect()\n row = con.execute(\"SELECT make, model, year FROM vehicles WHERE uid=?\",\n (uid,)).fetchone()\n if row is None:\n con.close()\n raise HTTPException(404, \"Véhicule introuvable\")\n try:\n items = recalls_mod.for_vehicle(con, row[\"make\"], row[\"model\"],\n row[\"year\"])\n finally:\n con.close()\n return {\"uid\": uid, \"make\": row[\"make\"], \"model\": row[\"model\"],\n \"year\": row[\"year\"], \"count\": len(items), \"recalls\": items}\n\n\n@app.get(\"/api/dealers\")\ndef dealers():\n \"\"\"Coordonnées des concessionnaires suivis (autoka/dealers.py).\"\"\"\n from . import dealers as dealers_mod\n con = db.connect()\n try:\n rows = dealers_mod.list_dealers(con)\n finally:\n con.close()\n return {\"count\": len(rows), \"dealers\": rows}\n\n\n@app.get(\"/api/facets\")\ndef facets(make: str | None = None, kind: str = \"auto\"):\n \"\"\"Valeurs distinctes pour construire les filtres du frontend.\n\n `make` (optionnel) restreint la liste des modèles à cette marque —\n utilisé par le sélecteur « Modèle » dépendant de « Marque ».\n \"\"\"\n con = db.connect()\n kf = \"\" if kind in (\"\", \"tous\") else f\" AND kind='{'moto' if kind=='moto' else 'scooter' if kind=='scooter' else 'auto'}'\"\n kf += \" AND dup_of IS NULL\" # compter chaque véhicule une seule fois\n model_sql = (\"SELECT model, COUNT(*) n FROM vehicles\"\n \" WHERE active=1 AND model<>''\" + kf)\n model_args: list = []\n if make:\n model_sql += \" AND make=?\"\n model_args.append(make)\n out = {\n \"makes\": [dict(r) for r in con.execute(\n \"SELECT make, COUNT(*) n FROM vehicles WHERE active=1\" + kf + \" AND make<>''\"\n \" GROUP BY make ORDER BY n DESC\")],\n \"models\": [dict(r) for r in con.execute(\n model_sql + \" GROUP BY model ORDER BY n DESC LIMIT 80\", model_args)],\n \"body_types\": [r[\"body_type\"] for r in con.execute(\n \"SELECT DISTINCT body_type FROM vehicles WHERE active=1\" + kf + \"\"\n \" AND body_type<>'' ORDER BY body_type\")],\n \"fuels\": [r[\"fuel\"] for r in con.execute(\n \"SELECT DISTINCT fuel FROM vehicles WHERE active=1\" + kf + \" AND fuel<>''\"\n \" ORDER BY fuel\")],\n \"regions\": [dict(r) for r in con.execute(\n \"SELECT region, COUNT(*) n FROM vehicles WHERE active=1\" + kf + \" AND region<>''\"\n \" GROUP BY region ORDER BY n DESC\")],\n \"sources\": [dict(r) for r in con.execute(\n \"SELECT source, dealer_name, COUNT(*) n FROM vehicles WHERE active=1\" + kf + \"\"\n \" GROUP BY source ORDER BY n DESC\")],\n \"years\": [dict(r) for r in con.execute(\n \"SELECT MIN(year) y_min, MAX(year) y_max FROM vehicles\"\n \" WHERE active=1\" + kf + \" AND year IS NOT NULL\")],\n }\n con.close()\n return out\n\n\n@app.get(\"/api/sources\")\ndef sources():\n registry = json.loads(SOURCES_PATH.read_text(encoding=\"utf-8\"))[\"sources\"]\n con = db.connect()\n counts = {r[\"source\"]: r[\"n\"] for r in con.execute(\n \"SELECT source, COUNT(*) n FROM vehicles WHERE active=1 GROUP BY source\")}\n last = {r[\"source\"]: r[\"ts\"] for r in con.execute(\n \"SELECT source, MAX(ts) ts FROM sync_log WHERE ok=1 GROUP BY source\")}\n con.close()\n for s in registry:\n s[\"active_listings\"] = counts.get(s[\"id\"], 0)\n s[\"last_sync\"] = last.get(s[\"id\"])\n return {\"sources\": registry}\n\n\n@app.get(\"/api/stats\")\ndef stats(syncs_since_h: float | None = None):\n con = db.connect()\n row = con.execute(\n \"\"\"SELECT COUNT(*) total,\n COUNT(DISTINCT source) sources,\n COUNT(DISTINCT region) regions,\n AVG(price) avg_price,\n AVG(mileage_km) avg_km,\n AVG(year) avg_year\n FROM vehicles WHERE active=1 AND kind='auto'\n AND dup_of IS NULL\"\"\").fetchone()\n by_region = [dict(r) for r in con.execute(\n \"SELECT region, COUNT(*) n, ROUND(AVG(price)) avg_price FROM vehicles\"\n \" WHERE active=1 AND kind='auto' AND dup_of IS NULL\"\n \" AND region<>'' GROUP BY region ORDER BY n DESC\")]\n by_make = [dict(r) for r in con.execute(\n \"SELECT make, COUNT(*) n, ROUND(AVG(price)) avg_price FROM vehicles\"\n \" WHERE active=1 AND kind='auto' AND dup_of IS NULL\"\n \" AND make<>'' GROUP BY make ORDER BY n DESC LIMIT 20\")]\n by_body = [dict(r) for r in con.execute(\n \"SELECT body_type, COUNT(*) n FROM vehicles WHERE active=1 AND kind='auto'\"\n \" AND dup_of IS NULL\"\n \" AND body_type<>'' GROUP BY body_type ORDER BY n DESC\")]\n # baisses de prix récentes (signal d'aubaine)\n drops = [dict(r) for r in con.execute(\n \"\"\"SELECT v.uid, v.title, v.year, v.price, v.images, v.dealer_name, v.city,\n p.prev_price\n FROM vehicles v JOIN (\n SELECT uid, price prev_price,\n ROW_NUMBER() OVER (PARTITION BY uid ORDER BY ts DESC) rn\n FROM price_log) p ON p.uid=v.uid AND p.rn=2\n WHERE v.active=1 AND kind='auto' AND v.dup_of IS NULL\n AND v.price IS NOT NULL AND p.prev_price > v.price\n ORDER BY (p.prev_price - v.price) DESC LIMIT 12\"\"\")]\n for d in drops:\n d[\"images\"] = json.loads(d.get(\"images\") or \"[]\")[:1]\n # fenêtre de sync paramétrable (supervision api-ka) : ?syncs_since_h=6\n # retourne toutes les entrées de la fenêtre (les ~20 dernières sinon)\n if syncs_since_h is not None:\n log = [dict(r) for r in con.execute(\n \"SELECT * FROM sync_log WHERE ts >= ? ORDER BY ts DESC LIMIT 4000\",\n (time.time() - syncs_since_h * 3600,))]\n if len(log) < 20: # fenêtre trop courte -> minimum utile\n log = [dict(r) for r in con.execute(\n \"SELECT * FROM sync_log ORDER BY ts DESC LIMIT 20\")]\n else:\n log = [dict(r) for r in con.execute(\n \"SELECT * FROM sync_log ORDER BY ts DESC LIMIT 20\")]\n # enrichissements vague 2 : doublons VIN masqués, rappels TC, dealers\n extra = {\"vin_duplicates_masked\": con.execute(\n \"SELECT COUNT(*) c FROM vehicles WHERE active=1 AND dup_of IS NOT NULL\"\n ).fetchone()[\"c\"]}\n for key, query in (\n (\"recalls_total\", \"SELECT COUNT(DISTINCT recall_number) c FROM recalls\"),\n (\"dealers_total\", \"SELECT COUNT(*) c FROM dealers\")):\n try:\n extra[key] = con.execute(query).fetchone()[\"c\"]\n except Exception: # table pas encore créée\n extra[key] = 0\n con.close()\n return {**dict(row), **extra, \"by_region\": by_region, \"by_make\": by_make,\n \"by_body\": by_body, \"price_drops\": drops, \"recent_syncs\": log}\n\n\n@app.get(\"/api/stats/detailed\")\ndef stats_detailed():\n \"\"\"Agrégats complets du marché (source unique : autoka/marketstats.py).\"\"\"\n from . import marketstats\n return marketstats.compute()\n\n\n# --- Module Stats commun Groupe KA (contrat ka/stats/SPEC.md) ----------------\n\nKA_SITE = {\n \"wordmark\": \"Auto·Ka\",\n \"accent\": \"#ff5a2a\",\n \"domain\": \"www.auto-ka.com\",\n \"tagline\": \"Voitures usagées · tout le Québec · toujours à jour\",\n}\n\n\n@app.get(\"/api/stats/dashboard\")\ndef stats_dashboard(\n period: str = \"30j\",\n from_: str | None = Query(None, alias=\"from\"),\n to: str | None = None,\n):\n \"\"\"Tableau de bord analytique — contrat commun Groupe KA (cache 5 min).\"\"\"\n from . import statsdash\n try:\n return statsdash.dashboard(period, from_, to)\n except ValueError:\n raise HTTPException(400, \"Dates invalides (format attendu : YYYY-MM-DD)\")\n\n\n@app.get(\"/api/stats/report\")\ndef stats_report(\n period: str = \"30j\",\n from_: str | None = Query(None, alias=\"from\"),\n to: str | None = None,\n mode: str = \"complet\",\n):\n \"\"\"Rapport PDF estampillé Groupe-KA — 5 modes (SPEC v2) : complet,\n synthese, tendances, repartitions, donnees. Mode inconnu → complet.\"\"\"\n from fastapi.responses import Response\n from . import kapdf, statsdash\n try:\n dash = statsdash.dashboard(period, from_, to)\n except ValueError:\n raise HTTPException(400, \"Dates invalides (format attendu : YYYY-MM-DD)\")\n mode = mode if mode in kapdf.REPORT_MODES else \"complet\"\n pdf = kapdf.GroupeKAReport(site=KA_SITE, dashboard=dash, mode=mode).build()\n return Response(\n content=pdf, media_type=\"application/pdf\",\n headers={\"Content-Disposition\":\n f'attachment; filename=\"{kapdf.filename(\"auto-ka\", period, mode)}\"'})\n\n\n@app.get(\"/api/stats/catalog\")\ndef stats_catalog(\n period: str = \"30j\",\n from_: str | None = Query(None, alias=\"from\"),\n to: str | None = None,\n):\n \"\"\"v3 — blocs composables pour le constructeur de rapports personnalisés.\"\"\"\n from . import kapdf, statsdash\n try:\n dash = statsdash.dashboard(period, from_, to)\n except ValueError:\n raise HTTPException(400, \"Dates invalides (format attendu : YYYY-MM-DD)\")\n return {\"updated\": dash.get(\"updated\"), \"period\": dash.get(\"period\"),\n \"blocks\": kapdf.catalog(dash)}\n\n\n@app.post(\"/api/stats/report/custom\")\ndef stats_report_custom(spec: dict = Body(...)):\n \"\"\"v3 — rapport PDF personnalisé : {\"title\", \"period\", \"from\", \"to\",\n \"blocks\": [{\"key\": \"series:…\", \"render\": \"bar\"}, …]} (SPEC.md §3bis).\"\"\"\n from fastapi.responses import Response\n from . import kapdf, statsdash\n period = str(spec.get(\"period\") or \"30j\")\n try:\n dash = statsdash.dashboard(period, str(spec.get(\"from\") or \"\") or None,\n str(spec.get(\"to\") or \"\") or None)\n except ValueError:\n raise HTTPException(400, \"Dates invalides (format attendu : YYYY-MM-DD)\")\n known = {b[\"key\"] for b in kapdf.catalog(dash)}\n blocks = [b for b in (spec.get(\"blocks\") or [])\n if isinstance(b, dict) and b.get(\"key\") in known][:40]\n if not blocks:\n raise HTTPException(400, \"Aucun bloc valide dans la composition\")\n pdf = kapdf.GroupeKAReport(\n site=KA_SITE, dashboard=dash, mode=kapdf.CUSTOM_MODE,\n spec={\"title\": str(spec.get(\"title\") or \"\")[:80], \"blocks\": blocks},\n ).build()\n fname = kapdf.filename(\"auto-ka\", period, kapdf.CUSTOM_MODE)\n return Response(\n content=pdf, media_type=\"application/pdf\",\n headers={\"Content-Disposition\":\n f'attachment; filename=\"{fname}\"'})\n\n\n@app.get(\"/api/stats/rapport.pdf\")\ndef rapport_pdf():\n \"\"\"Rapport PDF « Le marché de l'occasion » — vue d'ensemble.\"\"\"\n from fastapi.responses import Response\n from . import pdfgen\n return Response(\n content=pdfgen.rapport_pdf(), media_type=\"application/pdf\",\n headers={\"Content-Disposition\":\n 'attachment; filename=\"auto-ka-rapport-marche.pdf\"'})\n\n\n@app.post(\"/api/sync\")\ndef trigger_sync(background: BackgroundTasks, source: str | None = None):\n \"\"\"Déclenche une synchronisation (équivalent d'un webhook entrant).\"\"\"\n def _job():\n with _sync_lock:\n ingest.run([source] if source else None)\n background.add_task(_job)\n return {\"status\": \"démarré\", \"source\": source or \"toutes\"}\n\n\n# --- Connexion KA ID (SSO Groupe KA) — AVANT le catch-all du SPA -------------\napp.include_router(auth.router)\napp.include_router(auth.fav_router) # favoris « Mon univers Ka » (hub central)\n\n# --- SEO : rendu serveur des pages publiques, sitemaps, robots.txt -----------\napp.include_router(seo.router)\n\n\n# --- Frontend React (build Vite) --------------------------------------------\nif FRONTEND_DIST.exists():\n app.mount(\"/assets\", StaticFiles(directory=FRONTEND_DIST / \"assets\"), name=\"assets\")\n\n # Documentation statique (/doc/) — servie avant le catch-all SPA\n doc_dir = FRONTEND_DIST / \"doc\"\n if doc_dir.is_dir():\n @app.get(\"/doc\", include_in_schema=False)\n def doc_slash():\n return RedirectResponse(\"/doc/\", status_code=308)\n\n app.mount(\"/doc\", StaticFiles(directory=doc_dir, html=True), name=\"doc\")\n\n @app.get(\"/{full_path:path}\")\n def spa(full_path: str):\n target = FRONTEND_DIST / full_path\n if full_path and target.is_file():\n return FileResponse(target)\n # Chemin inconnu : vrai 404 (le HTML embarque quand même le SPA,\n # l'utilisateur voit la page « introuvable » de React)\n return seo.render_404(\"/\" + full_path)\n","structuredPatch":[{"oldStart":144,"oldLines":6,"newStart":144,"newLines":87,"lines":[" return {\"total\": total, \"count\": len(rows), \"vehicles\": rows}"," "," ","+def _market_analysis(con, d: dict) -> dict | None:","+ \"\"\"Positionnement du prix face aux comparables (même marque/modèle,","+ année ±1, doublons VIN exclus). Minimum 5 comparables avec prix.\"\"\"","+ if not (d.get(\"make\") and d.get(\"model\") and d.get(\"price\")):","+ return None","+ base_model = d[\"model\"].split()[0]","+ sql = (\"SELECT uid, price, mileage_km, year FROM vehicles\"","+ \" WHERE active=1 AND dup_of IS NULL AND price IS NOT NULL\"","+ \" AND make=? AND model LIKE ? AND uid<>?\")","+ args: list = [d[\"make\"], f\"{base_model}%\", d[\"uid\"]]","+ if d.get(\"year\"):","+ sql += \" AND year BETWEEN ? AND ?\"","+ args += [d[\"year\"] - 1, d[\"year\"] + 1]","+ rows = con.execute(sql + \" LIMIT 500\", args).fetchall()","+ prices = sorted(r[\"price\"] for r in rows)","+ n = len(prices)","+ if n < 5:","+ return None","+ price = d[\"price\"]","+ med = statistics.median(prices)","+ delta_pct = round((price - med) / med * 100, 1) if med else 0.0","+ percentile = round(sum(1 for p in prices if p < price) / n * 100)","+ if delta_pct <= -10:","+ badge, label = \"excellent\", \"Excellent prix\"","+ elif delta_pct <= -4:","+ badge, label = \"good\", \"Bon prix\"","+ elif delta_pct < 4:","+ badge, label = \"fair\", \"Prix du marché\"","+ else:","+ badge, label = \"high\", \"Au-dessus du marché\"","+ # nuage prix/km pour le graphique comparatif (échantillon)","+ points = [{\"p\": r[\"price\"], \"km\": r[\"mileage_km\"]}","+ for r in rows if r[\"mileage_km\"] is not None][:150]","+ q = statistics.quantiles(prices, n=4) if n >= 4 else [prices[0], med, prices[-1]]","+ return {","+ \"n\": n, \"median\": round(med), \"p25\": round(q[0]), \"p75\": round(q[2]),","+ \"min\": round(prices[0]), \"max\": round(prices[-1]),","+ \"delta_pct\": delta_pct, \"percentile\": percentile,","+ \"badge\": badge, \"label\": label, \"points\": points,","+ }","+","+","+def _ka_score(d: dict, market: dict | None) -> dict:","+ \"\"\"Score composite Auto-Ka (0-100) : prix, kilométrage, fiche, fraîcheur.\"\"\"","+ parts: list[dict] = []","+","+ if market: # prix : sous la médiane des comparables = meilleur score","+ parts.append({\"key\": \"prix\", \"label\": \"Prix vs marché\",","+ \"score\": round(100 - market[\"percentile\"]), \"weight\": 40})","+","+ if d.get(\"mileage_km\") is not None and d.get(\"year\"):","+ age = max(time.localtime().tm_year - d[\"year\"], 0.5)","+ expected = age * 17000 # usage annuel moyen au Québec","+ ratio = d[\"mileage_km\"] / expected if expected else 1.0","+ km_score = max(0, min(100, round(100 - (ratio - 0.4) * 100)))","+ parts.append({\"key\": \"km\", \"label\": \"Kilométrage vs âge\",","+ \"score\": km_score, \"weight\": 25})","+","+ completeness = sum((","+ bool(d.get(\"images\")) and len(d[\"images\"]) >= 5,","+ bool(d.get(\"description\")),","+ bool(d.get(\"features\")),","+ bool(d.get(\"vin\")) and len(d.get(\"vin\") or \"\") == 17,","+ bool(d.get(\"carfax_url\")),","+ d.get(\"mileage_km\") is not None,","+ bool(d.get(\"transmission\")) and bool(d.get(\"fuel\")),","+ d.get(\"lat\") is not None,","+ ))","+ parts.append({\"key\": \"fiche\", \"label\": \"Qualité de la fiche\",","+ \"score\": round(completeness / 8 * 100), \"weight\": 20})","+","+ days = max((time.time() - (d.get(\"first_seen\") or time.time())) / 86400, 0)","+ fresh = max(0, min(100, round(100 - days * 100 / 90))) # 0 après ~90 jours","+ parts.append({\"key\": \"fraicheur\", \"label\": \"Fraîcheur de l'annonce\",","+ \"score\": fresh, \"weight\": 15})","+","+ total_w = sum(p[\"weight\"] for p in parts)","+ overall = round(sum(p[\"score\"] * p[\"weight\"] for p in parts) / total_w)","+ return {\"overall\": overall, \"parts\": parts}","+","+"," @app.get(\"/api/vehicles/{uid}\")"," def get_vehicle(uid: str):"," con = db.connect()"]},{"oldStart":152,"oldLines":7,"newStart":233,"newLines":7,"lines":[" if row is not None:"," d = _row_to_dict(row)"," d[\"price_history\"] = [dict(r) for r in con.execute(","- \"SELECT ts, price FROM price_log WHERE uid=? ORDER BY ts DESC LIMIT 10\",","+ \"SELECT ts, price FROM price_log WHERE uid=? ORDER BY ts DESC LIMIT 30\","," (uid,)).fetchall()]"," # véhicules similaires : même marque+modèle, autres sources incluses"," if d.get(\"make\") and d.get(\"model\"):"]},{"oldStart":164,"oldLines":6,"newStart":245,"newLines":14,"lines":[" (d[\"make\"], f\"{base_model}%\", uid)).fetchall()]"," else:"," d[\"similar\"] = []","+ # enrichissements fiche : marché, score composite, fiche constructeur","+ d[\"market\"] = _market_analysis(con, d)","+ d[\"ka_score\"] = _ka_score(d, d[\"market\"])","+ try:","+ from . import vindecode","+ d[\"vin_info\"] = vindecode.decode(con, d.get(\"vin\") or \"\")","+ except Exception:","+ d[\"vin_info\"] = None"," con.close()"," if d is None:"," raise HTTPException(404, \"Véhicule introuvable\")"]}],"userModified":false,"replaceAll":false}}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"fb8a2998-7ae0-4104-bc40-3bd7c12d0fba","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcbSKm5vKWaBPGBmDcz","type":"message","role":"assistant","content":[{"type":"thinking","thinking":"","signature":"CAISjgMKpwEIERgCKkAWgcmMxBiOyU9MZripINiW/WAhDC83+gTTeIskGv+tCBwsBVC06lhK+6yBCK0FvTCupTc7a+diWJgIGBELgVVOMg5jbGF1ZGUtZmFibGUtNTgBQgh0aGlua2luZ1okNmZjYzhmODMtMWY5Yy00ZDMzLWJhMDctNGQ0ZGYzN2Q2N2Y1chAqK78ZzsiVUzI5xDv77u/SiAEBqAHIybbUBrABAhIMoMrK8C37akA/ii19GgzujIQ2gwa8qgVy4pYiMJjXc9hW7UuAVS6+bjNchQeRt+QNNgmvhv5QrHP5RFyiQK0wemJ2ZeYLdVEYZOHiziqTAZdhHoqzmscAxLO/XQxc9WAhgYditahW7eTEIIMOIyne702Y0JKS+jYi9E+q/UsuKbyhj3PuNsrgb2+DuuTUan1H+ZrjfG5PilMZWsCV8pxAGk3PFkhwJG5ybR+ttpw0A+xfrVO/ENvLZ+ELPwZ3eM22t3ZzUoYdrMNWCbdi8oDChH5bkeI/iM1G+/HlfeaLR/EruBgB"}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":4047,"cache_read_input_tokens":83605,"cache_creation":{"ephemeral_5m_input_tokens":4047,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"04915266-1703-480f-a29c-52b5f8273cd9"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcbSKm5vKWaBPGBmDcz","type":"message","role":"assistant","content":[{"type":"text","text":"Je teste le backend enrichi immédiatement sur une vraie annonce."}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":4047,"cache_read_input_tokens":83605,"cache_creation":{"ephemeral_5m_input_tokens":4047,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"7866a969-63d5-448f-b953-62da81bbff15"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcbSKm5vKWaBPGBmDcz","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01QKnbjrY6bePPbphqjXdxCG","name":"Bash","input":{"command":"cd ~/auto-ka && .venv/bin/python -c \"\nfrom autoka import db, web\ncon = db.connect()\nuid = con.execute(\\\"SELECT uid FROM vehicles WHERE active=1 AND vin IS NOT NULL AND LENGTH(vin)=17 AND price IS NOT NULL AND dup_sources IS NOT NULL AND dup_sources != '[]' LIMIT 1\\\").fetchone()['uid']\ncon.close()\nd = web.get_vehicle(uid)\nprint('uid:', uid)\nprint('market:', {k:v for k,v in (d['market'] or {}).items() if k!='points'}, '| points:', len((d['market'] or {}).get('points', [])))\nprint('ka_score:', d['ka_score']['overall'], [(p['key'], p['score']) for p in d['ka_score']['parts']])\nprint('vin_info keys:', list((d['vin_info'] or {}).items())[:6])\nprint('dup_sources:', len(d.get('dup_sources') or []))\nprint('price_history:', len(d['price_history']))\n\"","description":"Test enriched detail endpoint on real listing"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":4047,"cache_read_input_tokens":83605,"cache_creation":{"ephemeral_5m_input_tokens":4047,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"f6f9ae83-55f1-4b5e-8377-1020cd548f0b"}} {"type":"permission_auto","tool":"Bash","key":"tout autoriser","input":{"command":"cd ~/auto-ka && .venv/bin/python -c \"\nfrom autoka import db, web\ncon = db.connect()\nuid = con.execute(\\\"SELECT uid FROM vehicles WHERE active=1 AND vin IS NOT NULL AND LENGTH(vin)=17 AND price IS NOT NULL AND dup_sources IS NOT NULL AND dup_sources != '[]' LIMIT 1\\\").fetchone()['uid']\ncon.close()\nd = web.get_vehicle(uid)\nprint('uid:', uid)\nprint('market:', {k:v for k,v in (d['market'] or {}).items() if k!='points'}, '| points:', len((d['market'] or {}).get('points', [])))\nprint('ka_score:', d['ka_score']['overall'], [(p['key'], p['score']) for p in d['ka_score']['parts']])\nprint('vin_info keys:', list((d['vin_info'] or {}).items())[:6])\nprint('dup_sources:', len(d.get('dup_sources') or []))\nprint('price_history:', len(d['price_history']))\n\"","description":"Test enriched detail endpoint on real listing"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01QKnbjrY6bePPbphqjXdxCG","type":"tool_result","content":"uid: denisauto:5168959\nmarket: {'n': 78, 'median': 24247, 'p25': 22406, 'p75': 26608, 'min': 13997, 'max': 35699, 'delta_pct': -5.6, 'percentile': 29, 'badge': 'good', 'label': 'Bon prix'} | points: 78\nka_score: 65 [('prix', 71), ('km', 36), ('fiche', 75), ('fraicheur', 85)]\nvin_info keys: [('Version (usine)', 'AT4'), ('Carrosserie (usine)', 'Sport Utility Vehicle [SUV]/Multipurpose Vehicle [MPV]'), ('Motricité (usine)', 'Intégrale (AWD)'), ('Cylindres', '4'), ('Cylindrée (L)', '1.5'), ('Configuration moteur', 'En ligne')]\ndup_sources: 1\nprice_history: 1","is_error":false}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"0acc1dbb-4332-448b-b281-b03b8efd26b6","timestamp":"2026-08-25T14:21:01.377Z","tool_use_result":{"stdout":"uid: denisauto:5168959\nmarket: {'n': 78, 'median': 24247, 'p25': 22406, 'p75': 26608, 'min': 13997, 'max': 35699, 'delta_pct': -5.6, 'percentile': 29, 'badge': 'good', 'label': 'Bon prix'} | points: 78\nka_score: 65 [('prix', 71), ('km', 36), ('fiche', 75), ('fraicheur', 85)]\nvin_info keys: [('Version (usine)', 'AT4'), ('Carrosserie (usine)', 'Sport Utility Vehicle [SUV]/Multipurpose Vehicle [MPV]'), ('Motricité (usine)', 'Intégrale (AWD)'), ('Cylindres', '4'), ('Cylindrée (L)', '1.5'), ('Configuration moteur', 'En ligne')]\ndup_sources: 1\nprice_history: 1","stderr":"","interrupted":false,"isImage":false,"noOutputExpected":false}}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"91253ba1-d3b2-4554-adda-1ba2abb68f2a","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePccSqJAZnRLRrdHvyY9","type":"message","role":"assistant","content":[{"type":"thinking","thinking":"","signature":"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"}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":842,"cache_read_input_tokens":87652,"cache_creation":{"ephemeral_5m_input_tokens":842,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"5f1706c3-5361-4f84-b3cd-42a27d4da1ec"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePccSqJAZnRLRrdHvyY9","type":"message","role":"assistant","content":[{"type":"thinking","thinking":"","signature":"CAIS9QMKqAEIERgCKkBFNvX40N3UKZHm7PixT7bA6ftHYxKVRIjmbgYBEjQdcyLzuwzcp3y6UIEvdwKe1kw1g5ET7GTkb0bqvwhrVynlMg5jbGF1ZGUtZmFibGUtNTgBQgluYXJyYXRpb25aJDZmY2M4ZjgzLTFmOWMtNGQzMy1iYTA3LTRkNGRmMzdkNjdmNXIQKiu/Gc7IlVMyOcQ7++7v0ogBAagB68m21AawAQISDPzZFtZXRZkVK7hAtBoMlc9dsm6HrAycOKACIjA3CaSk/MW/VPMHoJe9ii9WvAF18qSejbXK58XLJv8Ym2WgjL3pPw9w9+Cc9I52g5Mq+QGyTZSJbpvoud5tD2BTrzIs4GRtQeAfeAGQ9lNxkhZkdM1xOgfOPA92QtZZSZ6cDiREBjTGRUVwJxf4rWDsStufW7OvcJCsnuz51iOwaT58lu7GgWJ0Iw7BOjwCVkfLweoPZQ553GcyLPfcsZrcRAF6uceoJlSL9niZMo2/29emkKJIiUGYLkFLLCNzwKET013OJGiVrppmEUbXDyzeKw03ZETD5OvpzjW1cmyGjlxjCAuOwa7fLxOr429H00nD4ON6tn+yTBjDRjU6zbLXxxHAOp+8p6dMv8e1BrRb+sb2ZFhjzMsjbK8wkB6jd4n9smFdI/0ZLWIASPoYAQ=="}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":842,"cache_read_input_tokens":87652,"cache_creation":{"ephemeral_5m_input_tokens":842,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"163995a7-2f62-4407-a67f-7efe765ddbc5"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePccSqJAZnRLRrdHvyY9","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_015NxjpgPHgSGrQ5vpi5XZJ9","name":"Edit","input":{"replace_all":false,"file_path":"/Users/simon-pierreboucher/auto-ka/autoka/vindecode.py","old_string":" \"Sport Utility Vehicle (SUV)/Multi-Purpose Vehicle (MPV)\": \"VUS\",","new_string":" \"Sport Utility Vehicle (SUV)/Multi-Purpose Vehicle (MPV)\": \"VUS\",\n \"Sport Utility Vehicle [SUV]/Multipurpose Vehicle [MPV]\": \"VUS\",\n \"Crossover Utility Vehicle (CUV)\": \"VUS multisegment\","},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":842,"cache_read_input_tokens":87652,"cache_creation":{"ephemeral_5m_input_tokens":842,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"e4951d3c-30d9-4c0e-bfcb-684a5ab61673"}} {"type":"permission_auto","tool":"Edit","key":"tout autoriser","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/autoka/vindecode.py","old_string":" \"Sport Utility Vehicle (SUV)/Multi-Purpose Vehicle (MPV)\": \"VUS\",","new_string":" \"Sport Utility Vehicle (SUV)/Multi-Purpose Vehicle (MPV)\": \"VUS\",\n \"Sport Utility Vehicle [SUV]/Multipurpose Vehicle [MPV]\": \"VUS\",\n \"Crossover Utility Vehicle (CUV)\": \"VUS multisegment\",","replace_all":false}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_015NxjpgPHgSGrQ5vpi5XZJ9","type":"tool_result","content":"The file /Users/simon-pierreboucher/auto-ka/autoka/vindecode.py has been updated successfully."}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"88307760-0839-4d02-826e-29d20161ffb4","timestamp":"2026-08-25T14:21:34.323Z","tool_use_result":{"filePath":"/Users/simon-pierreboucher/auto-ka/autoka/vindecode.py","oldString":" \"Sport Utility Vehicle (SUV)/Multi-Purpose Vehicle (MPV)\": \"VUS\",","newString":" \"Sport Utility Vehicle (SUV)/Multi-Purpose Vehicle (MPV)\": \"VUS\",\n \"Sport Utility Vehicle [SUV]/Multipurpose Vehicle [MPV]\": \"VUS\",\n \"Crossover Utility Vehicle (CUV)\": \"VUS multisegment\",","originalFile":"# -----------------------------------------------------------------------------\n# Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n# Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n# vindecode.py : fiche technique constructeur via le VIN — API vPIC de la NHTSA\n# (gratuite, sans clé), décodage paresseux + cache SQLite.\n# -----------------------------------------------------------------------------\nfrom __future__ import annotations\n\nimport json\nimport sqlite3\nimport time\n\nimport requests\n\nVPIC_URL = \"https://vpic.nhtsa.dot.gov/api/vehicles/DecodeVINValuesBatch/\"\nTIMEOUT = 12\n\n# Champs vPIC retenus → libellé français affiché sur la fiche.\n# L'ordre du dict = l'ordre d'affichage.\n_FIELDS: dict[str, str] = {\n \"Trim\": \"Version (usine)\",\n \"Series\": \"Série\",\n \"BodyClass\": \"Carrosserie (usine)\",\n \"DriveType\": \"Motricité (usine)\",\n \"EngineCylinders\": \"Cylindres\",\n \"DisplacementL\": \"Cylindrée (L)\",\n \"EngineHP\": \"Puissance (ch)\",\n \"EngineConfiguration\": \"Configuration moteur\",\n \"FuelTypePrimary\": \"Carburant (usine)\",\n \"FuelTypeSecondary\": \"Carburant secondaire\",\n \"ElectrificationLevel\": \"Électrification\",\n \"BatteryKWh\": \"Batterie (kWh)\",\n \"TransmissionStyle\": \"Transmission (usine)\",\n \"TransmissionSpeeds\": \"Rapports\",\n \"Turbo\": \"Turbo\",\n \"Doors\": \"Portes (usine)\",\n \"Seats\": \"Places (usine)\",\n \"GVWR\": \"PNBV\",\n \"PlantCountry\": \"Pays d'assemblage\",\n \"PlantCity\": \"Ville d'assemblage\",\n \"ABS\": \"Freins ABS\",\n \"AirBagLocFront\": \"Coussins avant\",\n \"AirBagLocSide\": \"Coussins latéraux\",\n \"AirBagLocCurtain\": \"Coussins rideaux\",\n \"TPMS\": \"Surveillance pneus (TPMS)\",\n \"AdaptiveCruiseControl\": \"Régulateur adaptatif\",\n \"ForwardCollisionWarning\": \"Alerte de collision avant\",\n \"LaneDepartureWarning\": \"Alerte de sortie de voie\",\n \"BlindSpotMon\": \"Surveillance angles morts\",\n \"RearVisibilitySystem\": \"Caméra de recul\",\n}\n\n# Traductions des valeurs vPIC les plus fréquentes (anglais → français).\n_VALUES_FR: dict[str, str] = {\n \"Gasoline\": \"Essence\", \"Diesel\": \"Diesel\", \"Electric\": \"Électrique\",\n \"Sedan/Saloon\": \"Berline\", \"Hatchback/Liftback/Notchback\": \"Hayon\",\n \"Sport Utility Vehicle (SUV)/Multi-Purpose Vehicle (MPV)\": \"VUS\",\n \"Pickup\": \"Camionnette\", \"Minivan\": \"Minifourgonnette\",\n \"Coupe\": \"Coupé\", \"Convertible/Cabriolet\": \"Cabriolet\", \"Wagon\": \"Familiale\",\n \"4WD/4-Wheel Drive/4x4\": \"4x4\", \"AWD/All-Wheel Drive\": \"Intégrale (AWD)\",\n \"FWD/Front-Wheel Drive\": \"Traction (FWD)\",\n \"RWD/Rear-Wheel Drive\": \"Propulsion (RWD)\",\n \"Automatic\": \"Automatique\", \"Manual/Standard\": \"Manuelle\",\n \"Continuously Variable Transmission (CVT)\": \"CVT\",\n \"Automated Manual Transmission (AMT)\": \"Manuelle automatisée\",\n \"Dual-Clutch Transmission (DCT)\": \"Double embrayage (DCT)\",\n \"Strong HEV (Hybrid Electric Vehicle)\": \"Hybride\",\n \"Mild HEV (Hybrid Electric Vehicle)\": \"Hybride légère\",\n \"PHEV (Plug-in Hybrid Electric Vehicle)\": \"Hybride rechargeable\",\n \"BEV (Battery Electric Vehicle)\": \"100 % électrique\",\n \"Standard\": \"De série\", \"Optional\": \"En option\", \"Yes\": \"Oui\", \"No\": \"Non\",\n \"Direct\": \"Directe (TPMS direct)\", \"Indirect\": \"Indirecte\",\n \"1st Row (Driver and Passenger)\": \"1re rangée (conducteur et passager)\",\n \"1st and 2nd Rows\": \"1re et 2e rangées\",\n \"1st, 2nd and 3rd Rows\": \"1re, 2e et 3e rangées\",\n \"All Rows\": \"Toutes les rangées\",\n \"UNITED STATES (USA)\": \"États-Unis\", \"CANADA\": \"Canada\", \"MEXICO\": \"Mexique\",\n \"JAPAN\": \"Japon\", \"GERMANY\": \"Allemagne\", \"SOUTH KOREA\": \"Corée du Sud\",\n \"V-Shaped\": \"En V\", \"In-Line\": \"En ligne\", \"Horizontally opposed (boxer)\": \"Boxer\",\n}\n\n_SCHEMA = \"\"\"\nCREATE TABLE IF NOT EXISTS vin_decode (\n vin TEXT PRIMARY KEY,\n data TEXT, -- JSON {libellé fr: valeur} (vide = décodage sans résultat)\n fetched_at REAL\n);\n\"\"\"\n\n\ndef _ensure(con: sqlite3.Connection) -> None:\n con.executescript(_SCHEMA)\n\n\ndef _fr(value: str) -> str:\n return _VALUES_FR.get(value, value)\n\n\ndef _extract(raw: dict) -> dict[str, str]:\n out: dict[str, str] = {}\n for key, label in _FIELDS.items():\n val = (raw.get(key) or \"\").strip()\n if not val or val.lower() in (\"not applicable\", \"n/a\", \"0\"):\n continue\n out[label] = _fr(val)\n return out\n\n\ndef decode(con: sqlite3.Connection, vin: str) -> dict[str, str] | None:\n \"\"\"Fiche constructeur d'un VIN (cache DB, appel réseau au premier accès).\n\n Retourne un dict {libellé fr: valeur} ou None si indisponible.\n \"\"\"\n vin = (vin or \"\").strip().upper()\n if len(vin) != 17:\n return None\n _ensure(con)\n row = con.execute(\"SELECT data FROM vin_decode WHERE vin=?\", (vin,)).fetchone()\n if row is not None:\n try:\n data = json.loads(row[\"data\"] or \"{}\")\n except ValueError:\n data = {}\n return data or None\n try:\n resp = requests.post(VPIC_URL, data={\"format\": \"json\", \"data\": vin},\n timeout=TIMEOUT)\n resp.raise_for_status()\n results = resp.json().get(\"Results\") or []\n data = _extract(results[0]) if results else {}\n except Exception:\n # échec réseau : ne pas mettre en cache, on retentera au prochain accès\n return None\n con.execute(\n \"INSERT OR REPLACE INTO vin_decode (vin, data, fetched_at) VALUES (?,?,?)\",\n (vin, json.dumps(data, ensure_ascii=False), time.time()))\n con.commit()\n return data or None\n","structuredPatch":[{"oldStart":55,"oldLines":6,"newStart":55,"newLines":8,"lines":[" \"Gasoline\": \"Essence\", \"Diesel\": \"Diesel\", \"Electric\": \"Électrique\","," \"Sedan/Saloon\": \"Berline\", \"Hatchback/Liftback/Notchback\": \"Hayon\","," \"Sport Utility Vehicle (SUV)/Multi-Purpose Vehicle (MPV)\": \"VUS\",","+ \"Sport Utility Vehicle [SUV]/Multipurpose Vehicle [MPV]\": \"VUS\",","+ \"Crossover Utility Vehicle (CUV)\": \"VUS multisegment\","," \"Pickup\": \"Camionnette\", \"Minivan\": \"Minifourgonnette\","," \"Coupe\": \"Coupé\", \"Convertible/Cabriolet\": \"Cabriolet\", \"Wagon\": \"Familiale\","," \"4WD/4-Wheel Drive/4x4\": \"4x4\", \"AWD/All-Wheel Drive\": \"Intégrale (AWD)\","]}],"userModified":false,"replaceAll":false}}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePccSqJAZnRLRrdHvyY9","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_013vMZyVrBToHAk9CCxiq4HC","name":"Bash","input":{"command":"cd ~/auto-ka && .venv/bin/python -c \"\nfrom autoka import db, recalls\ncon = db.connect()\nitems = recalls.for_vehicle(con, 'HONDA', 'CR-V', 2018)\nprint(len(items)); print(items[0] if items else None)\ncon.close()\"","description":"Check recalls item structure"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":842,"cache_read_input_tokens":87652,"cache_creation":{"ephemeral_5m_input_tokens":842,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"c5e0b48c-c51c-4820-ab0c-0a3502a50140"}} {"type":"permission_auto","tool":"Bash","key":"tout autoriser","input":{"command":"cd ~/auto-ka && .venv/bin/python -c \"\nfrom autoka import db, recalls\ncon = db.connect()\nitems = recalls.for_vehicle(con, 'HONDA', 'CR-V', 2018)\nprint(len(items)); print(items[0] if items else None)\ncon.close()\"","description":"Check recalls item structure"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_013vMZyVrBToHAk9CCxiq4HC","type":"tool_result","content":"4\n{'recall_number': '2026251', 'make': 'HONDA', 'model': 'CR-V', 'year': 2018, 'date': '2026-05-21', 'component': 'Sièges et dispositifs de retenue', 'description': \"Problème : \\r\\nSur certains véhicules, le capteur de poids du siège passager avant pourrait ne pas avoir été fabriqué adéquatement. Par conséquent, le coussin gonflable du passager avant et le coussin gonflable pour genoux pourraient se déployer lors d'une collision où ce n'est pas nécessaire. \\r\\nRemarque : Ce rappel s'ajoute au rappel de Transports Canada numéro 2024-059. Si le capteur de poids fait défaut, le voyant d'avertissement des coussins gonflables (SRS) s'allumerait sur le tableau de bord. \\r\\n\\r\\nRisques pour la sécurité : \\r\\nUn système de coussins gonflables qui ne fonctionne pas correctement pourrait augmenter les risques de blessures en cas d'accident. \\r\\n\\r\\nMesures correctives : \\r\\nL'entreprise doit aviser les propriétaires par la poste et leur demander d'amener leur véhicule chez un concessionnaire pour faire remplacer le capteur de poids du siège passager avant.\", 'category': 'Car', 'units_affected': 12371}","is_error":false}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"7716d051-90b7-4714-929e-f0c815115aaa","timestamp":"2026-08-25T14:21:35.845Z","tool_use_result":{"stdout":"4\n{'recall_number': '2026251', 'make': 'HONDA', 'model': 'CR-V', 'year': 2018, 'date': '2026-05-21', 'component': 'Sièges et dispositifs de retenue', 'description': \"Problème : \\r\\nSur certains véhicules, le capteur de poids du siège passager avant pourrait ne pas avoir été fabriqué adéquatement. Par conséquent, le coussin gonflable du passager avant et le coussin gonflable pour genoux pourraient se déployer lors d'une collision où ce n'est pas nécessaire. \\r\\nRemarque : Ce rappel s'ajoute au rappel de Transports Canada numéro 2024-059. Si le capteur de poids fait défaut, le voyant d'avertissement des coussins gonflables (SRS) s'allumerait sur le tableau de bord. \\r\\n\\r\\nRisques pour la sécurité : \\r\\nUn système de coussins gonflables qui ne fonctionne pas correctement pourrait augmenter les risques de blessures en cas d'accident. \\r\\n\\r\\nMesures correctives : \\r\\nL'entreprise doit aviser les propriétaires par la poste et leur demander d'amener leur véhicule chez un concessionnaire pour faire remplacer le capteur de poids du siège passager avant.\", 'category': 'Car', 'units_affected': 12371}","stderr":"","interrupted":false,"isImage":false,"noOutputExpected":false}}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePccSqJAZnRLRrdHvyY9","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01696trj3HkLo2nb9bMegMTa","name":"Grep","input":{"pattern":"vdetail|vd-head|vd-price|vd-cols|gallery|panel|spec-table|spec-chip|feat-list|price-history|cta-source|kicker|market|badge","path":"/Users/simon-pierreboucher/auto-ka/frontend/src/styles.css","output_mode":"content","-n":true,"head_limit":80},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":842,"cache_read_input_tokens":87652,"cache_creation":{"ephemeral_5m_input_tokens":842,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"b6eacef6-e7d5-48cd-a0e1-a1ebcff09f6c"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01696trj3HkLo2nb9bMegMTa","type":"tool_result","content":"31:.kicker { color: var(--accent-deep); }\n32:.kicker::before { background: var(--accent); }\n79:/* — badge « Un service Groupe KA » (composant ka/GroupeKaBadge) — */\n80:.header .gk-badge { flex: none; margin-left: 2px; }\n81:@media (max-width: 1023px) { .header .gk-badge { display: none; } }\n211:.gallery .main { position: relative; }\n212:.gallery .main .fav-btn { right: 14px; bottom: 14px; width: 44px; height: 44px; }\n213:.gallery .main .fav-btn svg { width: 20px; height: 20px; }\n224:.spec-chip {\n240:.vdetail { padding: 34px 0 60px; }\n241:.vd-head { display: flex; align-items: flex-start; gap: 16px; flex-wrap: wrap; margin-bottom: 20px; }\n242:.vd-head h1 { font-size: clamp(24px, 3.6vw, 38px); line-height: 1.1; max-width: 760px; }\n243:.vd-price {\n246:.vd-price .p {\n250:.vd-price .was { font-size: 14px; color: var(--ink-3); text-decoration: line-through; }\n251:.vd-cols { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(280px, 1fr); gap: 28px; }\n252:@media (max-width: 900px) { .vd-cols { grid-template-columns: 1fr; } }\n254:.gallery { border: 2px solid var(--ink); border-radius: var(--r-card); overflow: hidden; background: var(--surface); }\n255:.gallery .main { aspect-ratio: 4 / 3; background: var(--surface-2); }\n256:.gallery .main img { width: 100%; height: 100%; object-fit: cover; cursor: zoom-in; }\n257:.gallery .thumbs {\n261:.gallery .thumbs img {\n265:.gallery .thumbs img.sel { border-color: var(--accent); }\n267:.panel {\n272:.panel h3 { font-size: 15px; margin-bottom: 12px; display: flex; align-items: center; gap: 8px; }\n273:.spec-table { width: 100%; border-collapse: collapse; font-size: 14px; }\n274:.spec-table td { padding: 7px 0; border-bottom: 1px dashed var(--line); }\n275:.spec-table td:first-child { color: var(--ink-3); font-family: var(--font-mono); font-size: 12px; text-transform: uppercase; letter-spacing: 0.06em; }\n276:.spec-table td:last-child { text-align: right; font-weight: 600; }\n277:.spec-table tr:last-child td { border-bottom: none; }\n279:.cta-source {\n286:.cta-source:hover { transform: translate(-2px, -2px); box-shadow: 4px 4px 0 var(--ink); }\n290:.feat-list {\n293:.price-history { font-size: 13px; }\n294:.price-history .row { display: flex; justify-content: space-between; padding: 6px 0; border-bottom: 1px dashed var(--line); }\n295:.price-history .down { color: var(--good); font-weight: 700; }\n296:.price-history .up { color: var(--danger); font-weight: 700; }\n400: .vdetail { padding: 20px 0 40px; }\n401: .vd-head { flex-direction: column; gap: 8px; }\n402: .vd-head h1 { font-size: 23px; }\n403: .vd-price { margin-left: 0; text-align: left; }\n404: .vd-price .p { font-size: 28px; }\n405: .gallery .thumbs img { width: 68px; height: 50px; }\n406: .panel { padding: 14px 14px; }\n407: .spec-table td:last-child { word-break: break-all; } /* VIN longs */\n409: .feat-list { max-height: 260px; }\n560:/* — badge statut Groupe KA sur la carte (chip lime, rotaté -1°) — */\n561:.pc-role-badge {\n623:.contact-sites a.spec-chip { text-decoration: none; min-height: 32px; display: inline-flex; align-items: center; }\n624:.contact-sites a.spec-chip:hover { border-color: var(--accent); color: var(--ink); }\n633:.seo-links a.spec-chip { text-decoration: none; }\n634:.seo-links a.spec-chip:hover { border-color: var(--accent); }\n683:.mm-badge { display: flex; padding: 12px 10px 0; }"}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"9aaed784-ee4b-4076-af29-5fe0c9c74b98","timestamp":"2026-08-25T14:21:37.332Z","tool_use_result":{"mode":"content","numFiles":0,"filenames":[],"content":"31:.kicker { color: var(--accent-deep); }\n32:.kicker::before { background: var(--accent); }\n79:/* — badge « Un service Groupe KA » (composant ka/GroupeKaBadge) — */\n80:.header .gk-badge { flex: none; margin-left: 2px; }\n81:@media (max-width: 1023px) { .header .gk-badge { display: none; } }\n211:.gallery .main { position: relative; }\n212:.gallery .main .fav-btn { right: 14px; bottom: 14px; width: 44px; height: 44px; }\n213:.gallery .main .fav-btn svg { width: 20px; height: 20px; }\n224:.spec-chip {\n240:.vdetail { padding: 34px 0 60px; }\n241:.vd-head { display: flex; align-items: flex-start; gap: 16px; flex-wrap: wrap; margin-bottom: 20px; }\n242:.vd-head h1 { font-size: clamp(24px, 3.6vw, 38px); line-height: 1.1; max-width: 760px; }\n243:.vd-price {\n246:.vd-price .p {\n250:.vd-price .was { font-size: 14px; color: var(--ink-3); text-decoration: line-through; }\n251:.vd-cols { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(280px, 1fr); gap: 28px; }\n252:@media (max-width: 900px) { .vd-cols { grid-template-columns: 1fr; } }\n254:.gallery { border: 2px solid var(--ink); border-radius: var(--r-card); overflow: hidden; background: var(--surface); }\n255:.gallery .main { aspect-ratio: 4 / 3; background: var(--surface-2); }\n256:.gallery .main img { width: 100%; height: 100%; object-fit: cover; cursor: zoom-in; }\n257:.gallery .thumbs {\n261:.gallery .thumbs img {\n265:.gallery .thumbs img.sel { border-color: var(--accent); }\n267:.panel {\n272:.panel h3 { font-size: 15px; margin-bottom: 12px; display: flex; align-items: center; gap: 8px; }\n273:.spec-table { width: 100%; border-collapse: collapse; font-size: 14px; }\n274:.spec-table td { padding: 7px 0; border-bottom: 1px dashed var(--line); }\n275:.spec-table td:first-child { color: var(--ink-3); font-family: var(--font-mono); font-size: 12px; text-transform: uppercase; letter-spacing: 0.06em; }\n276:.spec-table td:last-child { text-align: right; font-weight: 600; }\n277:.spec-table tr:last-child td { border-bottom: none; }\n279:.cta-source {\n286:.cta-source:hover { transform: translate(-2px, -2px); box-shadow: 4px 4px 0 var(--ink); }\n290:.feat-list {\n293:.price-history { font-size: 13px; }\n294:.price-history .row { display: flex; justify-content: space-between; padding: 6px 0; border-bottom: 1px dashed var(--line); }\n295:.price-history .down { color: var(--good); font-weight: 700; }\n296:.price-history .up { color: var(--danger); font-weight: 700; }\n400: .vdetail { padding: 20px 0 40px; }\n401: .vd-head { flex-direction: column; gap: 8px; }\n402: .vd-head h1 { font-size: 23px; }\n403: .vd-price { margin-left: 0; text-align: left; }\n404: .vd-price .p { font-size: 28px; }\n405: .gallery .thumbs img { width: 68px; height: 50px; }\n406: .panel { padding: 14px 14px; }\n407: .spec-table td:last-child { word-break: break-all; } /* VIN longs */\n409: .feat-list { max-height: 260px; }\n560:/* — badge statut Groupe KA sur la carte (chip lime, rotaté -1°) — */\n561:.pc-role-badge {\n623:.contact-sites a.spec-chip { text-decoration: none; min-height: 32px; display: inline-flex; align-items: center; }\n624:.contact-sites a.spec-chip:hover { border-color: var(--accent); color: var(--ink); }\n633:.seo-links a.spec-chip { text-decoration: none; }\n634:.seo-links a.spec-chip:hover { border-color: var(--accent); }\n683:.mm-badge { display: flex; padding: 12px 10px 0; }","numLines":53}}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"c136d167-6647-4cd3-80a1-a0dede617fea","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcf7Fuc2LMMkGm3KTnB","type":"message","role":"assistant","content":[{"type":"thinking","thinking":"","signature":"CAIS/QgKpwEIERgCKkCgHl0NP0J7HXYkADwKKcd5FQ8h+GrdM3EFw9suSCxSv4UPfAsLyJ0DcmAp2+aF+AnL7Igo7wSQ0i6D4QGT80wdMg5jbGF1ZGUtZmFibGUtNTgBQgh0aGlua2luZ1okNmZjYzhmODMtMWY5Yy00ZDMzLWJhMDctNGQ0ZGYzN2Q2N2Y1chAqK78ZzsiVUzI5xDv77u/SiAEBqAGEyrbUBrABAhIMt7sIFOkeN7fWqfqFGgwRjdIBeekI0vgZ1/QiMM5nOjDDLV8drbLYzVq6/nz+HYcoBQ+/cvw54LBgUf2fGy+e+BzpzzBK5TKuJBmsiyqCB4NJ0p+U+1V7x3Lc7xCc8wAXW9IJ4OjfHdXCnbZFgW6I2B5HKqGf3neVbCR2JyqLqMeTMWTGsAXfPVQ83G88bmScSvPtZqaOwLbZ5ZRioPila3pqAvIy8qon/O34iXodo4osiviB2wj6gLQ3mtiDKxnSpcEP2p6/yfhC2wVX3yV3I9BHYxxGbW2vsCK2FRk4EMn0quOsmMsx3W3g7Xg/jzxonreUWoYRiCWZ1fVTWykSZqPW+Blb39DFR9/rDtIVjiQOfzHRd5we8i+q3GP/9iTVROvYnDUa8batygNLxVol/phD1reW9LOgoUsCwVSArrpi8retvvGYg+pfM5e0viFlq8z1wern1y/qrzdtOsKGDMii4OC+WOroBjXkCfBgRj7qbQm+0NdQONwU1/PhSTe8S/j9bXnTU8ov5HDS8bsOI/xIZ/wXRrifZ1IzTqrCHzombOW/Omukhg6ScfkUVk0K3ikfI5MLKeWET5i250/Cmd/BOG4uPCYrggMSvGaYedk8T5tWhxh22bhSWKc36SrX1tCECrH5i3bWNwh4FHOhB+UNnviSE3LbfI1tg747Imfw4Q/vc+yUIm7BnEGVIobUBm8khCTfgga2SpFMzjPTzByIe0w9j9MMrTlN3dhotWxxszgLF8NH4GSocmGevuM07TalBblWBeo7DAehJ4zF1bcV2artkLQbiYtoTvoRqTQBmqaxmpdpsk2eoa9nDPPHKV6myo+OZ4+VLTg0jwvVLagW/KSZ1DAftetN3tlHfIUeSVCwAEWgAGtyed8AR53AmR3wszLlvDdpyzUbyceqx75HE1iMVnLWhdiTQZt6LUG5Rykf2epsLx8MX4XjeQDWD/AMj6A2Ingmu9ewX1nq3kEhqa6a919OaZh9EpIv28dsqHgjYcMFkfPQdPg6t7E+KcB/tmTkpufeGuH2c4wUiCuLwiQY/M67u5duYpwTPviN4nD0F/Nab0sUlOb0e/73gd1sHojIiT0/NBBTZVIOAt/X0GkzfJQSDIp6s8qGiZKgLqqhalfuoqpwrJhBpYFmd5OlHbJxrbSzCo30pBLvsG74ooNMZEXlYSd7PCngebI6BzYhiFq87KRunpmGPmshsEqFvxDj1WYbHH55E7PB7NSs9BuP27oADc0SIUM2AaPNckUjfOUoivDuDjfjZ3tgDFOevPo0wOUbJ0ttovdYSKAYAQ=="}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":4549,"cache_read_input_tokens":88494,"cache_creation":{"ephemeral_5m_input_tokens":4549,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"5ec15023-8f7c-4f8e-a0a4-3b0d653d3b9b"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcf7Fuc2LMMkGm3KTnB","type":"message","role":"assistant","content":[{"type":"text","text":"Structure des rappels et CSS compris. J'écris le frontend : d'abord les types API + le composant Lightbox."}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":4549,"cache_read_input_tokens":88494,"cache_creation":{"ephemeral_5m_input_tokens":4549,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"f8c5b18e-3f11-4a5e-9f88-9bbd15d1efdb"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcf7Fuc2LMMkGm3KTnB","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_015wbK4XDHXmFPKjJCyGWTPd","name":"Edit","input":{"replace_all":false,"file_path":"/Users/simon-pierreboucher/auto-ka/frontend/src/api.ts","old_string":" carfax_url: string;\n first_seen: number;\n updated_at: number;\n active: number;\n}\n\nexport interface VehicleDetail extends Vehicle {\n price_history: { ts: number; price: number | null }[];\n similar: Vehicle[];\n}","new_string":" carfax_url: string;\n lat: number | null;\n lng: number | null;\n first_seen: number;\n updated_at: number;\n active: number;\n}\n\n/** Positionnement du prix face aux comparables (calculé côté API). */\nexport interface MarketAnalysis {\n n: number;\n median: number;\n p25: number;\n p75: number;\n min: number;\n max: number;\n delta_pct: number;\n percentile: number;\n badge: \"excellent\" | \"good\" | \"fair\" | \"high\";\n label: string;\n points: { p: number; km: number }[];\n}\n\nexport interface KaScore {\n overall: number;\n parts: { key: string; label: string; score: number; weight: number }[];\n}\n\n/** Autre offre du même véhicule (même VIN, autre source — dédup inter-sources). */\nexport interface DupSource {\n uid: string;\n source: string;\n url: string;\n price: number | null;\n dealer_name: string;\n city: string;\n}\n\nexport interface VehicleDetail extends Vehicle {\n price_history: { ts: number; price: number | null }[];\n similar: Vehicle[];\n market: MarketAnalysis | null;\n ka_score: KaScore;\n vin_info: Record | null;\n dup_sources?: DupSource[];\n}\n\nexport interface Recall {\n recall_number: string;\n date: string;\n component: string;\n description: string;\n units_affected: number | null;\n}"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":4549,"cache_read_input_tokens":88494,"cache_creation":{"ephemeral_5m_input_tokens":4549,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"b84892f2-69aa-4ada-bbcd-f8fa19dc5aef"}} {"type":"permission_auto","tool":"Edit","key":"tout autoriser","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/frontend/src/api.ts","old_string":" carfax_url: string;\n first_seen: number;\n updated_at: number;\n active: number;\n}\n\nexport interface VehicleDetail extends Vehicle {\n price_history: { ts: number; price: number | null }[];\n similar: Vehicle[];\n}","new_string":" carfax_url: string;\n lat: number | null;\n lng: number | null;\n first_seen: number;\n updated_at: number;\n active: number;\n}\n\n/** Positionnement du prix face aux comparables (calculé côté API). */\nexport interface MarketAnalysis {\n n: number;\n median: number;\n p25: number;\n p75: number;\n min: number;\n max: number;\n delta_pct: number;\n percentile: number;\n badge: \"excellent\" | \"good\" | \"fair\" | \"high\";\n label: string;\n points: { p: number; km: number }[];\n}\n\nexport interface KaScore {\n overall: number;\n parts: { key: string; label: string; score: number; weight: number }[];\n}\n\n/** Autre offre du même véhicule (même VIN, autre source — dédup inter-sources). */\nexport interface DupSource {\n uid: string;\n source: string;\n url: string;\n price: number | null;\n dealer_name: string;\n city: string;\n}\n\nexport interface VehicleDetail extends Vehicle {\n price_history: { ts: number; price: number | null }[];\n similar: Vehicle[];\n market: MarketAnalysis | null;\n ka_score: KaScore;\n vin_info: Record | null;\n dup_sources?: DupSource[];\n}\n\nexport interface Recall {\n recall_number: string;\n date: string;\n component: string;\n description: string;\n units_affected: number | null;\n}","replace_all":false}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_015wbK4XDHXmFPKjJCyGWTPd","type":"tool_result","content":"The file /Users/simon-pierreboucher/auto-ka/frontend/src/api.ts has been updated successfully."}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"e53c2b4c-7d3b-43d9-9bc0-7eeb9355fd90","timestamp":"2026-08-25T14:22:01.857Z","tool_use_result":{"filePath":"/Users/simon-pierreboucher/auto-ka/frontend/src/api.ts","oldString":" carfax_url: string;\n first_seen: number;\n updated_at: number;\n active: number;\n}\n\nexport interface VehicleDetail extends Vehicle {\n price_history: { ts: number; price: number | null }[];\n similar: Vehicle[];\n}","newString":" carfax_url: string;\n lat: number | null;\n lng: number | null;\n first_seen: number;\n updated_at: number;\n active: number;\n}\n\n/** Positionnement du prix face aux comparables (calculé côté API). */\nexport interface MarketAnalysis {\n n: number;\n median: number;\n p25: number;\n p75: number;\n min: number;\n max: number;\n delta_pct: number;\n percentile: number;\n badge: \"excellent\" | \"good\" | \"fair\" | \"high\";\n label: string;\n points: { p: number; km: number }[];\n}\n\nexport interface KaScore {\n overall: number;\n parts: { key: string; label: string; score: number; weight: number }[];\n}\n\n/** Autre offre du même véhicule (même VIN, autre source — dédup inter-sources). */\nexport interface DupSource {\n uid: string;\n source: string;\n url: string;\n price: number | null;\n dealer_name: string;\n city: string;\n}\n\nexport interface VehicleDetail extends Vehicle {\n price_history: { ts: number; price: number | null }[];\n similar: Vehicle[];\n market: MarketAnalysis | null;\n ka_score: KaScore;\n vin_info: Record | null;\n dup_sources?: DupSource[];\n}\n\nexport interface Recall {\n recall_number: string;\n date: string;\n component: string;\n description: string;\n units_affected: number | null;\n}","originalFile":"// -----------------------------------------------------------------------------\n// Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n// Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n// api.ts : client typé de l'API FastAPI\n// -----------------------------------------------------------------------------\n\nexport interface Vehicle {\n uid: string;\n kind: string;\n source: string;\n external_id: string;\n url: string;\n title: string;\n make: string;\n model: string;\n trim: string;\n year: number | null;\n price: number | null;\n price_label: string;\n mileage_km: number | null;\n mileage_label: string;\n transmission: string;\n fuel: string;\n drivetrain: string;\n body_type: string;\n exterior_color: string;\n interior_color: string;\n engine: string;\n doors: number | null;\n seats: number | null;\n vin: string;\n stock_number: string;\n dealer_name: string;\n city: string;\n region: string;\n description: string;\n features: string[];\n details: Record;\n images: string[];\n carfax_url: string;\n first_seen: number;\n updated_at: number;\n active: number;\n}\n\nexport interface VehicleDetail extends Vehicle {\n price_history: { ts: number; price: number | null }[];\n similar: Vehicle[];\n}\n\nexport interface Facets {\n makes: { make: string; n: number }[];\n models: { model: string; n: number }[];\n body_types: string[];\n fuels: string[];\n regions: { region: string; n: number }[];\n sources: { source: string; dealer_name: string; n: number }[];\n years: { y_min: number | null; y_max: number | null }[];\n}\n\nexport interface Source {\n id: string;\n name: string;\n url: string;\n listing_url?: string;\n city?: string;\n region?: string;\n platform?: string;\n status?: string;\n active_listings: number;\n last_sync: number | null;\n}\n\nexport interface Stats {\n total: number;\n sources: number;\n regions: number;\n avg_price: number | null;\n avg_km: number | null;\n avg_year: number | null;\n by_region: { region: string; n: number; avg_price: number | null }[];\n by_make: { make: string; n: number; avg_price: number | null }[];\n by_body: { body_type: string; n: number }[];\n price_drops: {\n uid: string; title: string; year: number | null; price: number;\n prev_price: number; images: string[]; dealer_name: string; city: string;\n }[];\n recent_syncs: {\n source: string; ts: number; found: number; added: number;\n updated: number; removed: number; ok: number; message: string;\n }[];\n}\n\nexport interface VehicleQuery {\n kind?: string;\n make?: string;\n model?: string;\n body_type?: string;\n fuel?: string;\n transmission?: string;\n drivetrain?: string;\n region?: string;\n city?: string;\n source?: string;\n year_min?: number;\n year_max?: number;\n price_min?: number;\n price_max?: number;\n km_max?: number;\n q?: string;\n sort?: string;\n limit?: number;\n offset?: number;\n}\n\n/** Slug URL — DOIT rester synchrone avec slugify() de autoka/seo.py. */\nexport function slugify(text: string, maxLen = 70): string {\n const t = (text || \"\")\n .normalize(\"NFKD\")\n .replace(/[\\u0300-\\u036f]/g, \"\")\n .replace(/[^a-zA-Z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\")\n .toLowerCase()\n .slice(0, maxLen)\n .replace(/-+$/g, \"\");\n return t || \"x\";\n}\n\n/** URL canonique d'une fiche : /vehicule/{uid}/{slug lisible}. */\nexport function vehiclePath(v: Vehicle): string {\n const base =\n [v.year, v.make, v.model].filter(Boolean).join(\" \") ||\n v.title || \"vehicule\";\n return `/vehicule/${encodeURIComponent(v.uid)}/${slugify(base)}`;\n}\n\nasync function get(path: string): Promise {\n const res = await fetch(path);\n if (!res.ok) throw new Error(`API ${res.status}`);\n return res.json();\n}\n\nexport function fetchVehicles(query: VehicleQuery) {\n const params = new URLSearchParams();\n for (const [k, v] of Object.entries(query)) {\n if (v !== undefined && v !== null && v !== \"\") params.set(k, String(v));\n }\n return get<{ total: number; count: number; vehicles: Vehicle[] }>(\n `/api/vehicles?${params.toString()}`\n );\n}\n\nexport function fetchVehicle(uid: string) {\n return get(`/api/vehicles/${encodeURIComponent(uid)}`);\n}\n\nexport function fetchFacets(make?: string, kind?: string) {\n const params = new URLSearchParams();\n if (make) params.set(\"make\", make);\n if (kind) params.set(\"kind\", kind);\n const qs = params.toString();\n return get(`/api/facets${qs ? `?${qs}` : \"\"}`);\n}\n\nexport function fetchSources() {\n return get<{ sources: Source[] }>(\"/api/sources\");\n}\n\nexport function fetchStats() {\n return get(\"/api/stats\");\n}\n\n// -- noms d'affichage des sources (peuplés depuis /api/sources) ---------------\nconst names: Record = {};\n\nexport function registerSourceNames(sources: Source[]) {\n for (const s of sources) names[s.id] = s.name;\n}\n\nexport function sourceName(id: string): string {\n return names[id] ?? id;\n}\n\n// -- compte (SSO KA ID — Groupe KA) --------------------------------------------\nexport interface Socials {\n instagram?: string;\n facebook?: string;\n x?: string;\n linkedin?: string;\n tiktok?: string;\n youtube?: string;\n}\n\nexport interface Me {\n ka_id: string;\n email: string;\n name: string;\n picture: string;\n provider: string;\n created: number | null;\n // — profil Groupe KA (source de vérité : le hub groupe-ka.com) —\n bio?: string;\n city?: string;\n job_title?: string;\n company?: string;\n age?: number | null;\n website?: string;\n socials?: Socials;\n role_label?: string;\n public_url?: string;\n profile_source?: \"groupe-ka\" | \"local\";\n}\n\nexport async function fetchMe(): Promise<{ user: Me | null; enabled: boolean }> {\n try {\n const res = await fetch(\"/api/auth/me\");\n if (!res.ok) return { user: null, enabled: false };\n return res.json();\n } catch {\n return { user: null, enabled: false };\n }\n}\n\nexport async function logout(): Promise {\n await fetch(\"/api/auth/logout\", { method: \"POST\" });\n}\n\n// -- favoris « Mon univers Ka » (magasin central : le hub groupe-ka.com) -------\nexport interface FavItem {\n item_id: string;\n title: string;\n subtitle?: string;\n price_label?: string;\n image_url?: string;\n url?: string;\n app?: string;\n created_at?: string;\n}\n\nexport function fetchFavorites() {\n return get<{ ids: string[]; items: FavItem[] }>(\"/api/favorites\");\n}\n\nexport async function toggleFavorite(on: boolean, item: FavItem): Promise {\n const res = await fetch(\"/api/favorites/toggle\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ on, item }),\n });\n if (!res.ok) throw new Error(`API ${res.status}`);\n}\n\n/** Transforme un véhicule en item de favori pour le hub Groupe KA. */\nexport function vehicleFavItem(v: Vehicle): FavItem {\n const title =\n [v.year, v.make, v.model].filter(Boolean).join(\" \") || v.title || \"Véhicule\";\n const where =\n [v.dealer_name || sourceName(v.source), v.region || v.city]\n .filter(Boolean).join(\" · \") ||\n (v.mileage_km != null ? fmtKm(v.mileage_km) : \"\");\n return {\n item_id: v.uid,\n title,\n subtitle: where,\n price_label: fmtPrice(v.price),\n image_url: v.images && v.images.length > 0 ? v.images[0] : \"\",\n url: `https://www.auto-ka.com${vehiclePath(v)}`,\n };\n}\n\n// -- formatteurs ---------------------------------------------------------------\nexport const fmtPrice = (p: number | null | undefined) =>\n p == null ? \"Prix sur demande\" : `${Math.round(p).toLocaleString(\"fr-CA\")} $`;\n\nexport const fmtKm = (km: number | null | undefined) =>\n km == null ? \"— km\" : `${Math.round(km).toLocaleString(\"fr-CA\")} km`;\n\nexport const fmtDate = (ts: number | null | undefined) =>\n ts == null\n ? \"—\"\n : new Date(ts * 1000).toLocaleDateString(\"fr-CA\", {\n day: \"numeric\",\n month: \"short\",\n year: \"numeric\",\n });\n","structuredPatch":[{"oldStart":38,"oldLines":16,"newStart":38,"newLines":60,"lines":[" details: Record;"," images: string[];"," carfax_url: string;","+ lat: number | null;","+ lng: number | null;"," first_seen: number;"," updated_at: number;"," active: number;"," }"," ","+/** Positionnement du prix face aux comparables (calculé côté API). */","+export interface MarketAnalysis {","+ n: number;","+ median: number;","+ p25: number;","+ p75: number;","+ min: number;","+ max: number;","+ delta_pct: number;","+ percentile: number;","+ badge: \"excellent\" | \"good\" | \"fair\" | \"high\";","+ label: string;","+ points: { p: number; km: number }[];","+}","+","+export interface KaScore {","+ overall: number;","+ parts: { key: string; label: string; score: number; weight: number }[];","+}","+","+/** Autre offre du même véhicule (même VIN, autre source — dédup inter-sources). */","+export interface DupSource {","+ uid: string;","+ source: string;","+ url: string;","+ price: number | null;","+ dealer_name: string;","+ city: string;","+}","+"," export interface VehicleDetail extends Vehicle {"," price_history: { ts: number; price: number | null }[];"," similar: Vehicle[];","+ market: MarketAnalysis | null;","+ ka_score: KaScore;","+ vin_info: Record | null;","+ dup_sources?: DupSource[];"," }"," ","+export interface Recall {","+ recall_number: string;","+ date: string;","+ component: string;","+ description: string;","+ units_affected: number | null;","+}","+"," export interface Facets {"," makes: { make: string; n: number }[];"," models: { model: string; n: number }[];"]}],"userModified":false,"replaceAll":false}}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcf7Fuc2LMMkGm3KTnB","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_0193uFPQsT2oX37ExnneyPSJ","name":"Edit","input":{"replace_all":false,"file_path":"/Users/simon-pierreboucher/auto-ka/frontend/src/api.ts","old_string":"export function fetchVehicle(uid: string) {\n return get(`/api/vehicles/${encodeURIComponent(uid)}`);\n}","new_string":"export function fetchVehicle(uid: string) {\n return get(`/api/vehicles/${encodeURIComponent(uid)}`);\n}\n\nexport function fetchVehicleRecalls(uid: string) {\n return get<{ count: number; recalls: Recall[] }>(\n `/api/vehicles/${encodeURIComponent(uid)}/recalls`\n );\n}"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":4549,"cache_read_input_tokens":88494,"cache_creation":{"ephemeral_5m_input_tokens":4549,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"4ee45255-19c8-4b0e-8856-93633c152124"}} {"type":"permission_auto","tool":"Edit","key":"tout autoriser","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/frontend/src/api.ts","old_string":"export function fetchVehicle(uid: string) {\n return get(`/api/vehicles/${encodeURIComponent(uid)}`);\n}","new_string":"export function fetchVehicle(uid: string) {\n return get(`/api/vehicles/${encodeURIComponent(uid)}`);\n}\n\nexport function fetchVehicleRecalls(uid: string) {\n return get<{ count: number; recalls: Recall[] }>(\n `/api/vehicles/${encodeURIComponent(uid)}/recalls`\n );\n}","replace_all":false}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_0193uFPQsT2oX37ExnneyPSJ","type":"tool_result","content":"The file /Users/simon-pierreboucher/auto-ka/frontend/src/api.ts has been updated successfully."}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"8b352ca4-ea8c-440b-ad15-6c7cafc2be31","timestamp":"2026-08-25T14:22:04.652Z","tool_use_result":{"filePath":"/Users/simon-pierreboucher/auto-ka/frontend/src/api.ts","oldString":"export function fetchVehicle(uid: string) {\n return get(`/api/vehicles/${encodeURIComponent(uid)}`);\n}","newString":"export function fetchVehicle(uid: string) {\n return get(`/api/vehicles/${encodeURIComponent(uid)}`);\n}\n\nexport function fetchVehicleRecalls(uid: string) {\n return get<{ count: number; recalls: Recall[] }>(\n `/api/vehicles/${encodeURIComponent(uid)}/recalls`\n );\n}","originalFile":"// -----------------------------------------------------------------------------\n// Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n// Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n// api.ts : client typé de l'API FastAPI\n// -----------------------------------------------------------------------------\n\nexport interface Vehicle {\n uid: string;\n kind: string;\n source: string;\n external_id: string;\n url: string;\n title: string;\n make: string;\n model: string;\n trim: string;\n year: number | null;\n price: number | null;\n price_label: string;\n mileage_km: number | null;\n mileage_label: string;\n transmission: string;\n fuel: string;\n drivetrain: string;\n body_type: string;\n exterior_color: string;\n interior_color: string;\n engine: string;\n doors: number | null;\n seats: number | null;\n vin: string;\n stock_number: string;\n dealer_name: string;\n city: string;\n region: string;\n description: string;\n features: string[];\n details: Record;\n images: string[];\n carfax_url: string;\n lat: number | null;\n lng: number | null;\n first_seen: number;\n updated_at: number;\n active: number;\n}\n\n/** Positionnement du prix face aux comparables (calculé côté API). */\nexport interface MarketAnalysis {\n n: number;\n median: number;\n p25: number;\n p75: number;\n min: number;\n max: number;\n delta_pct: number;\n percentile: number;\n badge: \"excellent\" | \"good\" | \"fair\" | \"high\";\n label: string;\n points: { p: number; km: number }[];\n}\n\nexport interface KaScore {\n overall: number;\n parts: { key: string; label: string; score: number; weight: number }[];\n}\n\n/** Autre offre du même véhicule (même VIN, autre source — dédup inter-sources). */\nexport interface DupSource {\n uid: string;\n source: string;\n url: string;\n price: number | null;\n dealer_name: string;\n city: string;\n}\n\nexport interface VehicleDetail extends Vehicle {\n price_history: { ts: number; price: number | null }[];\n similar: Vehicle[];\n market: MarketAnalysis | null;\n ka_score: KaScore;\n vin_info: Record | null;\n dup_sources?: DupSource[];\n}\n\nexport interface Recall {\n recall_number: string;\n date: string;\n component: string;\n description: string;\n units_affected: number | null;\n}\n\nexport interface Facets {\n makes: { make: string; n: number }[];\n models: { model: string; n: number }[];\n body_types: string[];\n fuels: string[];\n regions: { region: string; n: number }[];\n sources: { source: string; dealer_name: string; n: number }[];\n years: { y_min: number | null; y_max: number | null }[];\n}\n\nexport interface Source {\n id: string;\n name: string;\n url: string;\n listing_url?: string;\n city?: string;\n region?: string;\n platform?: string;\n status?: string;\n active_listings: number;\n last_sync: number | null;\n}\n\nexport interface Stats {\n total: number;\n sources: number;\n regions: number;\n avg_price: number | null;\n avg_km: number | null;\n avg_year: number | null;\n by_region: { region: string; n: number; avg_price: number | null }[];\n by_make: { make: string; n: number; avg_price: number | null }[];\n by_body: { body_type: string; n: number }[];\n price_drops: {\n uid: string; title: string; year: number | null; price: number;\n prev_price: number; images: string[]; dealer_name: string; city: string;\n }[];\n recent_syncs: {\n source: string; ts: number; found: number; added: number;\n updated: number; removed: number; ok: number; message: string;\n }[];\n}\n\nexport interface VehicleQuery {\n kind?: string;\n make?: string;\n model?: string;\n body_type?: string;\n fuel?: string;\n transmission?: string;\n drivetrain?: string;\n region?: string;\n city?: string;\n source?: string;\n year_min?: number;\n year_max?: number;\n price_min?: number;\n price_max?: number;\n km_max?: number;\n q?: string;\n sort?: string;\n limit?: number;\n offset?: number;\n}\n\n/** Slug URL — DOIT rester synchrone avec slugify() de autoka/seo.py. */\nexport function slugify(text: string, maxLen = 70): string {\n const t = (text || \"\")\n .normalize(\"NFKD\")\n .replace(/[\\u0300-\\u036f]/g, \"\")\n .replace(/[^a-zA-Z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\")\n .toLowerCase()\n .slice(0, maxLen)\n .replace(/-+$/g, \"\");\n return t || \"x\";\n}\n\n/** URL canonique d'une fiche : /vehicule/{uid}/{slug lisible}. */\nexport function vehiclePath(v: Vehicle): string {\n const base =\n [v.year, v.make, v.model].filter(Boolean).join(\" \") ||\n v.title || \"vehicule\";\n return `/vehicule/${encodeURIComponent(v.uid)}/${slugify(base)}`;\n}\n\nasync function get(path: string): Promise {\n const res = await fetch(path);\n if (!res.ok) throw new Error(`API ${res.status}`);\n return res.json();\n}\n\nexport function fetchVehicles(query: VehicleQuery) {\n const params = new URLSearchParams();\n for (const [k, v] of Object.entries(query)) {\n if (v !== undefined && v !== null && v !== \"\") params.set(k, String(v));\n }\n return get<{ total: number; count: number; vehicles: Vehicle[] }>(\n `/api/vehicles?${params.toString()}`\n );\n}\n\nexport function fetchVehicle(uid: string) {\n return get(`/api/vehicles/${encodeURIComponent(uid)}`);\n}\n\nexport function fetchFacets(make?: string, kind?: string) {\n const params = new URLSearchParams();\n if (make) params.set(\"make\", make);\n if (kind) params.set(\"kind\", kind);\n const qs = params.toString();\n return get(`/api/facets${qs ? `?${qs}` : \"\"}`);\n}\n\nexport function fetchSources() {\n return get<{ sources: Source[] }>(\"/api/sources\");\n}\n\nexport function fetchStats() {\n return get(\"/api/stats\");\n}\n\n// -- noms d'affichage des sources (peuplés depuis /api/sources) ---------------\nconst names: Record = {};\n\nexport function registerSourceNames(sources: Source[]) {\n for (const s of sources) names[s.id] = s.name;\n}\n\nexport function sourceName(id: string): string {\n return names[id] ?? id;\n}\n\n// -- compte (SSO KA ID — Groupe KA) --------------------------------------------\nexport interface Socials {\n instagram?: string;\n facebook?: string;\n x?: string;\n linkedin?: string;\n tiktok?: string;\n youtube?: string;\n}\n\nexport interface Me {\n ka_id: string;\n email: string;\n name: string;\n picture: string;\n provider: string;\n created: number | null;\n // — profil Groupe KA (source de vérité : le hub groupe-ka.com) —\n bio?: string;\n city?: string;\n job_title?: string;\n company?: string;\n age?: number | null;\n website?: string;\n socials?: Socials;\n role_label?: string;\n public_url?: string;\n profile_source?: \"groupe-ka\" | \"local\";\n}\n\nexport async function fetchMe(): Promise<{ user: Me | null; enabled: boolean }> {\n try {\n const res = await fetch(\"/api/auth/me\");\n if (!res.ok) return { user: null, enabled: false };\n return res.json();\n } catch {\n return { user: null, enabled: false };\n }\n}\n\nexport async function logout(): Promise {\n await fetch(\"/api/auth/logout\", { method: \"POST\" });\n}\n\n// -- favoris « Mon univers Ka » (magasin central : le hub groupe-ka.com) -------\nexport interface FavItem {\n item_id: string;\n title: string;\n subtitle?: string;\n price_label?: string;\n image_url?: string;\n url?: string;\n app?: string;\n created_at?: string;\n}\n\nexport function fetchFavorites() {\n return get<{ ids: string[]; items: FavItem[] }>(\"/api/favorites\");\n}\n\nexport async function toggleFavorite(on: boolean, item: FavItem): Promise {\n const res = await fetch(\"/api/favorites/toggle\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ on, item }),\n });\n if (!res.ok) throw new Error(`API ${res.status}`);\n}\n\n/** Transforme un véhicule en item de favori pour le hub Groupe KA. */\nexport function vehicleFavItem(v: Vehicle): FavItem {\n const title =\n [v.year, v.make, v.model].filter(Boolean).join(\" \") || v.title || \"Véhicule\";\n const where =\n [v.dealer_name || sourceName(v.source), v.region || v.city]\n .filter(Boolean).join(\" · \") ||\n (v.mileage_km != null ? fmtKm(v.mileage_km) : \"\");\n return {\n item_id: v.uid,\n title,\n subtitle: where,\n price_label: fmtPrice(v.price),\n image_url: v.images && v.images.length > 0 ? v.images[0] : \"\",\n url: `https://www.auto-ka.com${vehiclePath(v)}`,\n };\n}\n\n// -- formatteurs ---------------------------------------------------------------\nexport const fmtPrice = (p: number | null | undefined) =>\n p == null ? \"Prix sur demande\" : `${Math.round(p).toLocaleString(\"fr-CA\")} $`;\n\nexport const fmtKm = (km: number | null | undefined) =>\n km == null ? \"— km\" : `${Math.round(km).toLocaleString(\"fr-CA\")} km`;\n\nexport const fmtDate = (ts: number | null | undefined) =>\n ts == null\n ? \"—\"\n : new Date(ts * 1000).toLocaleDateString(\"fr-CA\", {\n day: \"numeric\",\n month: \"short\",\n year: \"numeric\",\n });\n","structuredPatch":[{"oldStart":198,"oldLines":6,"newStart":198,"newLines":12,"lines":[" return get(`/api/vehicles/${encodeURIComponent(uid)}`);"," }"," ","+export function fetchVehicleRecalls(uid: string) {","+ return get<{ count: number; recalls: Recall[] }>(","+ `/api/vehicles/${encodeURIComponent(uid)}/recalls`","+ );","+}","+"," export function fetchFacets(make?: string, kind?: string) {"," const params = new URLSearchParams();"," if (make) params.set(\"make\", make);"]}],"userModified":false,"replaceAll":false}}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcf7Fuc2LMMkGm3KTnB","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_011qbMATh2E2VfqwCGZP6Pmw","name":"Write","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/frontend/src/components/Lightbox.tsx","content":"// -----------------------------------------------------------------------------\n// Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n// Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n// Lightbox.tsx : visionneuse photos plein écran — clavier, gestes, compteur\n// -----------------------------------------------------------------------------\nimport { useCallback, useEffect, useRef } from \"react\";\n\ninterface Props {\n images: string[];\n index: number;\n onClose: () => void;\n onIndex: (i: number) => void;\n alt: string;\n}\n\nexport default function Lightbox({ images, index, onClose, onIndex, alt }: Props) {\n const touchX = useRef(null);\n\n const prev = useCallback(\n () => onIndex((index - 1 + images.length) % images.length),\n [index, images.length, onIndex]\n );\n const next = useCallback(\n () => onIndex((index + 1) % images.length),\n [index, images.length, onIndex]\n );\n\n useEffect(() => {\n const onKey = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose();\n else if (e.key === \"ArrowLeft\") prev();\n else if (e.key === \"ArrowRight\") next();\n };\n window.addEventListener(\"keydown\", onKey);\n document.body.style.overflow = \"hidden\";\n return () => {\n window.removeEventListener(\"keydown\", onKey);\n document.body.style.overflow = \"\";\n };\n }, [onClose, prev, next]);\n\n // précharger les voisines pour une navigation instantanée\n useEffect(() => {\n [index - 1, index + 1].forEach((i) => {\n const u = images[(i + images.length) % images.length];\n if (u) new Image().src = u;\n });\n }, [index, images]);\n\n return (\n { touchX.current = e.touches[0].clientX; }}\n onTouchEnd={(e) => {\n if (touchX.current == null) return;\n const dx = e.changedTouches[0].clientX - touchX.current;\n touchX.current = null;\n if (dx > 48) prev();\n else if (dx < -48) next();\n }}\n >\n \n
{index + 1} / {images.length}
\n {images.length > 1 && (\n <>\n { e.stopPropagation(); prev(); }}\n >←\n { e.stopPropagation(); next(); }}\n >→\n \n )}\n e.stopPropagation()}\n />\n
\n );\n}\n"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":4549,"cache_read_input_tokens":88494,"cache_creation":{"ephemeral_5m_input_tokens":4549,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"5875c8b0-0f41-432d-8d97-0a18fd9175e8"}} {"type":"permission_auto","tool":"Write","key":"tout autoriser","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/frontend/src/components/Lightbox.tsx","content":"// -----------------------------------------------------------------------------\n// Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n// Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n// Lightbox.tsx : visionneuse photos plein écran — clavier, gestes, compteur\n// -----------------------------------------------------------------------------\nimport { useCallback, useEffect, useRef } from \"react\";\n\ninterface Props {\n images: string[];\n index: number;\n onClose: () => void;\n onIndex: (i: number) => void;\n alt: string;\n}\n\nexport default function Lightbox({ images, index, onClose, onIndex, alt }: Props) {\n const touchX = useRef(null);\n\n const prev = useCallback(\n () => onIndex((index - 1 + images.length) % images.length),\n [index, images.length, onIndex]\n );\n const next = useCallback(\n () => onIndex((index + 1) % images.length),\n [index, images.length, onIndex]\n );\n\n useEffect(() => {\n const onKey = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose();\n else if (e.key === \"ArrowLeft\") prev();\n else if (e.key === \"ArrowRight\") next();\n };\n window.addEventListener(\"keydown\", onKey);\n document.body.style.overflow = \"hidden\";\n return () => {\n window.removeEventListener(\"keydown\", onKey);\n document.body.style.overflow = \"\";\n };\n }, [onClose, prev, next]);\n\n // précharger les voisines pour une navigation instantanée\n useEffect(() => {\n [index - 1, index + 1].forEach((i) => {\n const u = images[(i + images.length) % images.length];\n if (u) new Image().src = u;\n });\n }, [index, images]);\n\n return (\n { touchX.current = e.touches[0].clientX; }}\n onTouchEnd={(e) => {\n if (touchX.current == null) return;\n const dx = e.changedTouches[0].clientX - touchX.current;\n touchX.current = null;\n if (dx > 48) prev();\n else if (dx < -48) next();\n }}\n >\n \n
{index + 1} / {images.length}
\n {images.length > 1 && (\n <>\n { e.stopPropagation(); prev(); }}\n >←\n { e.stopPropagation(); next(); }}\n >→\n \n )}\n e.stopPropagation()}\n />\n
\n );\n}\n"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_011qbMATh2E2VfqwCGZP6Pmw","type":"tool_result","content":"File created successfully at: /Users/simon-pierreboucher/auto-ka/frontend/src/components/Lightbox.tsx"}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"9599d8a5-0974-467b-a22c-b324b3152699","timestamp":"2026-08-25T14:22:14.409Z","tool_use_result":{"type":"create","filePath":"/Users/simon-pierreboucher/auto-ka/frontend/src/components/Lightbox.tsx","content":"// -----------------------------------------------------------------------------\n// Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n// Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n// Lightbox.tsx : visionneuse photos plein écran — clavier, gestes, compteur\n// -----------------------------------------------------------------------------\nimport { useCallback, useEffect, useRef } from \"react\";\n\ninterface Props {\n images: string[];\n index: number;\n onClose: () => void;\n onIndex: (i: number) => void;\n alt: string;\n}\n\nexport default function Lightbox({ images, index, onClose, onIndex, alt }: Props) {\n const touchX = useRef(null);\n\n const prev = useCallback(\n () => onIndex((index - 1 + images.length) % images.length),\n [index, images.length, onIndex]\n );\n const next = useCallback(\n () => onIndex((index + 1) % images.length),\n [index, images.length, onIndex]\n );\n\n useEffect(() => {\n const onKey = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose();\n else if (e.key === \"ArrowLeft\") prev();\n else if (e.key === \"ArrowRight\") next();\n };\n window.addEventListener(\"keydown\", onKey);\n document.body.style.overflow = \"hidden\";\n return () => {\n window.removeEventListener(\"keydown\", onKey);\n document.body.style.overflow = \"\";\n };\n }, [onClose, prev, next]);\n\n // précharger les voisines pour une navigation instantanée\n useEffect(() => {\n [index - 1, index + 1].forEach((i) => {\n const u = images[(i + images.length) % images.length];\n if (u) new Image().src = u;\n });\n }, [index, images]);\n\n return (\n { touchX.current = e.touches[0].clientX; }}\n onTouchEnd={(e) => {\n if (touchX.current == null) return;\n const dx = e.changedTouches[0].clientX - touchX.current;\n touchX.current = null;\n if (dx > 48) prev();\n else if (dx < -48) next();\n }}\n >\n \n
{index + 1} / {images.length}
\n {images.length > 1 && (\n <>\n { e.stopPropagation(); prev(); }}\n >←\n { e.stopPropagation(); next(); }}\n >→\n \n )}\n e.stopPropagation()}\n />\n
\n );\n}\n","structuredPatch":[],"originalFile":null,"userModified":false}}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"af743c39-cbae-44d1-9e50-4942e17721d2","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePchqLnEmhcQmTYTX6XA","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_011vhHDac5WBBZqkYiMVdiWz","name":"TodoWrite","input":{"todos":[{"content":"Créer autoka/vindecode.py (décodage VIN NHTSA + cache DB)","status":"completed","activeForm":"Création du module vindecode.py"},{"content":"Enrichir l'endpoint détail : marché, KA Score, VIN, autres offres","status":"completed","activeForm":"Enrichissement de l'endpoint détail"},{"content":"Frontend : lightbox galerie + badge marché","status":"completed","activeForm":"Ajout lightbox et badge marché"},{"content":"Frontend : refonte Vehicle.tsx (analyse marché, autres offres, rappels, fiche VIN, KA Score, carte, sparkline prix)","status":"in_progress","activeForm":"Refonte de Vehicle.tsx"},{"content":"CSS des nouvelles sections","status":"pending","activeForm":"Ajout du CSS"},{"content":"Build frontend + tests locaux","status":"pending","activeForm":"Build et tests"},{"content":"pm2 restart + healthcheck + commit + push","status":"pending","activeForm":"Déploiement et push"}]},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":3270,"cache_read_input_tokens":93043,"cache_creation":{"ephemeral_5m_input_tokens":3270,"ephemeral_1h_input_tokens":0},"output_tokens":25,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"9eb3fce0-7c44-4d2a-950c-754ca2030034"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_011vhHDac5WBBZqkYiMVdiWz","type":"tool_result","content":"Todos have been modified successfully. Ensure that you continue to use the todo list to track your progress. Please proceed with the current tasks if applicable"}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"a0a109ab-8360-4fd4-b663-d80a15fb89b1","timestamp":"2026-08-25T14:22:24.127Z","tool_use_result":{"oldTodos":[{"content":"Créer autoka/vindecode.py (décodage VIN NHTSA + cache DB)","status":"in_progress","activeForm":"Création du module vindecode.py"},{"content":"Enrichir l'endpoint détail : marché, KA Score, VIN, autres offres","status":"pending","activeForm":"Enrichissement de l'endpoint détail"},{"content":"Frontend : lightbox galerie + badge marché","status":"pending","activeForm":"Ajout lightbox et badge marché"},{"content":"Frontend : sections analyse marché, autres offres, rappels, fiche VIN, KA Score, carte","status":"pending","activeForm":"Ajout des nouvelles sections détail"},{"content":"Frontend : historique prix en graphique","status":"pending","activeForm":"Graphique historique prix"},{"content":"Build frontend + tests locaux","status":"pending","activeForm":"Build et tests"},{"content":"pm2 restart + healthcheck + commit + push","status":"pending","activeForm":"Déploiement et push"}],"newTodos":[{"content":"Créer autoka/vindecode.py (décodage VIN NHTSA + cache DB)","status":"completed","activeForm":"Création du module vindecode.py"},{"content":"Enrichir l'endpoint détail : marché, KA Score, VIN, autres offres","status":"completed","activeForm":"Enrichissement de l'endpoint détail"},{"content":"Frontend : lightbox galerie + badge marché","status":"completed","activeForm":"Ajout lightbox et badge marché"},{"content":"Frontend : refonte Vehicle.tsx (analyse marché, autres offres, rappels, fiche VIN, KA Score, carte, sparkline prix)","status":"in_progress","activeForm":"Refonte de Vehicle.tsx"},{"content":"CSS des nouvelles sections","status":"pending","activeForm":"Ajout du CSS"},{"content":"Build frontend + tests locaux","status":"pending","activeForm":"Build et tests"},{"content":"pm2 restart + healthcheck + commit + push","status":"pending","activeForm":"Déploiement et push"}],"verificationNudgeNeeded":false}}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"a639d728-c139-4bb2-904f-401e35d448d8","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePciZHuYoupgCetsuVqx","type":"message","role":"assistant","content":[{"type":"text","text":"Maintenant la refonte complète de `Vehicle.tsx` avec toutes les nouvelles sections."}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":561,"cache_read_input_tokens":96313,"cache_creation":{"ephemeral_5m_input_tokens":561,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"854835f9-92b3-47b9-be6d-9234c961f999"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePciZHuYoupgCetsuVqx","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01SLFkYKvFRg3Tnnk4pF64So","name":"Write","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/frontend/src/pages/Vehicle.tsx","content":"// -----------------------------------------------------------------------------\n// Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n// Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n// Vehicle.tsx : fiche véhicule — galerie + lightbox, badge marché, analyse de\n// prix, autres offres (même VIN), fiche constructeur, rappels TC, KA Score,\n// carte, historique de prix, similaires\n// -----------------------------------------------------------------------------\nimport { useEffect, useMemo, useState } from \"react\";\nimport { Link, useParams } from \"react-router-dom\";\nimport {\n KaScore, MarketAnalysis, Recall, VehicleDetail,\n fetchVehicle, fetchVehicleRecalls, fmtDate, fmtKm, fmtPrice, sourceName,\n} from \"../api\";\nimport VehicleCard from \"../components/VehicleCard\";\nimport FavButton from \"../components/FavButton\";\nimport Lightbox from \"../components/Lightbox\";\n\n// --- Nuage prix/km des comparables (SVG maison, style Charts.tsx) ------------\nfunction MarketScatter({ m, price, km }: {\n m: MarketAnalysis; price: number; km: number | null;\n}) {\n const pts = m.points;\n if (pts.length < 5) return null;\n const W = 560, H = 260, PAD = { t: 14, r: 14, b: 30, l: 56 };\n const kms = pts.map((d) => d.km).concat(km != null ? [km] : []);\n const ps = pts.map((d) => d.p).concat([price]);\n const kMin = Math.min(...kms), kMax = Math.max(...kms);\n const pMin = Math.min(...ps), pMax = Math.max(...ps);\n const x = (v: number) =>\n PAD.l + (kMax > kMin ? (v - kMin) / (kMax - kMin) : 0.5) * (W - PAD.l - PAD.r);\n const y = (v: number) =>\n H - PAD.b - (pMax > pMin ? (v - pMin) / (pMax - pMin) : 0.5) * (H - PAD.t - PAD.b);\n const fmtK = (v: number) => `${Math.round(v / 1000)} k`;\n return (\n \n \n \n \n \n médiane {fmtPrice(m.median)}\n \n {pts.map((d, i) => (\n \n ))}\n {km != null && (\n \n \n \n ce véhicule\n \n \n )}\n {fmtK(kMin)} km\n {fmtK(kMax)} km\n {fmtK(pMax)} $\n {fmtK(pMin)} $\n \n );\n}\n\n// --- Courbe de l'historique de prix ------------------------------------------\nfunction PriceSpark({ hist }: { hist: { ts: number; price: number | null }[] }) {\n const pts = hist.filter((h) => h.price != null).reverse() as\n { ts: number; price: number }[];\n if (pts.length < 2) return null;\n const W = 300, H = 64, P = 6;\n const tMin = pts[0].ts, tMax = pts[pts.length - 1].ts;\n const pMin = Math.min(...pts.map((d) => d.price));\n const pMax = Math.max(...pts.map((d) => d.price));\n const x = (t: number) =>\n P + (tMax > tMin ? (t - tMin) / (tMax - tMin) : 0.5) * (W - 2 * P);\n const y = (p: number) =>\n H - P - (pMax > pMin ? (p - pMin) / (pMax - pMin) : 0.5) * (H - 2 * P);\n const d = pts.map((p, i) => `${i ? \"L\" : \"M\"}${x(p.ts).toFixed(1)},${y(p.price).toFixed(1)}`).join(\" \");\n return (\n \n \n {pts.map((p, i) => )}\n \n );\n}\n\n// --- KA Score (jauge + barres par composante) ---------------------------------\nfunction ScorePanel({ s }: { s: KaScore }) {\n const tone = s.overall >= 70 ? \"good\" : s.overall >= 45 ? \"fair\" : \"high\";\n return (\n
\n

🏁 KA Score

\n
\n
{s.overall}
\n
\n Indice composite Auto-Ka : prix face au marché, kilométrage selon\n l'âge, qualité de la fiche et fraîcheur de l'annonce.\n
\n
\n
\n {s.parts.map((p) => (\n
\n {p.label}\n \n {p.score}\n
\n ))}\n
\n
\n );\n}\n\nexport default function VehiclePage() {\n const { uid } = useParams<{ uid: string }>();\n const [v, setV] = useState(null);\n const [error, setError] = useState(false);\n const [img, setImg] = useState(0);\n const [lightbox, setLightbox] = useState(false);\n const [recalls, setRecalls] = useState(null);\n const [recallsOpen, setRecallsOpen] = useState(false);\n\n useEffect(() => {\n setV(null); setError(false); setImg(0); setLightbox(false);\n setRecalls(null); setRecallsOpen(false);\n if (uid) {\n fetchVehicle(uid).then(setV).catch(() => setError(true));\n fetchVehicleRecalls(uid).then((r) => setRecalls(r.recalls)).catch(() => {});\n }\n window.scrollTo(0, 0);\n }, [uid]);\n\n useEffect(() => {\n if (v) document.title = `${v.title} — ${fmtPrice(v.price)} | Auto·Ka`;\n }, [v]);\n\n const mapSrc = useMemo(() => {\n if (!v || v.lat == null || v.lng == null) return null;\n const d = 0.02;\n const bbox = [v.lng - d, v.lat - d, v.lng + d, v.lat + d].join(\",\");\n return `https://www.openstreetmap.org/export/embed.html?bbox=${bbox}&layer=mapnik&marker=${v.lat},${v.lng}`;\n }, [v]);\n\n if (error)\n return (\n
\n
🚗
\n

Véhicule introuvable

\n

Il a peut-être été vendu — l'inventaire évolue chaque jour.

\n

← Retour à la recherche

\n
\n );\n\n if (!v)\n return (\n
\n
\n
\n
\n
\n
\n
\n );\n\n const prevPrice = v.price_history.find(\n (h) => h.price != null && v.price != null && h.price !== v.price\n )?.price;\n\n const specs: [string, string][] = [\n [\"Année\", v.year ? String(v.year) : \"—\"],\n [\"Version\", v.trim || \"—\"],\n [\"Kilométrage\", fmtKm(v.mileage_km)],\n [\"Transmission\", v.transmission || \"—\"],\n [\"Carburant\", v.fuel || \"—\"],\n [\"Motricité\", v.drivetrain || \"—\"],\n [\"Carrosserie\", v.body_type || \"—\"],\n [\"Moteur\", v.engine || \"—\"],\n [\"Couleur ext.\", v.exterior_color || \"—\"],\n [\"Couleur int.\", v.interior_color || \"—\"],\n [\"Portes\", v.doors ? String(v.doors) : \"—\"],\n [\"Places\", v.seats ? String(v.seats) : \"—\"],\n [\"NIV (VIN)\", v.vin || \"—\"],\n [\"No de stock\", v.stock_number || \"—\"],\n ].filter(([, val]) => val !== \"—\") as [string, string][];\n\n const m = v.market;\n const offers = v.dup_sources || [];\n\n return (\n
\n

\n ← Retour à la recherche\n

\n
\n
\n {v.dealer_name || v.source} — {v.city}{v.region ? ` · ${v.region}` : \"\"}\n

{v.title}

\n
\n
\n
{fmtPrice(v.price)}
\n {prevPrice != null && v.price != null && prevPrice > v.price && (\n
{fmtPrice(prevPrice)}
\n )}\n {m && (\n
\n {m.label}\n {Math.abs(m.delta_pct) >= 1 && (\n \n {\" \"}· {Math.abs(m.delta_pct).toLocaleString(\"fr-CA\")} %{\" \"}\n {m.delta_pct < 0 ? \"sous\" : \"au-dessus de\"} la médiane\n \n )}\n
\n )}\n
\n
\n\n
\n
\n
\n
\n {v.images.length > 0 ? (\n setLightbox(true)}\n />\n ) : (\n
🚗
\n )}\n {v.images.length > 0 && (\n \n )}\n \n
\n {v.images.length > 1 && (\n
\n {v.images.map((u, i) => (\n setImg(i)}\n />\n ))}\n
\n )}\n
\n {lightbox && v.images.length > 0 && (\n setLightbox(false)}\n alt={v.title}\n />\n )}\n\n {v.description && (\n
\n

📝 Description du concessionnaire

\n
{v.description}
\n
\n )}\n\n {m && v.price != null && (\n
\n

📊 Analyse du marché

\n
\n
Comparables{m.n}
\n
Médiane{fmtPrice(m.median)}
\n
Fourchette 25–75 %{fmtPrice(m.p25)} – {fmtPrice(m.p75)}
\n
Étendue{fmtPrice(m.min)} – {fmtPrice(m.max)}
\n
\n
\n \n
\n
\n moins cher\n {m.percentile} % des comparables sont moins chers\n plus cher\n
\n \n
\n {v.make} {v.model.split(\" \")[0]}{v.year ? ` ${v.year - 1}–${v.year + 1}` : \"\"} en\n vente au Québec, doublons exclus — calcul Auto-Ka\n
\n
\n )}\n\n {mapSrc && (\n
\n

📍 Où le voir

\n \n
\n {[v.dealer_name, v.city, v.region].filter(Boolean).join(\" · \")} —\n position approximative (ville du vendeur)\n
\n
\n )}\n
\n\n
\n
\n

🔧 Caractéristiques

\n \n \n {specs.map(([k, val]) => (\n \n \n \n \n ))}\n \n
{k}{val}
\n \n Voir chez {v.dealer_name || \"le concessionnaire\"} →\n \n {v.carfax_url && (\n \n 📋 Rapport Carfax\n \n )}\n
\n annonce originale — prix et disponibilité confirmés à la source\n
\n
\n\n {offers.length > 0 && (\n \n )}\n\n {v.ka_score && }\n\n {v.features.length > 0 && (\n
\n

✨ Équipements ({v.features.length})

\n
\n {v.features.map((f) => (\n {f}\n ))}\n
\n
\n )}\n\n {v.vin_info && Object.keys(v.vin_info).length > 0 && (\n
\n

🏭 Fiche constructeur

\n \n \n {Object.entries(v.vin_info).map(([k, val]) => (\n \n \n \n \n ))}\n \n
{k}{val}
\n
décodée du NIV — base vPIC (NHTSA)
\n
\n )}\n\n {recalls !== null && recalls.length > 0 && (\n
\n

⚠️ Rappels Transports Canada ({recalls.length})

\n
\n {(recallsOpen ? recalls : recalls.slice(0, 3)).map((r) => (\n
\n \n {r.date} {r.component}\n \n

{r.description}

\n

\n Rappel no {r.recall_number}\n {r.units_affected ? ` · ${r.units_affected.toLocaleString(\"fr-CA\")} unités visées` : \"\"}\n

\n
\n ))}\n
\n {recalls.length > 3 && (\n \n )}\n
\n rappels {v.make} {v.model} {v.year ?? \"\"} — vérifier auprès du\n concessionnaire s'ils ont été effectués\n
\n
\n )}\n\n {v.price_history.length > 1 && (\n
\n

📉 Historique de prix

\n \n
\n {v.price_history.map((h, i) => {\n const next = v.price_history[i + 1];\n const dir =\n next?.price != null && h.price != null\n ? h.price < next.price ? \"down\" : h.price > next.price ? \"up\" : \"\"\n : \"\";\n return (\n
\n {fmtDate(h.ts)}\n {fmtPrice(h.price)}\n
\n );\n })}\n
\n
\n )}\n\n
\n

ℹ️ Suivi Auto-Ka

\n \n \n \n \n \n \n
Repéré le{fmtDate(v.first_seen)}
Vérifié le{fmtDate(v.updated_at)}
Statut{v.active ? \"En vente\" : \"Retiré / vendu\"}
\n
\n
\n
\n\n {v.similar.length > 0 && (\n
\n Comparer\n

\n {v.make} {v.model} similaires au Québec\n

\n
\n {v.similar.map((s) => (\n \n ))}\n
\n
\n )}\n
\n );\n}\n"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":561,"cache_read_input_tokens":96313,"cache_creation":{"ephemeral_5m_input_tokens":561,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"842a2d22-2851-4240-b12f-afdb0a8bf1c5"}} {"type":"permission_auto","tool":"Write","key":"tout autoriser","input":{"file_path":"/Users/simon-pierreboucher/auto-ka/frontend/src/pages/Vehicle.tsx","content":"// -----------------------------------------------------------------------------\n// Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n// Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n// Vehicle.tsx : fiche véhicule — galerie + lightbox, badge marché, analyse de\n// prix, autres offres (même VIN), fiche constructeur, rappels TC, KA Score,\n// carte, historique de prix, similaires\n// -----------------------------------------------------------------------------\nimport { useEffect, useMemo, useState } from \"react\";\nimport { Link, useParams } from \"react-router-dom\";\nimport {\n KaScore, MarketAnalysis, Recall, VehicleDetail,\n fetchVehicle, fetchVehicleRecalls, fmtDate, fmtKm, fmtPrice, sourceName,\n} from \"../api\";\nimport VehicleCard from \"../components/VehicleCard\";\nimport FavButton from \"../components/FavButton\";\nimport Lightbox from \"../components/Lightbox\";\n\n// --- Nuage prix/km des comparables (SVG maison, style Charts.tsx) ------------\nfunction MarketScatter({ m, price, km }: {\n m: MarketAnalysis; price: number; km: number | null;\n}) {\n const pts = m.points;\n if (pts.length < 5) return null;\n const W = 560, H = 260, PAD = { t: 14, r: 14, b: 30, l: 56 };\n const kms = pts.map((d) => d.km).concat(km != null ? [km] : []);\n const ps = pts.map((d) => d.p).concat([price]);\n const kMin = Math.min(...kms), kMax = Math.max(...kms);\n const pMin = Math.min(...ps), pMax = Math.max(...ps);\n const x = (v: number) =>\n PAD.l + (kMax > kMin ? (v - kMin) / (kMax - kMin) : 0.5) * (W - PAD.l - PAD.r);\n const y = (v: number) =>\n H - PAD.b - (pMax > pMin ? (v - pMin) / (pMax - pMin) : 0.5) * (H - PAD.t - PAD.b);\n const fmtK = (v: number) => `${Math.round(v / 1000)} k`;\n return (\n \n \n \n \n \n médiane {fmtPrice(m.median)}\n \n {pts.map((d, i) => (\n \n ))}\n {km != null && (\n \n \n \n ce véhicule\n \n \n )}\n {fmtK(kMin)} km\n {fmtK(kMax)} km\n {fmtK(pMax)} $\n {fmtK(pMin)} $\n \n );\n}\n\n// --- Courbe de l'historique de prix ------------------------------------------\nfunction PriceSpark({ hist }: { hist: { ts: number; price: number | null }[] }) {\n const pts = hist.filter((h) => h.price != null).reverse() as\n { ts: number; price: number }[];\n if (pts.length < 2) return null;\n const W = 300, H = 64, P = 6;\n const tMin = pts[0].ts, tMax = pts[pts.length - 1].ts;\n const pMin = Math.min(...pts.map((d) => d.price));\n const pMax = Math.max(...pts.map((d) => d.price));\n const x = (t: number) =>\n P + (tMax > tMin ? (t - tMin) / (tMax - tMin) : 0.5) * (W - 2 * P);\n const y = (p: number) =>\n H - P - (pMax > pMin ? (p - pMin) / (pMax - pMin) : 0.5) * (H - 2 * P);\n const d = pts.map((p, i) => `${i ? \"L\" : \"M\"}${x(p.ts).toFixed(1)},${y(p.price).toFixed(1)}`).join(\" \");\n return (\n \n \n {pts.map((p, i) => )}\n \n );\n}\n\n// --- KA Score (jauge + barres par composante) ---------------------------------\nfunction ScorePanel({ s }: { s: KaScore }) {\n const tone = s.overall >= 70 ? \"good\" : s.overall >= 45 ? \"fair\" : \"high\";\n return (\n
\n

🏁 KA Score

\n
\n
{s.overall}
\n
\n Indice composite Auto-Ka : prix face au marché, kilométrage selon\n l'âge, qualité de la fiche et fraîcheur de l'annonce.\n
\n
\n
\n {s.parts.map((p) => (\n
\n {p.label}\n \n {p.score}\n
\n ))}\n
\n
\n );\n}\n\nexport default function VehiclePage() {\n const { uid } = useParams<{ uid: string }>();\n const [v, setV] = useState(null);\n const [error, setError] = useState(false);\n const [img, setImg] = useState(0);\n const [lightbox, setLightbox] = useState(false);\n const [recalls, setRecalls] = useState(null);\n const [recallsOpen, setRecallsOpen] = useState(false);\n\n useEffect(() => {\n setV(null); setError(false); setImg(0); setLightbox(false);\n setRecalls(null); setRecallsOpen(false);\n if (uid) {\n fetchVehicle(uid).then(setV).catch(() => setError(true));\n fetchVehicleRecalls(uid).then((r) => setRecalls(r.recalls)).catch(() => {});\n }\n window.scrollTo(0, 0);\n }, [uid]);\n\n useEffect(() => {\n if (v) document.title = `${v.title} — ${fmtPrice(v.price)} | Auto·Ka`;\n }, [v]);\n\n const mapSrc = useMemo(() => {\n if (!v || v.lat == null || v.lng == null) return null;\n const d = 0.02;\n const bbox = [v.lng - d, v.lat - d, v.lng + d, v.lat + d].join(\",\");\n return `https://www.openstreetmap.org/export/embed.html?bbox=${bbox}&layer=mapnik&marker=${v.lat},${v.lng}`;\n }, [v]);\n\n if (error)\n return (\n
\n
🚗
\n

Véhicule introuvable

\n

Il a peut-être été vendu — l'inventaire évolue chaque jour.

\n

← Retour à la recherche

\n
\n );\n\n if (!v)\n return (\n
\n
\n
\n
\n
\n
\n
\n );\n\n const prevPrice = v.price_history.find(\n (h) => h.price != null && v.price != null && h.price !== v.price\n )?.price;\n\n const specs: [string, string][] = [\n [\"Année\", v.year ? String(v.year) : \"—\"],\n [\"Version\", v.trim || \"—\"],\n [\"Kilométrage\", fmtKm(v.mileage_km)],\n [\"Transmission\", v.transmission || \"—\"],\n [\"Carburant\", v.fuel || \"—\"],\n [\"Motricité\", v.drivetrain || \"—\"],\n [\"Carrosserie\", v.body_type || \"—\"],\n [\"Moteur\", v.engine || \"—\"],\n [\"Couleur ext.\", v.exterior_color || \"—\"],\n [\"Couleur int.\", v.interior_color || \"—\"],\n [\"Portes\", v.doors ? String(v.doors) : \"—\"],\n [\"Places\", v.seats ? String(v.seats) : \"—\"],\n [\"NIV (VIN)\", v.vin || \"—\"],\n [\"No de stock\", v.stock_number || \"—\"],\n ].filter(([, val]) => val !== \"—\") as [string, string][];\n\n const m = v.market;\n const offers = v.dup_sources || [];\n\n return (\n
\n

\n ← Retour à la recherche\n

\n
\n
\n {v.dealer_name || v.source} — {v.city}{v.region ? ` · ${v.region}` : \"\"}\n

{v.title}

\n
\n
\n
{fmtPrice(v.price)}
\n {prevPrice != null && v.price != null && prevPrice > v.price && (\n
{fmtPrice(prevPrice)}
\n )}\n {m && (\n
\n {m.label}\n {Math.abs(m.delta_pct) >= 1 && (\n \n {\" \"}· {Math.abs(m.delta_pct).toLocaleString(\"fr-CA\")} %{\" \"}\n {m.delta_pct < 0 ? \"sous\" : \"au-dessus de\"} la médiane\n \n )}\n
\n )}\n
\n
\n\n
\n
\n
\n
\n {v.images.length > 0 ? (\n setLightbox(true)}\n />\n ) : (\n
🚗
\n )}\n {v.images.length > 0 && (\n \n )}\n \n
\n {v.images.length > 1 && (\n
\n {v.images.map((u, i) => (\n setImg(i)}\n />\n ))}\n
\n )}\n
\n {lightbox && v.images.length > 0 && (\n setLightbox(false)}\n alt={v.title}\n />\n )}\n\n {v.description && (\n
\n

📝 Description du concessionnaire

\n
{v.description}
\n
\n )}\n\n {m && v.price != null && (\n
\n

📊 Analyse du marché

\n
\n
Comparables{m.n}
\n
Médiane{fmtPrice(m.median)}
\n
Fourchette 25–75 %{fmtPrice(m.p25)} – {fmtPrice(m.p75)}
\n
Étendue{fmtPrice(m.min)} – {fmtPrice(m.max)}
\n
\n
\n \n
\n
\n moins cher\n {m.percentile} % des comparables sont moins chers\n plus cher\n
\n \n
\n {v.make} {v.model.split(\" \")[0]}{v.year ? ` ${v.year - 1}–${v.year + 1}` : \"\"} en\n vente au Québec, doublons exclus — calcul Auto-Ka\n
\n
\n )}\n\n {mapSrc && (\n
\n

📍 Où le voir

\n \n
\n {[v.dealer_name, v.city, v.region].filter(Boolean).join(\" · \")} —\n position approximative (ville du vendeur)\n
\n
\n )}\n
\n\n
\n
\n

🔧 Caractéristiques

\n \n \n {specs.map(([k, val]) => (\n \n \n \n \n ))}\n \n
{k}{val}
\n \n Voir chez {v.dealer_name || \"le concessionnaire\"} →\n \n {v.carfax_url && (\n \n 📋 Rapport Carfax\n \n )}\n
\n annonce originale — prix et disponibilité confirmés à la source\n
\n
\n\n {offers.length > 0 && (\n \n )}\n\n {v.ka_score && }\n\n {v.features.length > 0 && (\n
\n

✨ Équipements ({v.features.length})

\n
\n {v.features.map((f) => (\n {f}\n ))}\n
\n
\n )}\n\n {v.vin_info && Object.keys(v.vin_info).length > 0 && (\n
\n

🏭 Fiche constructeur

\n \n \n {Object.entries(v.vin_info).map(([k, val]) => (\n \n \n \n \n ))}\n \n
{k}{val}
\n
décodée du NIV — base vPIC (NHTSA)
\n
\n )}\n\n {recalls !== null && recalls.length > 0 && (\n
\n

⚠️ Rappels Transports Canada ({recalls.length})

\n
\n {(recallsOpen ? recalls : recalls.slice(0, 3)).map((r) => (\n
\n \n {r.date} {r.component}\n \n

{r.description}

\n

\n Rappel no {r.recall_number}\n {r.units_affected ? ` · ${r.units_affected.toLocaleString(\"fr-CA\")} unités visées` : \"\"}\n

\n
\n ))}\n
\n {recalls.length > 3 && (\n \n )}\n
\n rappels {v.make} {v.model} {v.year ?? \"\"} — vérifier auprès du\n concessionnaire s'ils ont été effectués\n
\n
\n )}\n\n {v.price_history.length > 1 && (\n
\n

📉 Historique de prix

\n \n
\n {v.price_history.map((h, i) => {\n const next = v.price_history[i + 1];\n const dir =\n next?.price != null && h.price != null\n ? h.price < next.price ? \"down\" : h.price > next.price ? \"up\" : \"\"\n : \"\";\n return (\n
\n {fmtDate(h.ts)}\n {fmtPrice(h.price)}\n
\n );\n })}\n
\n
\n )}\n\n
\n

ℹ️ Suivi Auto-Ka

\n \n \n \n \n \n \n
Repéré le{fmtDate(v.first_seen)}
Vérifié le{fmtDate(v.updated_at)}
Statut{v.active ? \"En vente\" : \"Retiré / vendu\"}
\n
\n
\n
\n\n {v.similar.length > 0 && (\n
\n Comparer\n

\n {v.make} {v.model} similaires au Québec\n

\n
\n {v.similar.map((s) => (\n \n ))}\n
\n
\n )}\n
\n );\n}\n"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01SLFkYKvFRg3Tnnk4pF64So","type":"tool_result","content":"The file /Users/simon-pierreboucher/auto-ka/frontend/src/pages/Vehicle.tsx has been updated successfully."}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"6bc9c1b5-6856-4b9c-8ae3-f0fb18961307","timestamp":"2026-08-25T14:23:34.806Z","tool_use_result":{"type":"update","filePath":"/Users/simon-pierreboucher/auto-ka/frontend/src/pages/Vehicle.tsx","content":"// -----------------------------------------------------------------------------\n// Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n// Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n// Vehicle.tsx : fiche véhicule — galerie + lightbox, badge marché, analyse de\n// prix, autres offres (même VIN), fiche constructeur, rappels TC, KA Score,\n// carte, historique de prix, similaires\n// -----------------------------------------------------------------------------\nimport { useEffect, useMemo, useState } from \"react\";\nimport { Link, useParams } from \"react-router-dom\";\nimport {\n KaScore, MarketAnalysis, Recall, VehicleDetail,\n fetchVehicle, fetchVehicleRecalls, fmtDate, fmtKm, fmtPrice, sourceName,\n} from \"../api\";\nimport VehicleCard from \"../components/VehicleCard\";\nimport FavButton from \"../components/FavButton\";\nimport Lightbox from \"../components/Lightbox\";\n\n// --- Nuage prix/km des comparables (SVG maison, style Charts.tsx) ------------\nfunction MarketScatter({ m, price, km }: {\n m: MarketAnalysis; price: number; km: number | null;\n}) {\n const pts = m.points;\n if (pts.length < 5) return null;\n const W = 560, H = 260, PAD = { t: 14, r: 14, b: 30, l: 56 };\n const kms = pts.map((d) => d.km).concat(km != null ? [km] : []);\n const ps = pts.map((d) => d.p).concat([price]);\n const kMin = Math.min(...kms), kMax = Math.max(...kms);\n const pMin = Math.min(...ps), pMax = Math.max(...ps);\n const x = (v: number) =>\n PAD.l + (kMax > kMin ? (v - kMin) / (kMax - kMin) : 0.5) * (W - PAD.l - PAD.r);\n const y = (v: number) =>\n H - PAD.b - (pMax > pMin ? (v - pMin) / (pMax - pMin) : 0.5) * (H - PAD.t - PAD.b);\n const fmtK = (v: number) => `${Math.round(v / 1000)} k`;\n return (\n \n \n \n \n \n médiane {fmtPrice(m.median)}\n \n {pts.map((d, i) => (\n \n ))}\n {km != null && (\n \n \n \n ce véhicule\n \n \n )}\n {fmtK(kMin)} km\n {fmtK(kMax)} km\n {fmtK(pMax)} $\n {fmtK(pMin)} $\n \n );\n}\n\n// --- Courbe de l'historique de prix ------------------------------------------\nfunction PriceSpark({ hist }: { hist: { ts: number; price: number | null }[] }) {\n const pts = hist.filter((h) => h.price != null).reverse() as\n { ts: number; price: number }[];\n if (pts.length < 2) return null;\n const W = 300, H = 64, P = 6;\n const tMin = pts[0].ts, tMax = pts[pts.length - 1].ts;\n const pMin = Math.min(...pts.map((d) => d.price));\n const pMax = Math.max(...pts.map((d) => d.price));\n const x = (t: number) =>\n P + (tMax > tMin ? (t - tMin) / (tMax - tMin) : 0.5) * (W - 2 * P);\n const y = (p: number) =>\n H - P - (pMax > pMin ? (p - pMin) / (pMax - pMin) : 0.5) * (H - 2 * P);\n const d = pts.map((p, i) => `${i ? \"L\" : \"M\"}${x(p.ts).toFixed(1)},${y(p.price).toFixed(1)}`).join(\" \");\n return (\n \n \n {pts.map((p, i) => )}\n \n );\n}\n\n// --- KA Score (jauge + barres par composante) ---------------------------------\nfunction ScorePanel({ s }: { s: KaScore }) {\n const tone = s.overall >= 70 ? \"good\" : s.overall >= 45 ? \"fair\" : \"high\";\n return (\n
\n

🏁 KA Score

\n
\n
{s.overall}
\n
\n Indice composite Auto-Ka : prix face au marché, kilométrage selon\n l'âge, qualité de la fiche et fraîcheur de l'annonce.\n
\n
\n
\n {s.parts.map((p) => (\n
\n {p.label}\n \n {p.score}\n
\n ))}\n
\n
\n );\n}\n\nexport default function VehiclePage() {\n const { uid } = useParams<{ uid: string }>();\n const [v, setV] = useState(null);\n const [error, setError] = useState(false);\n const [img, setImg] = useState(0);\n const [lightbox, setLightbox] = useState(false);\n const [recalls, setRecalls] = useState(null);\n const [recallsOpen, setRecallsOpen] = useState(false);\n\n useEffect(() => {\n setV(null); setError(false); setImg(0); setLightbox(false);\n setRecalls(null); setRecallsOpen(false);\n if (uid) {\n fetchVehicle(uid).then(setV).catch(() => setError(true));\n fetchVehicleRecalls(uid).then((r) => setRecalls(r.recalls)).catch(() => {});\n }\n window.scrollTo(0, 0);\n }, [uid]);\n\n useEffect(() => {\n if (v) document.title = `${v.title} — ${fmtPrice(v.price)} | Auto·Ka`;\n }, [v]);\n\n const mapSrc = useMemo(() => {\n if (!v || v.lat == null || v.lng == null) return null;\n const d = 0.02;\n const bbox = [v.lng - d, v.lat - d, v.lng + d, v.lat + d].join(\",\");\n return `https://www.openstreetmap.org/export/embed.html?bbox=${bbox}&layer=mapnik&marker=${v.lat},${v.lng}`;\n }, [v]);\n\n if (error)\n return (\n
\n
🚗
\n

Véhicule introuvable

\n

Il a peut-être été vendu — l'inventaire évolue chaque jour.

\n

← Retour à la recherche

\n
\n );\n\n if (!v)\n return (\n
\n
\n
\n
\n
\n
\n
\n );\n\n const prevPrice = v.price_history.find(\n (h) => h.price != null && v.price != null && h.price !== v.price\n )?.price;\n\n const specs: [string, string][] = [\n [\"Année\", v.year ? String(v.year) : \"—\"],\n [\"Version\", v.trim || \"—\"],\n [\"Kilométrage\", fmtKm(v.mileage_km)],\n [\"Transmission\", v.transmission || \"—\"],\n [\"Carburant\", v.fuel || \"—\"],\n [\"Motricité\", v.drivetrain || \"—\"],\n [\"Carrosserie\", v.body_type || \"—\"],\n [\"Moteur\", v.engine || \"—\"],\n [\"Couleur ext.\", v.exterior_color || \"—\"],\n [\"Couleur int.\", v.interior_color || \"—\"],\n [\"Portes\", v.doors ? String(v.doors) : \"—\"],\n [\"Places\", v.seats ? String(v.seats) : \"—\"],\n [\"NIV (VIN)\", v.vin || \"—\"],\n [\"No de stock\", v.stock_number || \"—\"],\n ].filter(([, val]) => val !== \"—\") as [string, string][];\n\n const m = v.market;\n const offers = v.dup_sources || [];\n\n return (\n
\n

\n ← Retour à la recherche\n

\n
\n
\n {v.dealer_name || v.source} — {v.city}{v.region ? ` · ${v.region}` : \"\"}\n

{v.title}

\n
\n
\n
{fmtPrice(v.price)}
\n {prevPrice != null && v.price != null && prevPrice > v.price && (\n
{fmtPrice(prevPrice)}
\n )}\n {m && (\n
\n {m.label}\n {Math.abs(m.delta_pct) >= 1 && (\n \n {\" \"}· {Math.abs(m.delta_pct).toLocaleString(\"fr-CA\")} %{\" \"}\n {m.delta_pct < 0 ? \"sous\" : \"au-dessus de\"} la médiane\n \n )}\n
\n )}\n
\n
\n\n
\n
\n
\n
\n {v.images.length > 0 ? (\n setLightbox(true)}\n />\n ) : (\n
🚗
\n )}\n {v.images.length > 0 && (\n \n )}\n \n
\n {v.images.length > 1 && (\n
\n {v.images.map((u, i) => (\n setImg(i)}\n />\n ))}\n
\n )}\n
\n {lightbox && v.images.length > 0 && (\n setLightbox(false)}\n alt={v.title}\n />\n )}\n\n {v.description && (\n
\n

📝 Description du concessionnaire

\n
{v.description}
\n
\n )}\n\n {m && v.price != null && (\n
\n

📊 Analyse du marché

\n
\n
Comparables{m.n}
\n
Médiane{fmtPrice(m.median)}
\n
Fourchette 25–75 %{fmtPrice(m.p25)} – {fmtPrice(m.p75)}
\n
Étendue{fmtPrice(m.min)} – {fmtPrice(m.max)}
\n
\n
\n \n
\n
\n moins cher\n {m.percentile} % des comparables sont moins chers\n plus cher\n
\n \n
\n {v.make} {v.model.split(\" \")[0]}{v.year ? ` ${v.year - 1}–${v.year + 1}` : \"\"} en\n vente au Québec, doublons exclus — calcul Auto-Ka\n
\n
\n )}\n\n {mapSrc && (\n
\n

📍 Où le voir

\n \n
\n {[v.dealer_name, v.city, v.region].filter(Boolean).join(\" · \")} —\n position approximative (ville du vendeur)\n
\n
\n )}\n
\n\n
\n
\n

🔧 Caractéristiques

\n \n \n {specs.map(([k, val]) => (\n \n \n \n \n ))}\n \n
{k}{val}
\n \n Voir chez {v.dealer_name || \"le concessionnaire\"} →\n \n {v.carfax_url && (\n \n 📋 Rapport Carfax\n \n )}\n
\n annonce originale — prix et disponibilité confirmés à la source\n
\n
\n\n {offers.length > 0 && (\n \n )}\n\n {v.ka_score && }\n\n {v.features.length > 0 && (\n
\n

✨ Équipements ({v.features.length})

\n
\n {v.features.map((f) => (\n {f}\n ))}\n
\n
\n )}\n\n {v.vin_info && Object.keys(v.vin_info).length > 0 && (\n
\n

🏭 Fiche constructeur

\n \n \n {Object.entries(v.vin_info).map(([k, val]) => (\n \n \n \n \n ))}\n \n
{k}{val}
\n
décodée du NIV — base vPIC (NHTSA)
\n
\n )}\n\n {recalls !== null && recalls.length > 0 && (\n
\n

⚠️ Rappels Transports Canada ({recalls.length})

\n
\n {(recallsOpen ? recalls : recalls.slice(0, 3)).map((r) => (\n
\n \n {r.date} {r.component}\n \n

{r.description}

\n

\n Rappel no {r.recall_number}\n {r.units_affected ? ` · ${r.units_affected.toLocaleString(\"fr-CA\")} unités visées` : \"\"}\n

\n
\n ))}\n
\n {recalls.length > 3 && (\n \n )}\n
\n rappels {v.make} {v.model} {v.year ?? \"\"} — vérifier auprès du\n concessionnaire s'ils ont été effectués\n
\n
\n )}\n\n {v.price_history.length > 1 && (\n
\n

📉 Historique de prix

\n \n
\n {v.price_history.map((h, i) => {\n const next = v.price_history[i + 1];\n const dir =\n next?.price != null && h.price != null\n ? h.price < next.price ? \"down\" : h.price > next.price ? \"up\" : \"\"\n : \"\";\n return (\n
\n {fmtDate(h.ts)}\n {fmtPrice(h.price)}\n
\n );\n })}\n
\n
\n )}\n\n
\n

ℹ️ Suivi Auto-Ka

\n \n \n \n \n \n \n
Repéré le{fmtDate(v.first_seen)}
Vérifié le{fmtDate(v.updated_at)}
Statut{v.active ? \"En vente\" : \"Retiré / vendu\"}
\n
\n
\n
\n\n {v.similar.length > 0 && (\n
\n Comparer\n

\n {v.make} {v.model} similaires au Québec\n

\n
\n {v.similar.map((s) => (\n \n ))}\n
\n
\n )}\n
\n );\n}\n","structuredPatch":[{"oldStart":1,"oldLines":23,"newStart":1,"newLines":132,"lines":[" // -----------------------------------------------------------------------------"," // Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)"," // Auteur : Simon-Pierre Boucher — contact@spboucher.ai","-// Vehicle.tsx : fiche véhicule — galerie, specs, historique de prix, similaires","+// Vehicle.tsx : fiche véhicule — galerie + lightbox, badge marché, analyse de","+// prix, autres offres (même VIN), fiche constructeur, rappels TC, KA Score,","+// carte, historique de prix, similaires"," // -----------------------------------------------------------------------------","-import { useEffect, useState } from \"react\";","+import { useEffect, useMemo, useState } from \"react\";"," import { Link, useParams } from \"react-router-dom\";","-import { VehicleDetail, fetchVehicle, fmtDate, fmtKm, fmtPrice } from \"../api\";","+import {","+ KaScore, MarketAnalysis, Recall, VehicleDetail,","+ fetchVehicle, fetchVehicleRecalls, fmtDate, fmtKm, fmtPrice, sourceName,","+} from \"../api\";"," import VehicleCard from \"../components/VehicleCard\";"," import FavButton from \"../components/FavButton\";","+import Lightbox from \"../components/Lightbox\";"," ","+// --- Nuage prix/km des comparables (SVG maison, style Charts.tsx) ------------","+function MarketScatter({ m, price, km }: {","+ m: MarketAnalysis; price: number; km: number | null;","+}) {","+ const pts = m.points;","+ if (pts.length < 5) return null;","+ const W = 560, H = 260, PAD = { t: 14, r: 14, b: 30, l: 56 };","+ const kms = pts.map((d) => d.km).concat(km != null ? [km] : []);","+ const ps = pts.map((d) => d.p).concat([price]);","+ const kMin = Math.min(...kms), kMax = Math.max(...kms);","+ const pMin = Math.min(...ps), pMax = Math.max(...ps);","+ const x = (v: number) =>","+ PAD.l + (kMax > kMin ? (v - kMin) / (kMax - kMin) : 0.5) * (W - PAD.l - PAD.r);","+ const y = (v: number) =>","+ H - PAD.b - (pMax > pMin ? (v - pMin) / (pMax - pMin) : 0.5) * (H - PAD.t - PAD.b);","+ const fmtK = (v: number) => `${Math.round(v / 1000)} k`;","+ return (","+ ","+ ","+ ","+ ","+ ","+ médiane {fmtPrice(m.median)}","+ ","+ {pts.map((d, i) => (","+ ","+ ))}","+ {km != null && (","+ ","+ ","+ ","+ ce véhicule","+ ","+ ","+ )}","+ {fmtK(kMin)} km","+ {fmtK(kMax)} km","+ {fmtK(pMax)} $","+ {fmtK(pMin)} $","+ ","+ );","+}","+","+// --- Courbe de l'historique de prix ------------------------------------------","+function PriceSpark({ hist }: { hist: { ts: number; price: number | null }[] }) {","+ const pts = hist.filter((h) => h.price != null).reverse() as","+ { ts: number; price: number }[];","+ if (pts.length < 2) return null;","+ const W = 300, H = 64, P = 6;","+ const tMin = pts[0].ts, tMax = pts[pts.length - 1].ts;","+ const pMin = Math.min(...pts.map((d) => d.price));","+ const pMax = Math.max(...pts.map((d) => d.price));","+ const x = (t: number) =>","+ P + (tMax > tMin ? (t - tMin) / (tMax - tMin) : 0.5) * (W - 2 * P);","+ const y = (p: number) =>","+ H - P - (pMax > pMin ? (p - pMin) / (pMax - pMin) : 0.5) * (H - 2 * P);","+ const d = pts.map((p, i) => `${i ? \"L\" : \"M\"}${x(p.ts).toFixed(1)},${y(p.price).toFixed(1)}`).join(\" \");","+ return (","+ ","+ ","+ {pts.map((p, i) => )}","+ ","+ );","+}","+","+// --- KA Score (jauge + barres par composante) ---------------------------------","+function ScorePanel({ s }: { s: KaScore }) {","+ const tone = s.overall >= 70 ? \"good\" : s.overall >= 45 ? \"fair\" : \"high\";","+ return (","+
","+

🏁 KA Score

","+
","+
{s.overall}
","+
","+ Indice composite Auto-Ka : prix face au marché, kilométrage selon","+ l'âge, qualité de la fiche et fraîcheur de l'annonce.","+
","+
","+
","+ {s.parts.map((p) => (","+
","+ {p.label}","+ ","+ {p.score}","+
","+ ))}","+
","+
","+ );","+}","+"," export default function VehiclePage() {"," const { uid } = useParams<{ uid: string }>();"," const [v, setV] = useState(null);"," const [error, setError] = useState(false);"," const [img, setImg] = useState(0);","+ const [lightbox, setLightbox] = useState(false);","+ const [recalls, setRecalls] = useState(null);","+ const [recallsOpen, setRecallsOpen] = useState(false);"," "," useEffect(() => {","- setV(null); setError(false); setImg(0);","- if (uid) fetchVehicle(uid).then(setV).catch(() => setError(true));","+ setV(null); setError(false); setImg(0); setLightbox(false);","+ setRecalls(null); setRecallsOpen(false);","+ if (uid) {","+ fetchVehicle(uid).then(setV).catch(() => setError(true));","+ fetchVehicleRecalls(uid).then((r) => setRecalls(r.recalls)).catch(() => {});","+ }"," window.scrollTo(0, 0);"," }, [uid]);"," "]},{"oldStart":25,"oldLines":6,"newStart":134,"newLines":13,"lines":[" if (v) document.title = `${v.title} — ${fmtPrice(v.price)} | Auto·Ka`;"," }, [v]);"," ","+ const mapSrc = useMemo(() => {","+ if (!v || v.lat == null || v.lng == null) return null;","+ const d = 0.02;","+ const bbox = [v.lng - d, v.lat - d, v.lng + d, v.lat + d].join(\",\");","+ return `https://www.openstreetmap.org/export/embed.html?bbox=${bbox}&layer=mapnik&marker=${v.lat},${v.lng}`;","+ }, [v]);","+"," if (error)"," return (","
"]},{"oldStart":52,"oldLines":6,"newStart":168,"newLines":7,"lines":[" "," const specs: [string, string][] = ["," [\"Année\", v.year ? String(v.year) : \"—\"],","+ [\"Version\", v.trim || \"—\"],"," [\"Kilométrage\", fmtKm(v.mileage_km)],"," [\"Transmission\", v.transmission || \"—\"],"," [\"Carburant\", v.fuel || \"—\"],"]},{"oldStart":66,"oldLines":6,"newStart":183,"newLines":9,"lines":[" [\"No de stock\", v.stock_number || \"—\"],"," ].filter(([, val]) => val !== \"—\") as [string, string][];"," ","+ const m = v.market;","+ const offers = v.dup_sources || [];","+"," return (","
","

"]},{"oldStart":81,"oldLines":6,"newStart":201,"newLines":17,"lines":[" {prevPrice != null && v.price != null && prevPrice > v.price && (","

{fmtPrice(prevPrice)}
"," )}","+ {m && (","+
","+ {m.label}","+ {Math.abs(m.delta_pct) >= 1 && (","+ ","+ {\" \"}· {Math.abs(m.delta_pct).toLocaleString(\"fr-CA\")} %{\" \"}","+ {m.delta_pct < 0 ? \"sous\" : \"au-dessus de\"} la médiane","+ ","+ )}","+
","+ )}","
","
"," "]},{"oldStart":89,"oldLines":12,"newStart":220,"newLines":19,"lines":["
","
"," {v.images.length > 0 ? (","- ","- {v.title}","- ","+ setLightbox(true)}","+ />"," ) : (","
🚗
"," )}","+ {v.images.length > 0 && (","+ ","+ )}"," ","
"," {v.images.length > 1 && ("]},{"oldStart":112,"oldLines":6,"newStart":250,"newLines":15,"lines":["
"," )}","
","+ {lightbox && v.images.length > 0 && (","+ setLightbox(false)}","+ alt={v.title}","+ />","+ )}"," "," {v.description && (","
"]},{"oldStart":119,"oldLines":6,"newStart":266,"newLines":47,"lines":["
{v.description}
","
"," )}","+","+ {m && v.price != null && (","+
","+

📊 Analyse du marché

","+
","+
Comparables{m.n}
","+
Médiane{fmtPrice(m.median)}
","+
Fourchette 25–75 %{fmtPrice(m.p25)} – {fmtPrice(m.p75)}
","+
Étendue{fmtPrice(m.min)} – {fmtPrice(m.max)}
","+
","+
","+ ","+
","+
","+ moins cher","+ {m.percentile} % des comparables sont moins chers","+ plus cher","+
","+ ","+
","+ {v.make} {v.model.split(\" \")[0]}{v.year ? ` ${v.year - 1}–${v.year + 1}` : \"\"} en","+ vente au Québec, doublons exclus — calcul Auto-Ka","+
","+
","+ )}","+","+ {mapSrc && (","+
","+

📍 Où le voir

","+ ","+
","+ {[v.dealer_name, v.city, v.region].filter(Boolean).join(\" · \")} —","+ position approximative (ville du vendeur)","+
","+
","+ )}","
"," ","
"]},{"oldStart":153,"oldLines":6,"newStart":341,"newLines":34,"lines":["
","
"," ","+ {offers.length > 0 && (","+ ","+ )}","+","+ {v.ka_score && }","+"," {v.features.length > 0 && (","
","

✨ Équipements ({v.features.length})

"]},{"oldStart":164,"oldLines":9,"newStart":380,"newLines":56,"lines":["
"," )}"," ","+ {v.vin_info && Object.keys(v.vin_info).length > 0 && (","+
","+

🏭 Fiche constructeur

","+ ","+ ","+ {Object.entries(v.vin_info).map(([k, val]) => (","+ ","+ ","+ ","+ ","+ ))}","+ ","+
{k}{val}
","+
décodée du NIV — base vPIC (NHTSA)
","+
","+ )}","+","+ {recalls !== null && recalls.length > 0 && (","+
","+

⚠️ Rappels Transports Canada ({recalls.length})

","+
","+ {(recallsOpen ? recalls : recalls.slice(0, 3)).map((r) => (","+
","+ ","+ {r.date} {r.component}","+ ","+

{r.description}

","+

","+ Rappel no {r.recall_number}","+ {r.units_affected ? ` · ${r.units_affected.toLocaleString(\"fr-CA\")} unités visées` : \"\"}","+

","+
","+ ))}","+
","+ {recalls.length > 3 && (","+ ","+ )}","+
","+ rappels {v.make} {v.model} {v.year ?? \"\"} — vérifier auprès du","+ concessionnaire s'ils ont été effectués","+
","+
","+ )}","+"," {v.price_history.length > 1 && (","
","

📉 Historique de prix

","+ ","
"," {v.price_history.map((h, i) => {"," const next = v.price_history[i + 1];"]}],"originalFile":"// -----------------------------------------------------------------------------\n// Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)\n// Auteur : Simon-Pierre Boucher — contact@spboucher.ai\n// Vehicle.tsx : fiche véhicule — galerie, specs, historique de prix, similaires\n// -----------------------------------------------------------------------------\nimport { useEffect, useState } from \"react\";\nimport { Link, useParams } from \"react-router-dom\";\nimport { VehicleDetail, fetchVehicle, fmtDate, fmtKm, fmtPrice } from \"../api\";\nimport VehicleCard from \"../components/VehicleCard\";\nimport FavButton from \"../components/FavButton\";\n\nexport default function VehiclePage() {\n const { uid } = useParams<{ uid: string }>();\n const [v, setV] = useState(null);\n const [error, setError] = useState(false);\n const [img, setImg] = useState(0);\n\n useEffect(() => {\n setV(null); setError(false); setImg(0);\n if (uid) fetchVehicle(uid).then(setV).catch(() => setError(true));\n window.scrollTo(0, 0);\n }, [uid]);\n\n useEffect(() => {\n if (v) document.title = `${v.title} — ${fmtPrice(v.price)} | Auto·Ka`;\n }, [v]);\n\n if (error)\n return (\n
\n
🚗
\n

Véhicule introuvable

\n

Il a peut-être été vendu — l'inventaire évolue chaque jour.

\n

← Retour à la recherche

\n
\n );\n\n if (!v)\n return (\n
\n
\n
\n
\n
\n
\n
\n );\n\n const prevPrice = v.price_history.find(\n (h) => h.price != null && v.price != null && h.price !== v.price\n )?.price;\n\n const specs: [string, string][] = [\n [\"Année\", v.year ? String(v.year) : \"—\"],\n [\"Kilométrage\", fmtKm(v.mileage_km)],\n [\"Transmission\", v.transmission || \"—\"],\n [\"Carburant\", v.fuel || \"—\"],\n [\"Motricité\", v.drivetrain || \"—\"],\n [\"Carrosserie\", v.body_type || \"—\"],\n [\"Moteur\", v.engine || \"—\"],\n [\"Couleur ext.\", v.exterior_color || \"—\"],\n [\"Couleur int.\", v.interior_color || \"—\"],\n [\"Portes\", v.doors ? String(v.doors) : \"—\"],\n [\"Places\", v.seats ? String(v.seats) : \"—\"],\n [\"NIV (VIN)\", v.vin || \"—\"],\n [\"No de stock\", v.stock_number || \"—\"],\n ].filter(([, val]) => val !== \"—\") as [string, string][];\n\n return (\n
\n

\n ← Retour à la recherche\n

\n
\n
\n {v.dealer_name || v.source} — {v.city}{v.region ? ` · ${v.region}` : \"\"}\n

{v.title}

\n
\n
\n
{fmtPrice(v.price)}
\n {prevPrice != null && v.price != null && prevPrice > v.price && (\n
{fmtPrice(prevPrice)}
\n )}\n
\n
\n\n
\n
\n
\n
\n {v.images.length > 0 ? (\n \n {v.title}\n \n ) : (\n
🚗
\n )}\n \n
\n {v.images.length > 1 && (\n
\n {v.images.map((u, i) => (\n setImg(i)}\n />\n ))}\n
\n )}\n
\n\n {v.description && (\n
\n

📝 Description du concessionnaire

\n
{v.description}
\n
\n )}\n
\n\n
\n
\n

🔧 Caractéristiques

\n \n \n {specs.map(([k, val]) => (\n \n \n \n \n ))}\n \n
{k}{val}
\n \n Voir chez {v.dealer_name || \"le concessionnaire\"} →\n \n {v.carfax_url && (\n \n 📋 Rapport Carfax\n \n )}\n
\n annonce originale — prix et disponibilité confirmés à la source\n
\n
\n\n {v.features.length > 0 && (\n
\n

✨ Équipements ({v.features.length})

\n
\n {v.features.map((f) => (\n {f}\n ))}\n
\n
\n )}\n\n {v.price_history.length > 1 && (\n
\n

📉 Historique de prix

\n
\n {v.price_history.map((h, i) => {\n const next = v.price_history[i + 1];\n const dir =\n next?.price != null && h.price != null\n ? h.price < next.price ? \"down\" : h.price > next.price ? \"up\" : \"\"\n : \"\";\n return (\n
\n {fmtDate(h.ts)}\n {fmtPrice(h.price)}\n
\n );\n })}\n
\n
\n )}\n\n
\n

ℹ️ Suivi Auto-Ka

\n \n \n \n \n \n \n
Repéré le{fmtDate(v.first_seen)}
Vérifié le{fmtDate(v.updated_at)}
Statut{v.active ? \"En vente\" : \"Retiré / vendu\"}
\n
\n
\n
\n\n {v.similar.length > 0 && (\n
\n Comparer\n

\n {v.make} {v.model} similaires au Québec\n

\n
\n {v.similar.map((s) => (\n \n ))}\n
\n
\n )}\n
\n );\n}\n","userModified":false}}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"863cf6a2-41ae-4413-a18e-9898bf8c8d68","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcoksKFMYDxDj2o3N3k","type":"message","role":"assistant","content":[{"type":"thinking","thinking":"","signature":"CAIStwgKpwEIERgCKkC7t2sEKZvwNv6Huj1xF23fX8D2znk4WjDM3wkeLUE5mCaMDGTuce/A3/zIu8BxVvQc5fXAdK7wXq8ZSCD5mvm2Mg5jbGF1ZGUtZmFibGUtNTgBQgh0aGlua2luZ1okNmZjYzhmODMtMWY5Yy00ZDMzLWJhMDctNGQ0ZGYzN2Q2N2Y1chAqK78ZzsiVUzI5xDv77u/SiAEBqAHzyrbUBrABAhIMADQWSJMuYQxBuhCsGgyPXPh+JkzeyUs1mWoiMILK3W2CpHNOLU7m6VXj8tUSubivgCOZEmHwwyxlaeA63tssMR8iOCMry342IJcr4Sq8Bok4m1PkO1rjcTAUhXV6pCQnpbh3X7X2nssMWqd/cAqDOuM58J8i7AzXZTzsUVHTdtgFwvSQuw+zX1/OCg5XOepuRSRGCdu8DGENkR3hHxNbHPXsEU7BjzlnRkXV4gxCpFd2lkXiQIY45AR2mwjJLnDCuiKLgmoUTAcGla5ZNtUOe74VgchVLvGdc+lBXAfmw9RcZvAL8vtRFvYcAUKkNio1My/qw7f/q0z/v8ZOTDpPcypLXzUu3brxHxH4w+unTgx8jd6Q40BVsfwNHfCD54eVN9qg+SMeKS08JgbbHP0l80NkjVx0b3pQET1wjuBiBeYtjE01uzO1R7/PluLBd5U/4USHALOMDVu5ttfAD4CSSAbbHyhgEPx66nUBWGJfCcgaOW/Az5HHdTrm0A+XMhxePneaaB9ZLfigz4J4jqv4APRkbIO5PAwHrQl9xy0x4iJlmHkkOZc8c7580Jz3m/JT82D+7mLsksGgL7Kfnnzn9JgabH0wH8Rymg15C1UIMlQn06P95yojvD6zieKDr3xmqZOQRITfcRboH+agIFMjgBazMSdEozfnCs7MQzdirNp4A/kzi39P3zEe/H1RAn0IPotc9YJ5eLhOWVra0OIScVuYm5BnKeyNFmnYq73sPOw4xVkdyo67ryYOmKOT1E0DEtloN/O0sVX25rppUjqhqEejKLXtvmoK1mX/rv8QnHOlN+uqwZeEXUbjO5NWDqU6hZ5wlgDiG+LKVZ7GC2ghRPTpUJpNW8/NdoE+aYY7bJuzMS5rV2RywjrW7RxkI5kfReuRgFqmJl7RuNlIAXisRzqkto372iCIK4TFfvs14/YwBWwfOcHKaMIueYygZVoKaFpEYdj2Cs89RrR7xpCtsYkn4xGZozaesm/OC0P/DNRkoRLwIfRY/wWJslY6Dz+WyF+c/z5ichEyfF6azS6M0gQLsLhnEQQo3+EmfPiETwi+ZcUaO7VArzBmKOM6wXIz0Tw2YGZ4uNAolYC1yuKIMazyP98KTp3U459tJ+iR02TBKkkkfKx6hI4TcujIfvSr2kN7xazlh1lJhnoNiX7BbZ/MQb0J8N7TJeSak8nPwbsdnEC5VjK+AuZglhgB"}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":7669,"cache_read_input_tokens":96874,"cache_creation":{"ephemeral_5m_input_tokens":7669,"ephemeral_1h_input_tokens":0},"output_tokens":5,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"35d23832-1643-4835-a555-911f2d980668"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcoksKFMYDxDj2o3N3k","type":"message","role":"assistant","content":[{"type":"text","text":"Le composant est en place. J'ajoute maintenant le CSS des nouvelles sections."}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":7669,"cache_read_input_tokens":96874,"cache_creation":{"ephemeral_5m_input_tokens":7669,"ephemeral_1h_input_tokens":0},"output_tokens":5,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"452ef881-6983-41a7-a520-adfce4655500"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcoksKFMYDxDj2o3N3k","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_018H8YdhbXK2tZRSPWaQDJL9","name":"Bash","input":{"command":"tail -5 ~/auto-ka/frontend/src/styles.css && grep -n -- \"--danger\\|--warn\\|--good\\b\\|--accent-soft\" ~/auto-ka/frontend/src/styles.css ~/auto-ka/frontend/public/ka/tokens.css 2>/dev/null | head -20 && ls ~/auto-ka/frontend/public/ka/ 2>/dev/null","description":"Check CSS variables available and file tail"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":7669,"cache_read_input_tokens":96874,"cache_creation":{"ephemeral_5m_input_tokens":7669,"ephemeral_1h_input_tokens":0},"output_tokens":5,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"ab66d045-ad50-468e-a039-6cbaac00075b"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"type":"tool_result","content":"Exit code 1\n input[type=\"number\"],\n .f-field select, .f-field input, .sort-box select {\n font-size: max(16px, 1em) !important;\n }\n}\n/Users/simon-pierreboucher/auto-ka/frontend/src/styles.css:14: --accent-soft: #ffe8de;\n/Users/simon-pierreboucher/auto-ka/frontend/src/styles.css:19: --lime-soft: var(--accent-soft);\n/Users/simon-pierreboucher/auto-ka/frontend/src/styles.css:21: --good: #1c7a4d;\n/Users/simon-pierreboucher/auto-ka/frontend/src/styles.css:22: --good-soft: #e2f4e9;\n/Users/simon-pierreboucher/auto-ka/frontend/src/styles.css:195: background: var(--good); color: var(--paper); font-family: var(--font-mono);\n/Users/simon-pierreboucher/auto-ka/frontend/src/styles.css:209:.fav-btn.on { background: var(--accent-soft); color: var(--accent-deep); }\n/Users/simon-pierreboucher/auto-ka/frontend/src/styles.css:295:.price-history .down { color: var(--good); font-weight: 700; }\n/Users/simon-pierreboucher/auto-ka/frontend/src/styles.css:296:.price-history .up { color: var(--danger); font-weight: 700; }\n/Users/simon-pierreboucher/auto-ka/frontend/src/styles.css:493:.account-link:hover { background: var(--accent-soft); }\n/Users/simon-pierreboucher/auto-ka/frontend/src/styles.css:496: background: transparent; font-weight: 600; font-size: 13.5px; color: var(--danger);\n/Users/simon-pierreboucher/auto-ka/frontend/src/styles.css:498:.account-menu button:hover { background: var(--accent-soft); color: var(--ink); }\n/Users/simon-pierreboucher/auto-ka/frontend/src/styles.css:619: background: var(--accent-soft); border: 2px solid var(--ink);\n/Users/simon-pierreboucher/auto-ka/frontend/src/styles.css:682:.mm-link:active { background: var(--accent-soft); border-radius: var(--r-ctl); }","is_error":true,"tool_use_id":"toolu_018H8YdhbXK2tZRSPWaQDJL9"}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"ebdf3620-88c1-4e7d-8605-d6727599cf79","timestamp":"2026-08-25T14:23:49.514Z","tool_use_result":"Error: Exit code 1\n input[type=\"number\"],\n .f-field select, .f-field input, .sort-box select {\n font-size: max(16px, 1em) !important;\n }\n}\n/Users/simon-pierreboucher/auto-ka/frontend/src/styles.css:14: --accent-soft: #ffe8de;\n/Users/simon-pierreboucher/auto-ka/frontend/src/styles.css:19: --lime-soft: var(--accent-soft);\n/Users/simon-pierreboucher/auto-ka/frontend/src/styles.css:21: --good: #1c7a4d;\n/Users/simon-pierreboucher/auto-ka/frontend/src/styles.css:22: --good-soft: #e2f4e9;\n/Users/simon-pierreboucher/auto-ka/frontend/src/styles.css:195: background: var(--good); color: var(--paper); font-family: var(--font-mono);\n/Users/simon-pierreboucher/auto-ka/frontend/src/styles.css:209:.fav-btn.on { background: var(--accent-soft); color: var(--accent-deep); }\n/Users/simon-pierreboucher/auto-ka/frontend/src/styles.css:295:.price-history .down { color: var(--good); font-weight: 700; }\n/Users/simon-pierreboucher/auto-ka/frontend/src/styles.css:296:.price-history .up { color: var(--danger); font-weight: 700; }\n/Users/simon-pierreboucher/auto-ka/frontend/src/styles.css:493:.account-link:hover { background: var(--accent-soft); }\n/Users/simon-pierreboucher/auto-ka/frontend/src/styles.css:496: background: transparent; font-weight: 600; font-size: 13.5px; color: var(--danger);\n/Users/simon-pierreboucher/auto-ka/frontend/src/styles.css:498:.account-menu button:hover { background: var(--accent-soft); color: var(--ink); }\n/Users/simon-pierreboucher/auto-ka/frontend/src/styles.css:619: background: var(--accent-soft); border: 2px solid var(--ink);\n/Users/simon-pierreboucher/auto-ka/frontend/src/styles.css:682:.mm-link:active { background: var(--accent-soft); border-radius: var(--r-ctl); }"}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"7f9a9c43-75c2-42c2-a215-2af976449bab","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcprGHVpb5Mz3bhYAgf","type":"message","role":"assistant","content":[{"type":"thinking","thinking":"","signature":"CAIS2QMKpwEIERgCKkByCJdUopgE/XtO7bcpdvxaRDesvB6ygVC72VKaqO5E9bi3KngQbbmqQGTAcABAm/0f7BhNHDlLEum32ezFHHEVMg5jbGF1ZGUtZmFibGUtNTgBQgh0aGlua2luZ1okNmZjYzhmODMtMWY5Yy00ZDMzLWJhMDctNGQ0ZGYzN2Q2N2Y1chAqK78ZzsiVUzI5xDv77u/SiAEBqAH+yrbUBrABAhIMfXAWgudJTSN16aJNGgzzQlwLSTn8sK8LiNkiMIy+ocP/AIdaMe84CkqOZT9abOlUqG8zE1Vu+J6KlDe/3V/kCLzFmvcnp/TTXAwA8CreAX4//OdHgBbE4Ozl/l+CCM73ecG0aPYKvEICRYVjTAG6nAWRI10Ci655dK+OBR7vr7IwFYX/roOuAsLTTwYsK5SQLdzpWD20MmxB1GgXv8eTi8wstX1cATMDjcdeiOs5OHJ+lbf5068v/WZ8nu494HwxcgcD0nL002k87phgSqJMACs/CxojxQo8fbTtKO/8rdVK3/9gLFYHy+OTg41Fjc9Fgr/thi1a2IBZ+DJ+gglRb7E5KFL9DVpwkmzqcFUJ+W/k4zmRQUl0wZRjFSJ7N1VbyCrR+pT23DE2LjV1RBgB"}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":1434,"cache_read_input_tokens":104543,"cache_creation":{"ephemeral_5m_input_tokens":1434,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"dc3cbb60-bef2-4d30-b118-21c8bcf425a8"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcprGHVpb5Mz3bhYAgf","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01QATij3ws2r7Ra5ovxPMt6o","name":"Bash","input":{"command":"cat >> ~/auto-ka/frontend/src/styles.css << 'EOF'\n\n/* =============================================================================\n Fiche véhicule v2 — badge marché, lightbox, analyse de prix, KA Score,\n autres offres (même VIN), rappels TC, fiche constructeur, carte\n ========================================================================== */\n\n/* — badge de positionnement prix (en-tête, sous le prix) — */\n.market-badge {\n display: inline-block; margin-top: 8px; padding: 5px 10px;\n border: 2px solid var(--ink); border-radius: 999px;\n font-family: var(--font-mono); font-size: 12px; font-weight: 700;\n background: var(--surface);\n}\n.market-badge .delta { font-weight: 500; }\n.market-badge.excellent { background: var(--good); color: #fff; border-color: var(--good); }\n.market-badge.good { background: var(--good-soft); color: var(--good); }\n.market-badge.fair { background: var(--surface-2); color: var(--ink); }\n.market-badge.high { background: var(--accent-soft); color: var(--accent-deep); }\n\n/* — compteur photos sur la galerie — */\n.gal-count {\n position: absolute; left: 14px; bottom: 14px; padding: 5px 10px;\n border: 2px solid var(--ink); border-radius: 999px; cursor: zoom-in;\n background: color-mix(in srgb, var(--surface) 88%, transparent);\n font-size: 12px; font-weight: 700;\n}\n\n/* — lightbox plein écran — */\n.lightbox {\n position: fixed; inset: 0; z-index: 200; display: grid; place-items: center;\n background: rgba(12, 12, 10, 0.92); padding: 52px 16px;\n}\n.lightbox img {\n max-width: min(1200px, 96vw); max-height: calc(100vh - 104px);\n object-fit: contain; border-radius: 6px;\n}\n.lightbox button {\n position: absolute; display: grid; place-items: center; cursor: pointer;\n border: 2px solid #fff; border-radius: 999px; background: rgba(0, 0, 0, 0.35);\n color: #fff; font-size: 20px; width: 46px; height: 46px;\n}\n.lightbox button:hover { background: var(--accent); border-color: var(--accent); }\n.lb-close { top: 16px; right: 16px; }\n.lb-nav { top: 50%; transform: translateY(-50%); }\n.lb-prev { left: 14px; }\n.lb-next { right: 14px; }\n.lb-count {\n position: absolute; top: 26px; left: 50%; transform: translateX(-50%);\n color: #fff; font-size: 13px; letter-spacing: 0.08em;\n}\n@media (max-width: 767px) {\n .lightbox { padding: 64px 8px; }\n .lb-nav { top: auto; bottom: 12px; transform: none; }\n .lb-prev { left: 18%; }\n .lb-next { right: 18%; }\n}\n\n/* — analyse du marché — */\n.mkt-stats {\n display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));\n gap: 10px 14px; margin-bottom: 14px;\n}\n.mkt-stats .lbl {\n display: block; font-family: var(--font-mono); font-size: 11px;\n text-transform: uppercase; letter-spacing: 0.06em; color: var(--ink-3);\n}\n.mkt-stats b { font-size: 15px; }\n.pos-bar {\n position: relative; height: 14px; border: 2px solid var(--ink);\n border-radius: 999px; overflow: visible;\n background: linear-gradient(90deg, var(--good) 0%, var(--good-soft) 38%,\n var(--surface-2) 55%, var(--accent-soft) 78%, var(--accent) 100%);\n}\n.pos-bar .marker {\n position: absolute; top: -7px; width: 6px; height: 24px;\n transform: translateX(-50%); background: var(--ink); border-radius: 3px;\n}\n.pos-legend {\n display: flex; justify-content: space-between; gap: 8px;\n font-size: 11px; color: var(--ink-3); margin: 8px 0 4px;\n}\n.pos-legend span:nth-child(2) { text-align: center; color: var(--ink); font-weight: 700; }\n.scatter { width: 100%; height: auto; margin-top: 12px; }\n.scatter .axis { stroke: var(--line); stroke-width: 1.5; }\n.scatter .median { stroke: var(--ink-3); stroke-width: 1; stroke-dasharray: 5 4; }\n.scatter .dot { fill: var(--ink-3); opacity: 0.45; }\n.scatter .me { fill: var(--accent); stroke: var(--ink); stroke-width: 2; }\n.scatter .lbl { font-family: var(--font-mono); font-size: 11px; fill: var(--ink-3); }\n.scatter .me-lbl { fill: var(--accent-deep); font-weight: 700; }\n\n/* — courbe historique de prix — */\n.spark { width: 100%; height: auto; margin-bottom: 10px; }\n.spark path { fill: none; stroke: var(--accent); stroke-width: 2.5; }\n.spark circle { fill: var(--surface); stroke: var(--ink); stroke-width: 1.5; }\n\n/* — KA Score — */\n.score-head { display: flex; align-items: center; gap: 14px; margin-bottom: 14px; }\n.score-ball {\n flex: none; width: 62px; height: 62px; display: grid; place-items: center;\n border: 3px solid var(--ink); border-radius: 999px;\n font-family: var(--font-display); font-size: 24px; font-weight: 700;\n box-shadow: 3px 3px 0 var(--ink);\n}\n.score-ball.good { background: var(--good-soft); color: var(--good); }\n.score-ball.fair { background: var(--surface-2); }\n.score-ball.high { background: var(--accent-soft); color: var(--accent-deep); }\n.score-note { font-size: 12.5px; color: var(--ink-3); line-height: 1.45; }\n.score-row {\n display: grid; grid-template-columns: 1fr 90px 30px; align-items: center;\n gap: 10px; padding: 5px 0; font-size: 12.5px;\n}\n.score-row .bar {\n height: 10px; border: 1.5px solid var(--ink); border-radius: 999px;\n overflow: hidden; background: var(--surface-2); display: block;\n}\n.score-row .bar i { display: block; height: 100%; background: var(--accent); }\n.score-row .val { text-align: right; font-weight: 700; }\n\n/* — autres offres du même véhicule (même NIV) — */\n.offers { display: flex; flex-direction: column; }\n.offer {\n display: flex; justify-content: space-between; align-items: baseline; gap: 10px;\n padding: 9px 0; border-bottom: 1px dashed var(--line);\n text-decoration: none; color: var(--ink); font-size: 13.5px;\n}\n.offer:last-child { border-bottom: none; }\n.offer:hover .who { color: var(--accent-deep); text-decoration: underline; }\n.offer .who em { font-style: normal; color: var(--ink-3); }\n.offer .price { font-weight: 700; white-space: nowrap; }\n.offer .price em { font-style: normal; font-weight: 600; font-size: 12px; }\n.offer .price em.down { color: var(--good); }\n.offer .price em.up { color: var(--danger); }\n\n/* — rappels Transports Canada — */\n.recall-panel .btn.sm { margin-top: 10px; padding: 7px 12px; font-size: 12.5px; }\n.recall { border-bottom: 1px dashed var(--line); padding: 4px 0; }\n.recall:last-child { border-bottom: none; }\n.recall summary {\n cursor: pointer; font-size: 13.5px; font-weight: 600; padding: 5px 0;\n list-style-position: outside;\n}\n.recall summary .date { color: var(--ink-3); font-size: 11.5px; margin-right: 6px; }\n.recall p { font-size: 13px; line-height: 1.5; margin: 8px 0; white-space: pre-line; }\n.recall .meta { font-size: 11.5px; color: var(--ink-3); }\n\n/* — carte (OpenStreetMap) — */\n.map-embed {\n width: 100%; height: 300px; border: 2px solid var(--ink);\n border-radius: var(--r-card); display: block; background: var(--surface-2);\n}\nEOF\necho done","description":"Append detail-page v2 CSS to styles.css"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":1434,"cache_read_input_tokens":104543,"cache_creation":{"ephemeral_5m_input_tokens":1434,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"c3fd9cb0-ada4-4aaf-9ea5-1e6690bb242f"}} {"type":"permission_auto","tool":"Bash","key":"tout autoriser","input":{"command":"cat >> ~/auto-ka/frontend/src/styles.css << 'EOF'\n\n/* =============================================================================\n Fiche véhicule v2 — badge marché, lightbox, analyse de prix, KA Score,\n autres offres (même VIN), rappels TC, fiche constructeur, carte\n ========================================================================== */\n\n/* — badge de positionnement prix (en-tête, sous le prix) — */\n.market-badge {\n display: inline-block; margin-top: 8px; padding: 5px 10px;\n border: 2px solid var(--ink); border-radius: 999px;\n font-family: var(--font-mono); font-size: 12px; font-weight: 700;\n background: var(--surface);\n}\n.market-badge .delta { font-weight: 500; }\n.market-badge.excellent { background: var(--good); color: #fff; border-color: var(--good); }\n.market-badge.good { background: var(--good-soft); color: var(--good); }\n.market-badge.fair { background: var(--surface-2); color: var(--ink); }\n.market-badge.high { background: var(--accent-soft); color: var(--accent-deep); }\n\n/* — compteur photos sur la galerie — */\n.gal-count {\n position: absolute; left: 14px; bottom: 14px; padding: 5px 10px;\n border: 2px solid var(--ink); border-radius: 999px; cursor: zoom-in;\n background: color-mix(in srgb, var(--surface) 88%, transparent);\n font-size: 12px; font-weight: 700;\n}\n\n/* — lightbox plein écran — */\n.lightbox {\n position: fixed; inset: 0; z-index: 200; display: grid; place-items: center;\n background: rgba(12, 12, 10, 0.92); padding: 52px 16px;\n}\n.lightbox img {\n max-width: min(1200px, 96vw); max-height: calc(100vh - 104px);\n object-fit: contain; border-radius: 6px;\n}\n.lightbox button {\n position: absolute; display: grid; place-items: center; cursor: pointer;\n border: 2px solid #fff; border-radius: 999px; background: rgba(0, 0, 0, 0.35);\n color: #fff; font-size: 20px; width: 46px; height: 46px;\n}\n.lightbox button:hover { background: var(--accent); border-color: var(--accent); }\n.lb-close { top: 16px; right: 16px; }\n.lb-nav { top: 50%; transform: translateY(-50%); }\n.lb-prev { left: 14px; }\n.lb-next { right: 14px; }\n.lb-count {\n position: absolute; top: 26px; left: 50%; transform: translateX(-50%);\n color: #fff; font-size: 13px; letter-spacing: 0.08em;\n}\n@media (max-width: 767px) {\n .lightbox { padding: 64px 8px; }\n .lb-nav { top: auto; bottom: 12px; transform: none; }\n .lb-prev { left: 18%; }\n .lb-next { right: 18%; }\n}\n\n/* — analyse du marché — */\n.mkt-stats {\n display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));\n gap: 10px 14px; margin-bottom: 14px;\n}\n.mkt-stats .lbl {\n display: block; font-family: var(--font-mono); font-size: 11px;\n text-transform: uppercase; letter-spacing: 0.06em; color: var(--ink-3);\n}\n.mkt-stats b { font-size: 15px; }\n.pos-bar {\n position: relative; height: 14px; border: 2px solid var(--ink);\n border-radius: 999px; overflow: visible;\n background: linear-gradient(90deg, var(--good) 0%, var(--good-soft) 38%,\n var(--surface-2) 55%, var(--accent-soft) 78%, var(--accent) 100%);\n}\n.pos-bar .marker {\n position: absolute; top: -7px; width: 6px; height: 24px;\n transform: translateX(-50%); background: var(--ink); border-radius: 3px;\n}\n.pos-legend {\n display: flex; justify-content: space-between; gap: 8px;\n font-size: 11px; color: var(--ink-3); margin: 8px 0 4px;\n}\n.pos-legend span:nth-child(2) { text-align: center; color: var(--ink); font-weight: 700; }\n.scatter { width: 100%; height: auto; margin-top: 12px; }\n.scatter .axis { stroke: var(--line); stroke-width: 1.5; }\n.scatter .median { stroke: var(--ink-3); stroke-width: 1; stroke-dasharray: 5 4; }\n.scatter .dot { fill: var(--ink-3); opacity: 0.45; }\n.scatter .me { fill: var(--accent); stroke: var(--ink); stroke-width: 2; }\n.scatter .lbl { font-family: var(--font-mono); font-size: 11px; fill: var(--ink-3); }\n.scatter .me-lbl { fill: var(--accent-deep); font-weight: 700; }\n\n/* — courbe historique de prix — */\n.spark { width: 100%; height: auto; margin-bottom: 10px; }\n.spark path { fill: none; stroke: var(--accent); stroke-width: 2.5; }\n.spark circle { fill: var(--surface); stroke: var(--ink); stroke-width: 1.5; }\n\n/* — KA Score — */\n.score-head { display: flex; align-items: center; gap: 14px; margin-bottom: 14px; }\n.score-ball {\n flex: none; width: 62px; height: 62px; display: grid; place-items: center;\n border: 3px solid var(--ink); border-radius: 999px;\n font-family: var(--font-display); font-size: 24px; font-weight: 700;\n box-shadow: 3px 3px 0 var(--ink);\n}\n.score-ball.good { background: var(--good-soft); color: var(--good); }\n.score-ball.fair { background: var(--surface-2); }\n.score-ball.high { background: var(--accent-soft); color: var(--accent-deep); }\n.score-note { font-size: 12.5px; color: var(--ink-3); line-height: 1.45; }\n.score-row {\n display: grid; grid-template-columns: 1fr 90px 30px; align-items: center;\n gap: 10px; padding: 5px 0; font-size: 12.5px;\n}\n.score-row .bar {\n height: 10px; border: 1.5px solid var(--ink); border-radius: 999px;\n overflow: hidden; background: var(--surface-2); display: block;\n}\n.score-row .bar i { display: block; height: 100%; background: var(--accent); }\n.score-row .val { text-align: right; font-weight: 700; }\n\n/* — autres offres du même véhicule (même NIV) — */\n.offers { display: flex; flex-direction: column; }\n.offer {\n display: flex; justify-content: space-between; align-items: baseline; gap: 10px;\n padding: 9px 0; border-bottom: 1px dashed var(--line);\n text-decoration: none; color: var(--ink); font-size: 13.5px;\n}\n.offer:last-child { border-bottom: none; }\n.offer:hover .who { color: var(--accent-deep); text-decoration: underline; }\n.offer .who em { font-style: normal; color: var(--ink-3); }\n.offer .price { font-weight: 700; white-space: nowrap; }\n.offer .price em { font-style: normal; font-weight: 600; font-size: 12px; }\n.offer .price em.down { color: var(--good); }\n.offer .price em.up { color: var(--danger); }\n\n/* — rappels Transports Canada — */\n.recall-panel .btn.sm { margin-top: 10px; padding: 7px 12px; font-size: 12.5px; }\n.recall { border-bottom: 1px dashed var(--line); padding: 4px 0; }\n.recall:last-child { border-bottom: none; }\n.recall summary {\n cursor: pointer; font-size: 13.5px; font-weight: 600; padding: 5px 0;\n list-style-position: outside;\n}\n.recall summary .date { color: var(--ink-3); font-size: 11.5px; margin-right: 6px; }\n.recall p { font-size: 13px; line-height: 1.5; margin: 8px 0; white-space: pre-line; }\n.recall .meta { font-size: 11.5px; color: var(--ink-3); }\n\n/* — carte (OpenStreetMap) — */\n.map-embed {\n width: 100%; height: 300px; border: 2px solid var(--ink);\n border-radius: var(--r-card); display: block; background: var(--surface-2);\n}\nEOF\necho done","description":"Append detail-page v2 CSS to styles.css"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01QATij3ws2r7Ra5ovxPMt6o","type":"tool_result","content":"done","is_error":false}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"1d13ad0a-e21a-4c82-a9a2-d073e22023f6","timestamp":"2026-08-25T14:24:25.716Z","tool_use_result":{"stdout":"done","stderr":"","interrupted":false,"isImage":false,"noOutputExpected":false}}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"60b107b7-3fd9-4bef-9c89-3f1a372234b6","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcsXF8cAp2fhxX5wXac","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01Gv7tphKjQRNaq4wscwyDbp","name":"TodoWrite","input":{"todos":[{"content":"Créer autoka/vindecode.py (décodage VIN NHTSA + cache DB)","status":"completed","activeForm":"Création du module vindecode.py"},{"content":"Enrichir l'endpoint détail : marché, KA Score, VIN, autres offres","status":"completed","activeForm":"Enrichissement de l'endpoint détail"},{"content":"Frontend : lightbox galerie + badge marché","status":"completed","activeForm":"Ajout lightbox et badge marché"},{"content":"Frontend : refonte Vehicle.tsx (analyse marché, autres offres, rappels, fiche VIN, KA Score, carte, sparkline prix)","status":"completed","activeForm":"Refonte de Vehicle.tsx"},{"content":"CSS des nouvelles sections","status":"completed","activeForm":"Ajout du CSS"},{"content":"Build frontend + tests locaux","status":"in_progress","activeForm":"Build et tests"},{"content":"pm2 restart + healthcheck + commit + push","status":"pending","activeForm":"Déploiement et push"}]},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":3180,"cache_read_input_tokens":105977,"cache_creation":{"ephemeral_5m_input_tokens":3180,"ephemeral_1h_input_tokens":0},"output_tokens":25,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"9ea279f8-b0d5-437a-aa50-664a9bf3d34a"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01Gv7tphKjQRNaq4wscwyDbp","type":"tool_result","content":"Todos have been modified successfully. Ensure that you continue to use the todo list to track your progress. Please proceed with the current tasks if applicable"}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"ea2b1d20-0f87-4ae3-b382-bf4e26c0553f","timestamp":"2026-08-25T14:24:35.911Z","tool_use_result":{"oldTodos":[{"content":"Créer autoka/vindecode.py (décodage VIN NHTSA + cache DB)","status":"completed","activeForm":"Création du module vindecode.py"},{"content":"Enrichir l'endpoint détail : marché, KA Score, VIN, autres offres","status":"completed","activeForm":"Enrichissement de l'endpoint détail"},{"content":"Frontend : lightbox galerie + badge marché","status":"completed","activeForm":"Ajout lightbox et badge marché"},{"content":"Frontend : refonte Vehicle.tsx (analyse marché, autres offres, rappels, fiche VIN, KA Score, carte, sparkline prix)","status":"in_progress","activeForm":"Refonte de Vehicle.tsx"},{"content":"CSS des nouvelles sections","status":"pending","activeForm":"Ajout du CSS"},{"content":"Build frontend + tests locaux","status":"pending","activeForm":"Build et tests"},{"content":"pm2 restart + healthcheck + commit + push","status":"pending","activeForm":"Déploiement et push"}],"newTodos":[{"content":"Créer autoka/vindecode.py (décodage VIN NHTSA + cache DB)","status":"completed","activeForm":"Création du module vindecode.py"},{"content":"Enrichir l'endpoint détail : marché, KA Score, VIN, autres offres","status":"completed","activeForm":"Enrichissement de l'endpoint détail"},{"content":"Frontend : lightbox galerie + badge marché","status":"completed","activeForm":"Ajout lightbox et badge marché"},{"content":"Frontend : refonte Vehicle.tsx (analyse marché, autres offres, rappels, fiche VIN, KA Score, carte, sparkline prix)","status":"completed","activeForm":"Refonte de Vehicle.tsx"},{"content":"CSS des nouvelles sections","status":"completed","activeForm":"Ajout du CSS"},{"content":"Build frontend + tests locaux","status":"in_progress","activeForm":"Build et tests"},{"content":"pm2 restart + healthcheck + commit + push","status":"pending","activeForm":"Déploiement et push"}],"verificationNudgeNeeded":false}}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcsXF8cAp2fhxX5wXac","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_015mXzngHPXuK15RqyiB8LKb","name":"Bash","input":{"command":"cd ~/auto-ka/frontend && npm run build 2>&1 | tail -15","description":"Build frontend (tsc + vite)"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":3180,"cache_read_input_tokens":105977,"cache_creation":{"ephemeral_5m_input_tokens":3180,"ephemeral_1h_input_tokens":0},"output_tokens":25,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"41f8a0e0-732d-4114-8cd2-fe9754fbdec7"}} {"type":"permission_auto","tool":"Bash","key":"tout autoriser","input":{"command":"cd ~/auto-ka/frontend && npm run build 2>&1 | tail -15","description":"Build frontend (tsc + vite)"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_015mXzngHPXuK15RqyiB8LKb","type":"tool_result","content":"vite v5.4.21 building for production...\ntransforming...\n✓ 51 modules transformed.\nrendering chunks...\ncomputing gzip size...\ndist/index.html 1.59 kB │ gzip: 0.74 kB\ndist/assets/index-C5hCfFZj.css 41.66 kB │ gzip: 8.97 kB\ndist/assets/index-CQybmx7I.js 256.04 kB │ gzip: 79.79 kB\n✓ built in 314ms\nnpm notice\nnpm notice New minor version of npm available! 11.12.1 -> 11.19.0\nnpm notice Changelog: https://github.com/npm/cli/releases/tag/v11.19.0\nnpm notice To update run: npm install -g npm@11.19.0\nnpm notice","is_error":false}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"09c2749b-7f80-4196-8632-9458bde17b68","timestamp":"2026-08-25T14:24:37.464Z","tool_use_result":{"stdout":"vite v5.4.21 building for production...\ntransforming...\n✓ 51 modules transformed.\nrendering chunks...\ncomputing gzip size...\ndist/index.html 1.59 kB │ gzip: 0.74 kB\ndist/assets/index-C5hCfFZj.css 41.66 kB │ gzip: 8.97 kB\ndist/assets/index-CQybmx7I.js 256.04 kB │ gzip: 79.79 kB\n✓ built in 314ms\nnpm notice\nnpm notice New minor version of npm available! 11.12.1 -> 11.19.0\nnpm notice Changelog: https://github.com/npm/cli/releases/tag/v11.19.0\nnpm notice To update run: npm install -g npm@11.19.0\nnpm notice","stderr":"","interrupted":false,"isImage":false,"noOutputExpected":false}}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"17dd0986-1798-400b-96f6-933bf49a38a6","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePctPMtQuKvj7uG6VKr7","type":"message","role":"assistant","content":[{"type":"thinking","thinking":"","signature":"CAISxQMKpwEIERgCKkBwBfTPGFCyQGn2X2A/1WMTk7ek+msZ/gEg9AYsN0wpOHtnMYzCHnIsrQhpz5rIGLNHM63atUUyOZ9XAN7YIR8HMg5jbGF1ZGUtZmFibGUtNTgBQgh0aGlua2luZ1okNmZjYzhmODMtMWY5Yy00ZDMzLWJhMDctNGQ0ZGYzN2Q2N2Y1chAqK78ZzsiVUzI5xDv77u/SiAEBqAGvy7bUBrABAhIM4yLLQoBGN21sLp8VGgx+z9DvMrcWxDMw65EiMPL78E/xFNHQRRdem8XwbUn5EBC8by50xgKyNDZMBHMI9Xve4SPgymzur2JY1h8VBSrKAV+481sPxmpcpr527Ud9J5gljqVFIFxYFezyClcGU2kkyllbnlwgT0zBCkzOUSGIt8Wd+Cizo4mEH4L8pcYQnU6t5yyOvUt8Vp1yKrSQvdrIDLw0rdkkm59iUXPyNmRA+bnNmwQMDDU+bHwQBIPVPP7nZ1lZvNZIF/ZT1QhJM3U5HNmwlB4Le+SU6EpBYukIxyCTT1WNKwgEq7kh+fcWYX5lTzdV2R1mBW5l8K4BIgVovfqEhGbvxOtHnsfXjkGI2GoyZHFRbBqYj+oYAQ=="}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":978,"cache_read_input_tokens":109157,"cache_creation":{"ephemeral_5m_input_tokens":978,"ephemeral_1h_input_tokens":0},"output_tokens":4,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"ba5fb2a6-9831-4f27-b1e7-22073dd5fdb8"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePctPMtQuKvj7uG6VKr7","type":"message","role":"assistant","content":[{"type":"text","text":"Build OK. Je redémarre l'app et je vérifie le rendu live."}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":978,"cache_read_input_tokens":109157,"cache_creation":{"ephemeral_5m_input_tokens":978,"ephemeral_1h_input_tokens":0},"output_tokens":4,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"bc949232-ff4d-4112-b216-d0dbdb34af1e"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePctPMtQuKvj7uG6VKr7","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01HzbpG8qTs43HQ7EaTWkuDD","name":"Bash","input":{"command":"pm2 describe auto-ka-web | grep -E \"script|args|exec cwd\" ; pm2 restart auto-ka-web && sleep 3 && curl -s -o /dev/null -w \"health %{http_code}\\n\" http://localhost:8080/api/stats","description":"Restart auto-ka-web and healthcheck"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":978,"cache_read_input_tokens":109157,"cache_creation":{"ephemeral_5m_input_tokens":978,"ephemeral_1h_input_tokens":0},"output_tokens":4,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"dc9c4ca8-d2eb-4186-9636-71d5641500b9"}} {"type":"permission_auto","tool":"Bash","key":"tout autoriser","input":{"command":"pm2 describe auto-ka-web | grep -E \"script|args|exec cwd\" ; pm2 restart auto-ka-web && sleep 3 && curl -s -o /dev/null -w \"health %{http_code}\\n\" http://localhost:8080/api/stats","description":"Restart auto-ka-web and healthcheck"}} {"type":"claude","event":{"type":"system","subtype":"task_started","task_id":"b1x64xljv","tool_use_id":"toolu_01HzbpG8qTs43HQ7EaTWkuDD","description":"Restart auto-ka-web and healthcheck","task_type":"local_bash","uuid":"e766effa-546d-41a4-a2dc-69686dc739d2","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"system","subtype":"task_notification","task_id":"b1x64xljv","tool_use_id":"toolu_01HzbpG8qTs43HQ7EaTWkuDD","status":"failed","output_file":"","summary":"Restart auto-ka-web and healthcheck","uuid":"9e26dead-0f8c-445d-8127-55a4ca70c025","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"type":"tool_result","content":"Exit code 7\n│ script path │ /Users/simon-pierreboucher/auto-ka/.venv/bin/python │\n│ script args │ run.py serve 8095 │\n│ interpreter args │ N/A │\n│ script id │ 4 │\n│ exec cwd │ /Users/simon-pierreboucher/auto-ka │\nUse --update-env to update environment variables\n[PM2] Applying action restartProcessId on app [auto-ka-web](ids: [ 4 ])\n[PM2] [auto-ka-web](4) ✓\n┌────┬──────────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐\n│ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │\n├────┼──────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤\n│ 6 │ auto-ka-ngrok │ default │ N/A │ fork │ 32452 │ 8D │ 1 │ online │ 0% │ 275.0mb │ simon-p… │ disabled │\n│ 7 │ auto-ka-sync │ default │ N/A │ fork │ 83936 │ 42h │ 5 │ online │ 0% │ 416.7mb │ simon-p… │ disabled │\n│ 4 │ auto-ka-web │ default │ N/A │ fork │ 41818 │ 0s │ 39 │ online │ 0% │ 608.0kb │ simon-p… │ disabled │\n│ 13 │ food-ka-ngrok │ default │ N/A │ fork │ 84943 │ 12D │ 0 │ online │ 0% │ 185.8mb │ simon-p… │ disabled │\n│ 9 │ food-ka-sync │ default │ N/A │ fork │ 71623 │ 2D │ 6 │ online │ 0% │ 221.6mb │ simon-p… │ disabled │\n│ 11 │ food-ka-web │ default │ N/A │ fork │ 65379 │ 12h │ 31 │ online │ 0% │ 176.7mb │ simon-p… │ disabled │\n│ 3 │ hfchart-ngrok │ default │ N/A │ fork │ 75887 │ 15D │ 0 │ online │ 0% │ 76.2mb │ simon-p… │ disabled │\n│ 0 │ hfchart-web │ default │ N/A │ fork │ 86164 │ 14D │ 2 │ online │ 0% │ 25.8mb │ simon-p… │ disabled │\n└────┴──────────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘\nhealth 000","is_error":true,"tool_use_id":"toolu_01HzbpG8qTs43HQ7EaTWkuDD"}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"4ebf1d54-0320-4179-81c5-d63da0fc2f57","timestamp":"2026-08-25T14:24:51.921Z","tool_use_result":"Error: Exit code 7\n│ script path │ /Users/simon-pierreboucher/auto-ka/.venv/bin/python │\n│ script args │ run.py serve 8095 │\n│ interpreter args │ N/A │\n│ script id │ 4 │\n│ exec cwd │ /Users/simon-pierreboucher/auto-ka │\nUse --update-env to update environment variables\n[PM2] Applying action restartProcessId on app [auto-ka-web](ids: [ 4 ])\n[PM2] [auto-ka-web](4) ✓\n┌────┬──────────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐\n│ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │\n├────┼──────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤\n│ 6 │ auto-ka-ngrok │ default │ N/A │ fork │ 32452 │ 8D │ 1 │ online │ 0% │ 275.0mb │ simon-p… │ disabled │\n│ 7 │ auto-ka-sync │ default │ N/A │ fork │ 83936 │ 42h │ 5 │ online │ 0% │ 416.7mb │ simon-p… │ disabled │\n│ 4 │ auto-ka-web │ default │ N/A │ fork │ 41818 │ 0s │ 39 │ online │ 0% │ 608.0kb │ simon-p… │ disabled │\n│ 13 │ food-ka-ngrok │ default │ N/A │ fork │ 84943 │ 12D │ 0 │ online │ 0% │ 185.8mb │ simon-p… │ disabled │\n│ 9 │ food-ka-sync │ default │ N/A │ fork │ 71623 │ 2D │ 6 │ online │ 0% │ 221.6mb │ simon-p… │ disabled │\n│ 11 │ food-ka-web │ default │ N/A │ fork │ 65379 │ 12h │ 31 │ online │ 0% │ 176.7mb │ simon-p… │ disabled │\n│ 3 │ hfchart-ngrok │ default │ N/A │ fork │ 75887 │ 15D │ 0 │ online │ 0% │ 76.2mb │ simon-p… │ disabled │\n│ 0 │ hfchart-web │ default │ N/A │ fork │ 86164 │ 14D │ 2 │ online │ 0% │ 25.8mb │ simon-p… │ disabled │\n└────┴──────────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘\nhealth 000"}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"b2721870-2771-4921-8fe4-4af5102c722c","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcuSc8iCtn9Y5EdYoBC","type":"message","role":"assistant","content":[{"type":"thinking","thinking":"","signature":"CAISxwIKpwEIERgCKkA4ptZ6P/I22UJwSEjomLqJHHKovMTRyrpqFu0v7ELldbTUlo6WuISMUS3nSd5RKnNSOgwDo057jayWQvqRQaSeMg5jbGF1ZGUtZmFibGUtNTgBQgh0aGlua2luZ1okNmZjYzhmODMtMWY5Yy00ZDMzLWJhMDctNGQ0ZGYzN2Q2N2Y1chAqK78ZzsiVUzI5xDv77u/SiAEBqAG7y7bUBrABAhIM3tL7TJ2l2ca2o8i+Ggyz3o6FmDQo2exlI/IiMDD8lZ51UyfKcprdSsrQnDmyGy2xujOAr0JiBnELpOJYUn/cxH1MKj3huznAib3mUypNi4o7AyHPtD8HRe1Qb48x7ir7U27nGU7bDItlmGwcC7ePt2Sd90GcYPLjQza//g+Vd5XeRWlu0qhdlHk13/g9MMtVaMEGAqi/z55AUv0YAQ=="}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":1400,"cache_read_input_tokens":110135,"cache_creation":{"ephemeral_5m_input_tokens":1400,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"dc6acb6a-844b-4617-a02d-d258d6558e08"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcuSc8iCtn9Y5EdYoBC","type":"message","role":"assistant","content":[{"type":"text","text":"Le port est 8095. Je refais le healthcheck et je teste l'endpoint enrichi en live."}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":1400,"cache_read_input_tokens":110135,"cache_creation":{"ephemeral_5m_input_tokens":1400,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"926d0e9f-a0db-44a8-9645-147483678732"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcuSc8iCtn9Y5EdYoBC","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_013ko5v1pVpUFUWMHSv8paRA","name":"Bash","input":{"command":"sleep 2; curl -s -o /dev/null -w \"health %{http_code}\\n\" http://localhost:8095/api/stats && curl -s \"http://localhost:8095/api/vehicles/denisauto:5168959\" | python3 -c \"\nimport json,sys\nd=json.load(sys.stdin)\nprint('market:', d['market']['label'], d['market']['delta_pct'], '% | n =', d['market']['n'])\nprint('ka_score:', d['ka_score']['overall'])\nprint('vin_info:', len(d['vin_info'] or {}), 'champs')\nprint('dup_sources:', len(d.get('dup_sources') or []))\nprint('lat/lng:', d['lat'], d['lng'])\n\" && curl -s \"http://localhost:8095/api/vehicles/denisauto:5168959/recalls\" | python3 -c \"import json,sys; print('recalls:', json.load(sys.stdin)['count'])\"","description":"Healthcheck on 8095 and test enriched endpoints live"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":1400,"cache_read_input_tokens":110135,"cache_creation":{"ephemeral_5m_input_tokens":1400,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"5a88853b-769c-40b8-a5fe-ce150780bc3f"}} {"type":"permission_auto","tool":"Bash","key":"tout autoriser","input":{"command":"sleep 2; curl -s -o /dev/null -w \"health %{http_code}\\n\" http://localhost:8095/api/stats && curl -s \"http://localhost:8095/api/vehicles/denisauto:5168959\" | python3 -c \"\nimport json,sys\nd=json.load(sys.stdin)\nprint('market:', d['market']['label'], d['market']['delta_pct'], '% | n =', d['market']['n'])\nprint('ka_score:', d['ka_score']['overall'])\nprint('vin_info:', len(d['vin_info'] or {}), 'champs')\nprint('dup_sources:', len(d.get('dup_sources') or []))\nprint('lat/lng:', d['lat'], d['lng'])\n\" && curl -s \"http://localhost:8095/api/vehicles/denisauto:5168959/recalls\" | python3 -c \"import json,sys; print('recalls:', json.load(sys.stdin)['count'])\"","description":"Healthcheck on 8095 and test enriched endpoints live"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_013ko5v1pVpUFUWMHSv8paRA","type":"tool_result","content":"health 200\nmarket: Bon prix -5.6 % | n = 78\nka_score: 65\nvin_info: 22 champs\ndup_sources: 1\nlat/lng: 45.4765 -75.7013\nrecalls: 4","is_error":false}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"5d295b0b-399d-4d12-b6a9-2cccff35acc6","timestamp":"2026-08-25T14:25:05.201Z","tool_use_result":{"stdout":"health 200\nmarket: Bon prix -5.6 % | n = 78\nka_score: 65\nvin_info: 22 champs\ndup_sources: 1\nlat/lng: 45.4765 -75.7013\nrecalls: 4","stderr":"","interrupted":false,"isImage":false,"noOutputExpected":false}}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"9cf2cb70-cc0e-4756-aed9-4c4f384183d1","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcvRsWAjSKuj8zZt63S","type":"message","role":"assistant","content":[{"type":"thinking","thinking":"","signature":"CAISggYKpwEIERgCKkBeBqXPQZiMsO0hOs7Kq5bZSuxChu7muNVAkSHtsGsM1yW5F1eTwM/2pzu3gDa5qw6FEggUaNyjZQczi6hpFflBMg5jbGF1ZGUtZmFibGUtNTgBQgh0aGlua2luZ1okNmZjYzhmODMtMWY5Yy00ZDMzLWJhMDctNGQ0ZGYzN2Q2N2Y1chAqK78ZzsiVUzI5xDv77u/SiAEBqAHKy7bUBrABAhIMyG14H+DDzEpsKpydGgwo+5yPE9gUmXT+6vwiMEQf1wpnM8bEqWqCcVQVtkyT7daxUC2edApPqqq66px1UA+F6THV/Dzxz9uJZYnsNiqHBFByoLna2aWNKNJRm1mJC5MTMNhK4RK+DmH95aoPH3PDxXg6YbXLdLmsesMmODqkli/Z7ej5ozVmGLDMEEBJggPj4T4XmrO2aC0J+tiN8IpD7qKUhomwqvyuijSte8bU765/Cjf+rBjqCE6W1XPz93pQLHZ+3QQsbTf/0cWnVr3AXdmg5zmnQwTOIlM4OoeqJfE6Qm0o99fOjupv9Drb9nO7JOOQFmHqD4QBG/Fswyn/Ks/JBm/p9KX0lxnko12jYHtIC0MV2NJ3pyIFx64CYhjSgKkTqz+auba35L4Y9dsvtaDRYlRfe4pgtV5WKcU4561W1nRqf+URuS2jbN9KEEvxPrSTByCDXqV/GxX/xd3w1O0zO4kFlxNNoTK+WvCTMjHy3lDJ8AWA7x23I0wKd3xE3gBh8TQrH9pD7iLw7I9qLQixk1eLC5/uUI58Kk4RvAFN2mu01FBwoo5Mlsdlm3GQDzbd8Svso5rMBxL9k1XA2EnoUsT18yzuMysYU7PpfyuoIIFh7CQ8j1E0nhrhluM4agxbeTGusUOHRkpLHmBAWZ1FpXtnmk2JqskWKiosbOqjpnRzcD4VBrkk/6Su9PBSWaFtKkgbvy3OQ/fON9dWbib4mu3SaQJm/jbWVTv7/8pnTMjVy/Jtz3bR5DCVi9xqLK0Z4WKOFTIHSkbkLT4XIfkextAMChgB"}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":546,"cache_read_input_tokens":111535,"cache_creation":{"ephemeral_5m_input_tokens":546,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"73f79b56-4961-4532-b113-58cfeb20e65d"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcvRsWAjSKuj8zZt63S","type":"message","role":"assistant","content":[{"type":"text","text":"API live OK. Je vérifie le rendu réel de la page dans un navigateur headless (Playwright si dispo)."}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":546,"cache_read_input_tokens":111535,"cache_creation":{"ephemeral_5m_input_tokens":546,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"d7daa63b-5892-45fa-812a-97ef31246366"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcvRsWAjSKuj8zZt63S","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01P3LeL3D6hMfUKu939DoPVn","name":"Bash","input":{"command":"ls ~/auto-ka/frontend/node_modules/.bin/ 2>/dev/null | grep -i playwright; ls ~/auto-ka/frontend/scripts 2>/dev/null; npx --no-install playwright --version 2>/dev/null || echo \"no-playwright\"","description":"Check for Playwright availability"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":546,"cache_read_input_tokens":111535,"cache_creation":{"ephemeral_5m_input_tokens":546,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"a1c4f09d-00bc-4ef8-80ec-2ccb65572093"}} {"type":"permission_auto","tool":"Bash","key":"tout autoriser","input":{"command":"ls ~/auto-ka/frontend/node_modules/.bin/ 2>/dev/null | grep -i playwright; ls ~/auto-ka/frontend/scripts 2>/dev/null; npx --no-install playwright --version 2>/dev/null || echo \"no-playwright\"","description":"Check for Playwright availability"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01P3LeL3D6hMfUKu939DoPVn","type":"tool_result","content":"no-playwright","is_error":false}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"d233c708-5206-44b8-a7bd-1e0b6f76be2a","timestamp":"2026-08-25T14:25:16.061Z","tool_use_result":{"stdout":"no-playwright","stderr":"","interrupted":false,"isImage":false,"noOutputExpected":false}}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"73a90a6b-9d94-4da0-8281-65c768182cb2","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcwDmmDvPiaBX97NKCm","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01TFsq8Pz9a3XeuzzbHK6j8r","name":"Bash","input":{"command":"python3 -c \"import playwright\" 2>/dev/null && echo \"py-playwright OK\" || pip3 list 2>/dev/null | grep -i playwright; ls ~/Library/Caches/ms-playwright 2>/dev/null | head","description":"Check python playwright and browser cache"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":408,"cache_read_input_tokens":112081,"cache_creation":{"ephemeral_5m_input_tokens":408,"ephemeral_1h_input_tokens":0},"output_tokens":20,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"370458c7-d3cb-4263-a61f-a38e57448cda"}} {"type":"permission_auto","tool":"Bash","key":"tout autoriser","input":{"command":"python3 -c \"import playwright\" 2>/dev/null && echo \"py-playwright OK\" || pip3 list 2>/dev/null | grep -i playwright; ls ~/Library/Caches/ms-playwright 2>/dev/null | head","description":"Check python playwright and browser cache"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01TFsq8Pz9a3XeuzzbHK6j8r","type":"tool_result","content":"(Bash completed with no output)","is_error":false}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"f452b573-9fb7-4cc3-bb2e-47ae08b31eb2","timestamp":"2026-08-25T14:25:23.238Z","tool_use_result":{"stdout":"","stderr":"","interrupted":false,"isImage":false,"noOutputExpected":false}}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"231d1488-e524-4845-94f0-094ed063aa19","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcwmDsVBz9jndXb8anM","type":"message","role":"assistant","content":[{"type":"thinking","thinking":"","signature":"CAIS6AcKpwEIERgCKkBejr5HegabTMQb2x0fRXy3uzkfzKSwATA0eUrvp7GIjWdzLKv3MaiSAwnsgQcH4XJbjkXSjcHv0berUOHhMwF2Mg5jbGF1ZGUtZmFibGUtNTgBQgh0aGlua2luZ1okNmZjYzhmODMtMWY5Yy00ZDMzLWJhMDctNGQ0ZGYzN2Q2N2Y1chAqK78ZzsiVUzI5xDv77u/SiAEBqAHcy7bUBrABAhIM3CbizSo98ax6cdIZGgxjGk/b+gOxDh61RyEiMGPfl0HyoumfJeRRzxhZTZLH3xUIWKPi0yeKO8tCqPBToHRbMAJe8WX5I9rq9hg12SrtBQX/CxH/eSqWB8dmW38iIGm81952yGeFay3bcJ+zJXfThcCYWvOMyx808Ezm+qkkCkDxGN1dfhnHpEAttXJqv/3UapyxcK8PyEwk7BYKqga1UdUURWcToOTy/sHQKNmiyI1+ZFpm4k+yfKoSKYWy9Vnoq3KyLpMM/4G66o/4odUU4dAI/5glkw5XxfoSmIXDXyH5imLR7hTIG4HDTw6SW//W0OOiTKE4dE9uzsxOZkYW5PKLd5AdqCaP/Iuu0b8Xnr8k8gH1aYNgXDcGWZcTMQWQQWLLYALthVAab72p57Eysihh/jSftM8xSS1n4BkdbVnztfF/hCBG8I8rkYU1xmWmkZlStzlVVp78e92HXaCW/hdeIvAtNJlLzoGZADWW2RzTeLFD9ynSS4vP3NPn0//sd0e9AfiSIVU/39sdTw2KX+LoUg/kuGEL51h5kHyBApzOs3Y+aFcal9MQt193Snu1zWMGado6tyk1+s8YZB+aX9rr8W6WT5gaxoIsFmnMNH3tuFDrfP/qiXzWdAkhI+MHVBtCZzS/XTKlmHtTwHW5QAV1+OW89yOuxBzW5J/4wIgIL6d9g57MSZBI3eI5/SM52OiSfLrnowW16ytWLFbfBvannujtXNaw/ALG6a1h6ED2HoSSQw58U9rL4M/b//A+w9x/dDU0dg/9vwry9ZCUlW53eUbWSmKtrYoCY0Etn1oW3EkbkRzY/zZxyiGydsyI2wSH5FaYYUO3lzwY7Qg4YCHm8ohfThV3lpNuX7YrO0Gw+dnVikhaOgAmKsgmgFdqxi4V2ObiPvQrcm00OVniXwWgPBrOdpo2+i2BY4gUK8jIJx02ftbSOBNZ54FXYzVlJtyrDg0c/tkrwIW7/eoK/QbAHQ/+IShEYQyO+y3XdGd4wyN7N52xm9RGbXHN2/Y+xyrNVcIs2N0QUwzjEYxMGLOO2tGm0RR0RhFQtcPE+8r5p4CpTJFwGq12T2FQga2XEzIjQOjiAb03cY+fGAE="}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":174,"cache_read_input_tokens":112489,"cache_creation":{"ephemeral_5m_input_tokens":174,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"ce3b49d9-a503-4b44-9e23-a01c783c46c1"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcwmDsVBz9jndXb8anM","type":"message","role":"assistant","content":[{"type":"text","text":"Playwright n'est pas installé. Je l'installe (comme sur les autres sites Ka) pour vérifier réellement la page dans un navigateur."}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":174,"cache_read_input_tokens":112489,"cache_creation":{"ephemeral_5m_input_tokens":174,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"003ba38d-a291-4ea6-9ccf-527ebdb0ba02"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcwmDsVBz9jndXb8anM","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01ML4L9XPbaQikEQSYv5JSwP","name":"Bash","input":{"command":"cd ~/auto-ka/frontend && npm install -D playwright 2>&1 | tail -2 && npx playwright install chromium 2>&1 | tail -3","description":"Install Playwright + Chromium for UI verification","timeout":300000},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":174,"cache_read_input_tokens":112489,"cache_creation":{"ephemeral_5m_input_tokens":174,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"99bf3654-e4fd-437b-937c-617a2acddc7a"}} {"type":"permission_auto","tool":"Bash","key":"tout autoriser","input":{"command":"cd ~/auto-ka/frontend && npm install -D playwright 2>&1 | tail -2 && npx playwright install chromium 2>&1 | tail -3","timeout":300000,"description":"Install Playwright + Chromium for UI verification"}} {"type":"claude","event":{"type":"system","subtype":"task_started","task_id":"bmxhzfxpa","tool_use_id":"toolu_01ML4L9XPbaQikEQSYv5JSwP","description":"Install Playwright + Chromium for UI verification","task_type":"local_bash","uuid":"b9fdf643-97f0-4cac-b9a4-b21b44189ffa","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"system","subtype":"task_notification","task_id":"bmxhzfxpa","tool_use_id":"toolu_01ML4L9XPbaQikEQSYv5JSwP","status":"completed","output_file":"","summary":"Install Playwright + Chromium for UI verification","uuid":"fa715f8c-43d1-414d-afe1-340fc4e93a4f","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01ML4L9XPbaQikEQSYv5JSwP","type":"tool_result","content":"Run `npm audit` for details.\n|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | 90% of 94.7 MiB\n|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■| 100% of 94.7 MiB\nChrome Headless Shell 151.0.7922.34 (playwright chromium-headless-shell v1234) downloaded to /Users/simon-pierreboucher/Library/Caches/ms-playwright/chromium_headless_shell-1234","is_error":false}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"bf1ad708-fddb-41af-b3fc-b58cdeed9717","timestamp":"2026-08-25T14:25:44.022Z","tool_use_result":{"stdout":"Run `npm audit` for details.\n|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | 90% of 94.7 MiB\n|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■| 100% of 94.7 MiB\nChrome Headless Shell 151.0.7922.34 (playwright chromium-headless-shell v1234) downloaded to /Users/simon-pierreboucher/Library/Caches/ms-playwright/chromium_headless_shell-1234","stderr":"","interrupted":false,"isImage":false,"noOutputExpected":false}}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"84a982dd-e474-451a-a4ab-2c6794379285","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePcyJQdMvKxxWVrcrTV6","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01HNR3H7UtdHXbNoqJnrBhwP","name":"Bash","input":{"command":"cd ~/auto-ka/frontend && cat > /tmp/check-vehicle.mjs << 'EOF'\nimport { chromium } from \"playwright\";\nconst uid = process.argv[2] || \"denisauto:5168959\";\nconst browser = await chromium.launch();\nconst page = await browser.newPage({ viewport: { width: 1280, height: 900 } });\nconst errors = [];\npage.on(\"pageerror\", (e) => errors.push(String(e)));\npage.on(\"console\", (m) => { if (m.type() === \"error\") errors.push(m.text()); });\nawait page.goto(`http://localhost:8095/vehicule/${encodeURIComponent(uid)}`, { waitUntil: \"networkidle\" });\nawait page.waitForSelector(\".vdetail h1\", { timeout: 15000 });\nconst checks = {\n titre: await page.locator(\".vd-head h1\").textContent(),\n badge_marche: await page.locator(\".market-badge\").textContent().catch(() => \"ABSENT\"),\n galerie: await page.locator(\".gallery .main img\").count(),\n compteur_photos: await page.locator(\".gal-count\").textContent().catch(() => \"ABSENT\"),\n analyse_marche: await page.locator(\".mkt-stats\").count(),\n scatter: await page.locator(\".scatter\").count(),\n carte: await page.locator(\".map-embed\").count(),\n autres_offres: await page.locator(\".offer\").count(),\n ka_score: await page.locator(\".score-ball\").textContent().catch(() => \"ABSENT\"),\n fiche_constructeur: (await page.locator(\".panel h3\", { hasText: \"Fiche constructeur\" }).count()),\n rappels: await page.locator(\".recall\").count(),\n};\n// lightbox : clic sur la photo principale\nawait page.locator(\".gallery .main img\").click();\nchecks.lightbox_ouverte = await page.locator(\".lightbox img\").count();\nchecks.lb_compteur = await page.locator(\".lb-count\").textContent().catch(() => \"ABSENT\");\nawait page.keyboard.press(\"ArrowRight\");\nawait page.waitForTimeout(300);\nchecks.lb_apres_fleche = await page.locator(\".lb-count\").textContent().catch(() => \"ABSENT\");\nawait page.keyboard.press(\"Escape\");\nawait page.waitForTimeout(200);\nchecks.lb_fermee = (await page.locator(\".lightbox\").count()) === 0;\n// screenshot pleine page\nawait page.screenshot({ path: \"/tmp/autoka-vehicle.png\", fullPage: true });\nconsole.log(JSON.stringify(checks, null, 2));\nconsole.log(\"JS errors:\", errors.length ? errors : \"aucune\");\nawait browser.close();\nEOF\nnode /tmp/check-vehicle.mjs","description":"Headless browser test of the new detail page","timeout":120000},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":1138,"cache_read_input_tokens":112663,"cache_creation":{"ephemeral_5m_input_tokens":1138,"ephemeral_1h_input_tokens":0},"output_tokens":20,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"eb0e6a96-c7bc-43a9-bfb4-c77636e0dcab"}} {"type":"permission_auto","tool":"Bash","key":"tout autoriser","input":{"command":"cd ~/auto-ka/frontend && cat > /tmp/check-vehicle.mjs << 'EOF'\nimport { chromium } from \"playwright\";\nconst uid = process.argv[2] || \"denisauto:5168959\";\nconst browser = await chromium.launch();\nconst page = await browser.newPage({ viewport: { width: 1280, height: 900 } });\nconst errors = [];\npage.on(\"pageerror\", (e) => errors.push(String(e)));\npage.on(\"console\", (m) => { if (m.type() === \"error\") errors.push(m.text()); });\nawait page.goto(`http://localhost:8095/vehicule/${encodeURIComponent(uid)}`, { waitUntil: \"networkidle\" });\nawait page.waitForSelector(\".vdetail h1\", { timeout: 15000 });\nconst checks = {\n titre: await page.locator(\".vd-head h1\").textContent(),\n badge_marche: await page.locator(\".market-badge\").textContent().catch(() => \"ABSENT\"),\n galerie: await page.locator(\".gallery .main img\").count(),\n compteur_photos: await page.locator(\".gal-count\").textContent().catch(() => \"ABSENT\"),\n analyse_marche: await page.locator(\".mkt-stats\").count(),\n scatter: await page.locator(\".scatter\").count(),\n carte: await page.locator(\".map-embed\").count(),\n autres_offres: await page.locator(\".offer\").count(),\n ka_score: await page.locator(\".score-ball\").textContent().catch(() => \"ABSENT\"),\n fiche_constructeur: (await page.locator(\".panel h3\", { hasText: \"Fiche constructeur\" }).count()),\n rappels: await page.locator(\".recall\").count(),\n};\n// lightbox : clic sur la photo principale\nawait page.locator(\".gallery .main img\").click();\nchecks.lightbox_ouverte = await page.locator(\".lightbox img\").count();\nchecks.lb_compteur = await page.locator(\".lb-count\").textContent().catch(() => \"ABSENT\");\nawait page.keyboard.press(\"ArrowRight\");\nawait page.waitForTimeout(300);\nchecks.lb_apres_fleche = await page.locator(\".lb-count\").textContent().catch(() => \"ABSENT\");\nawait page.keyboard.press(\"Escape\");\nawait page.waitForTimeout(200);\nchecks.lb_fermee = (await page.locator(\".lightbox\").count()) === 0;\n// screenshot pleine page\nawait page.screenshot({ path: \"/tmp/autoka-vehicle.png\", fullPage: true });\nconsole.log(JSON.stringify(checks, null, 2));\nconsole.log(\"JS errors:\", errors.length ? errors : \"aucune\");\nawait browser.close();\nEOF\nnode /tmp/check-vehicle.mjs","timeout":120000,"description":"Headless browser test of the new detail page"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"type":"tool_result","content":"Exit code 1\nnode:internal/modules/package_json_reader:301\n throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null);\n ^\n\nError [ERR_MODULE_NOT_FOUND]: Cannot find package 'playwright' imported from /private/tmp/check-vehicle.mjs\n at Object.getPackageJSONURL (node:internal/modules/package_json_reader:301:9)\n at packageResolve (node:internal/modules/esm/resolve:764:81)\n at moduleResolve (node:internal/modules/esm/resolve:855:18)\n at defaultResolve (node:internal/modules/esm/resolve:988:11)\n at #cachedDefaultResolve (node:internal/modules/esm/loader:697:20)\n at #resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:714:38)\n at ModuleLoader.resolveSync (node:internal/modules/esm/loader:746:52)\n at #resolve (node:internal/modules/esm/loader:679:17)\n at ModuleLoader.getOrCreateModuleJob (node:internal/modules/esm/loader:599:35)\n at ModuleJob.syncLink (node:internal/modules/esm/module_job:162:33) {\n code: 'ERR_MODULE_NOT_FOUND'\n}\n\nNode.js v25.9.0","is_error":true,"tool_use_id":"toolu_01HNR3H7UtdHXbNoqJnrBhwP"}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"d8b95ee1-7e7a-4108-8baf-8aea4b5d382a","timestamp":"2026-08-25T14:25:57.511Z","tool_use_result":"Error: Exit code 1\nnode:internal/modules/package_json_reader:301\n throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null);\n ^\n\nError [ERR_MODULE_NOT_FOUND]: Cannot find package 'playwright' imported from /private/tmp/check-vehicle.mjs\n at Object.getPackageJSONURL (node:internal/modules/package_json_reader:301:9)\n at packageResolve (node:internal/modules/esm/resolve:764:81)\n at moduleResolve (node:internal/modules/esm/resolve:855:18)\n at defaultResolve (node:internal/modules/esm/resolve:988:11)\n at #cachedDefaultResolve (node:internal/modules/esm/loader:697:20)\n at #resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:714:38)\n at ModuleLoader.resolveSync (node:internal/modules/esm/loader:746:52)\n at #resolve (node:internal/modules/esm/loader:679:17)\n at ModuleLoader.getOrCreateModuleJob (node:internal/modules/esm/loader:599:35)\n at ModuleJob.syncLink (node:internal/modules/esm/module_job:162:33) {\n code: 'ERR_MODULE_NOT_FOUND'\n}\n\nNode.js v25.9.0"}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"1763dd51-7d54-4afe-a5f5-1d09f88663aa","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePczHiyoDXxyVaS6tEjm","type":"message","role":"assistant","content":[{"type":"thinking","thinking":"","signature":"CAIStQUKpwEIERgCKkAiU+4W8R1GZvPZXPUAOqZumFetB8udIV1CLPFbT6GRNJ500BeRE+buXZ+pL7Wzl2hNjHM+P2qOE+mG2u99dVCOMg5jbGF1ZGUtZmFibGUtNTgBQgh0aGlua2luZ1okNmZjYzhmODMtMWY5Yy00ZDMzLWJhMDctNGQ0ZGYzN2Q2N2Y1chAqK78ZzsiVUzI5xDv77u/SiAEBqAH8y7bUBrABAhIMuxf9O53B1XQ3Xc5XGgz1Kh3+H9RlKC17mSciMEll8lNtR+7PiOiPJY2wJinfBT7xr9WGUEeQxt1UJmUAYpy/a0oGoG8n/ejSbUR8Hyq6A/JrF2dT0yO6beaNR4h1PihocX+ayGVD5TeAWTIxCeuZGKF9SFqAu1nL1mM+5QZInwaX3plMygHNv+ofQemxRy0jQ2MmapwcIHgDyIfUFnSv1VrT6vZL7Yt+ONo8H2hkufC0GvUOwGaXfwJFjz9g1OT2GGc14FInJ+JVjtLMr0uh6c/cTlaP5t0xVrT0V+o6zLYbPmW0/O6P8hiUW6Lst5AXNz0N0ShxY28A8gcaBMtf8AcVGvFlTlUwYgszZqUMs/AcsdgyqZ5rFfN7BP6YAOW4kS3GVCcN7ujE5n/GVguik1bMqoWjmMY2VJHQ7CcewsVeFF+kRwnph7VjdwRYtxh9GKVmxmxSb10As6nIYMzKb/KdXOrZRnAHFogT1wyTpnaGXNU+HIP5k1zAROJF739q41OFtvkyOSDqZ56gxZfjvN83UF2lPJzL54iAtR46hr9disSoZ3rMRAZ0fUlOpq3tFphP0BQ3PTl7Qr2rzcC8/M9nAxZOs9uYHZqpZ2zY664VGx0/MR0KEXlo5yFimrycuSgX3MXPuM1LiDL2KDUHIOfJEkbf5ym/IpLmLj2fOHRgDRcMfcP3eZYYAQ=="}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":1541,"cache_read_input_tokens":113801,"cache_creation":{"ephemeral_5m_input_tokens":1541,"ephemeral_1h_input_tokens":0},"output_tokens":10,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"9bf147e6-c391-4cc8-a477-5f9375166870"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePczHiyoDXxyVaS6tEjm","type":"message","role":"assistant","content":[{"type":"text","text":"Le script doit résider dans le projet pour résoudre `playwright`. Je le place dans `frontend/scripts/` (comme sur les autres sites Ka)."}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":1541,"cache_read_input_tokens":113801,"cache_creation":{"ephemeral_5m_input_tokens":1541,"ephemeral_1h_input_tokens":0},"output_tokens":10,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"1d7bccc9-23ff-4f4c-b272-4fdea838ca99"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePczHiyoDXxyVaS6tEjm","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01WHh5RwCKaLiEUJZjvdbWBt","name":"Bash","input":{"command":"mkdir -p ~/auto-ka/frontend/scripts && cp /tmp/check-vehicle.mjs ~/auto-ka/frontend/scripts/check-vehicle.mjs && cd ~/auto-ka/frontend && node scripts/check-vehicle.mjs","description":"Run headless UI test from frontend/scripts","timeout":120000},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":1541,"cache_read_input_tokens":113801,"cache_creation":{"ephemeral_5m_input_tokens":1541,"ephemeral_1h_input_tokens":0},"output_tokens":10,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"971ebe3e-7e8d-469d-8b7b-bcc7ba25ea5d"}} {"type":"permission_auto","tool":"Bash","key":"tout autoriser","input":{"command":"mkdir -p ~/auto-ka/frontend/scripts && cp /tmp/check-vehicle.mjs ~/auto-ka/frontend/scripts/check-vehicle.mjs && cd ~/auto-ka/frontend && node scripts/check-vehicle.mjs","timeout":120000,"description":"Run headless UI test from frontend/scripts"}} {"type":"claude","event":{"type":"system","subtype":"task_started","task_id":"baacoh7o5","tool_use_id":"toolu_01WHh5RwCKaLiEUJZjvdbWBt","description":"Run headless UI test from frontend/scripts","task_type":"local_bash","uuid":"be552b02-4294-4f9e-a63a-8c9613f4f740","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01WHh5RwCKaLiEUJZjvdbWBt","type":"tool_result","content":"{\n \"titre\": \"GMC Terrain AT4 2022\",\n \"badge_marche\": \"Bon prix · 5,6 % sous la médiane\",\n \"galerie\": 1,\n \"compteur_photos\": \"🖼 1 / 23\",\n \"analyse_marche\": 1,\n \"scatter\": 1,\n \"carte\": 1,\n \"autres_offres\": 1,\n \"ka_score\": \"65\",\n \"fiche_constructeur\": 1,\n \"rappels\": 3,\n \"lightbox_ouverte\": 1,\n \"lb_compteur\": \"1 / 23\",\n \"lb_apres_fleche\": \"2 / 23\",\n \"lb_fermee\": true\n}\nJS errors: aucune","is_error":false}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"6046d784-a82d-4818-887e-46e57d9b8ed6","timestamp":"2026-08-25T14:26:10.493Z","tool_use_result":{"stdout":"{\n \"titre\": \"GMC Terrain AT4 2022\",\n \"badge_marche\": \"Bon prix · 5,6 % sous la médiane\",\n \"galerie\": 1,\n \"compteur_photos\": \"🖼 1 / 23\",\n \"analyse_marche\": 1,\n \"scatter\": 1,\n \"carte\": 1,\n \"autres_offres\": 1,\n \"ka_score\": \"65\",\n \"fiche_constructeur\": 1,\n \"rappels\": 3,\n \"lightbox_ouverte\": 1,\n \"lb_compteur\": \"1 / 23\",\n \"lb_apres_fleche\": \"2 / 23\",\n \"lb_fermee\": true\n}\nJS errors: aucune","stderr":"","interrupted":false,"isImage":false,"noOutputExpected":false}}} {"type":"claude","event":{"type":"system","subtype":"task_notification","task_id":"baacoh7o5","tool_use_id":"toolu_01WHh5RwCKaLiEUJZjvdbWBt","status":"completed","output_file":"","summary":"Run headless UI test from frontend/scripts","uuid":"761db20b-a709-4272-a41d-8ea84677bbea","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"601c24b7-e7d1-4a84-9d7b-ab35bc05de47","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePd1F61J1x7Tc3t9ouiv","type":"message","role":"assistant","content":[{"type":"thinking","thinking":"","signature":"CAISzwIKpwEIERgCKkBFqPj+zoT6prIQnaBPgNELvpCuGNzHdd/duBByOE1hHBDiabESgzs7ttgitrDgZrgFGE+y4cwXm48iKJJLsYLyMg5jbGF1ZGUtZmFibGUtNTgBQgh0aGlua2luZ1okNmZjYzhmODMtMWY5Yy00ZDMzLWJhMDctNGQ0ZGYzN2Q2N2Y1chAqK78ZzsiVUzI5xDv77u/SiAEBqAGGzLbUBrABAhIMpUP08q3eifh5y29XGgwLRrEksuTnh4X1k/8iMM318fHWEXtusIIXz2e3Dg7/IOvjbI/N3FQUmkiPz7kbBN44rxhAU5gAuTUKmKnQnSpVMN4aMgq8QbvVG+I0AL6supRuJSYZPflgp0QXteQn6ikX3gbtCpGtRCmSA7vxeEbeKlk4ObKcPEK5s6f63pGC+8HFJ2mOoxer03syxpFdTiHkJ5ZvbRgB"}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":654,"cache_read_input_tokens":115342,"cache_creation":{"ephemeral_5m_input_tokens":654,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"ab78d01b-9484-4668-a0d5-7e4aaec48706"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePd1F61J1x7Tc3t9ouiv","type":"message","role":"assistant","content":[{"type":"text","text":"Tous les tests passent. Je vérifie visuellement la capture d'écran."}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":654,"cache_read_input_tokens":115342,"cache_creation":{"ephemeral_5m_input_tokens":654,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"596af0e3-f5ac-482b-b397-94d715081eec"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePd1F61J1x7Tc3t9ouiv","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_012mf7ZprktGRCwH37gcUUwn","name":"Read","input":{"file_path":"/tmp/autoka-vehicle.png"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":654,"cache_read_input_tokens":115342,"cache_creation":{"ephemeral_5m_input_tokens":654,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"4db4cf75-0361-47cc-a299-28850e368a58"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_012mf7ZprktGRCwH37gcUUwn","type":"tool_result","content":[{"type":"image","source":{"type":"base64","data":"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S7td7cZpOn7s2LGdY+b52Nvfszk8POi6ru97YLVaRQTSarXc2txqra2HYXtr69jOMV5ktiXde9+9B4eHGxsbmTlN02zWSwKt16sS5eSJk4vFAggAqLWePnV6PawXi0WtZZyGcRy7WlvLWutivthYbIzjmNn6vudfo5QiablaZWbfddM0ttaMa+0W88U0jeM4ANjiudVaNzY2MEDXdVFKROm6LrMtl0tJmcm/lSRgPpsv5gtsSX3X11pby8yMElwmwIhnknTm9Jlpmrqum/WzaZrW61XXda21UstsNtva3Jpam6ap63oeQBIwn8/HccrMWT8rpczn863NLWPjUovtzLSJiMycpqnW2tWu1ippHEcA8wDCAJIOjw5atr6fHR4ddl1XSomIcRxBNl3XRWgcx8zkRSYJ6Pp+Y7HITEHfdxibNk2hGKeRK6ACwHw231hsHD92nOfnmjPXALYlAXaCeBHYLqXcctMtPI9NAGzb5gphAITAwM72zrGdY7xQttMpxL+e7WM7x47tHON5tNYACQABSACllGM7x47tHOP52VhsALYBSbZ5AOPjx44fP3acf8n21hb329zY5DkYyQBIIICtza2d7R0uO7azI2lzY5PndPzYccC2bV5ktk8eP8ELltkAiQoAEcG/RBKXScGLRhIvlCRJQO26NjVJwNRa1/WAJP4lkoT4N5HEC1BKAVpLG8AmWwKlFP4lkrhMEg8gxL/bbDZr0yQJaK1FBBAR3E8SL5gk/jUk8UJFFMCm3n3XnU968pMjhPlvYbvv+7/7+797+ENvaa0BN95w/Z/92Z+82Iu9+LAeJPFfzlBK7O8fjMP6+PHjq9Xq+PHjw7D+27/9262trZYp/hsY933/lKc+5czp0xExjuONN97453/51/PZfGqTEP8tRKbvuutO3XfP7U9+6lOzpYT5byCUmTfecP3NN988DAPQ9/0zbrvt7rvviQhj/ssJbPq+e/SjHtX3fWutlDIMw+Of+MRxGCXMfwOhzDx18sTDH/7waZps931/3333Pf3WWyUB5r+awCYiHvHwh2l5uNt1FcAYAAECBOYKg8S/kgAB2Lxwgqm1cRwlAba7rislAJsXQhJgm+chYQuQAPFv4fV6DQCGkObzuQQG8d/AILXWVquVJMB213V932MDiP9qBgGs10MtEaV2GBQIMICNQTwnYxCYZ7IBsG2B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xFX/IqjGwB133PETP/UTe3t74zCu1+u3fuu3fuQjHvlbv/1bv/brv3bmzJnt7e277757HMfFYvFmb/Jmv/4bv767u3vdtdftXto9Ojp653d851OnTgGS+NezDYB4IBv4/T/4/b/6m786ODhYLVfXXHPNe77He547f+4nf+YnTxw/cerUKeDOu+6U9BIv9hInT578ru/5rrd5q7d5/BMe/9jHPHZ7e/vue+7u+/7P//zPb7755r29vWEYThw/cezYMdsRwb9EEle96KCGArjlllte89Vfc3NzM50b841hHB76kIe+/du9/W2333bTjTctFosnPvGJXdfdcMMNG5sbL/eyL7dYLDY3No8dO/aXf/WXt9xyCyCJ/ziSgFd6pVc6fvz48ePHI2IYhsVi8Zqv8ZrHjh1rrd1yyy2XLl06c+uZ66+//szpM7XW93qP95L08i/38jfccMNDH/rQ3Yu7T3nqU97h7d9hHMdHPPwRy+Vye3sbkMRV/+GgAsBsNnuD138DnoMf9chHPeqRj+KyBz/owdzv5ptu5n433ngjl0niP44k4CEPfshDHvwQntOrvsqrcr+XfImX5H433XQTD3Dttddee+21PCfbkrjqPxxUAMjWolbAEGAQMggyMyKA1lpEALa5TFJmllL4z5GZinBmRPAACQFAa02SJMA2l0mSZNs2l0kCAElc9Z8BKgBErdO5uzVbSDq6+/b+mhuG++6a3/SQo1ufuPmYlz160t/msNp68VfERpLE/Uop/KeJiNXtT53d+JDlU/9BtUeUrWPjuXvmD3rEsLe7fMrfH3uVN8BGAiTxAJIkcdV/DagA0FbLO7/jS06+3ttg7/7BL88f9Iio/cXf/KnumhtisXn+V3502j239eKvyH8VO4H9v/mjsz/9XQ/+pK9uy8NzP/ct/XU3jxfu9TTd8F4ft/cXv3v2Z7935+VfS12PjcRV/40gsIG2d7FsbI1n7+7P3BCzRdu7CMRi09OkUuuxk215CCDxXyiXh9H1bf8SrZ1+83dHdCev6c9cv777GfX4adqY6yVX/U8AFQnor7nh5o/4fI8D0jVv9/7diTPD2bv7625a33Xr/KaHnXy9tznxWm8BYCPxn08K4Ngrv/7Oy72mahcbW2Vzu7/upu746fHC2f6aG6a9i7d8/FeUrWPYSFz13wsqALg1laKuB/prbgRmNzwI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","media_type":"image/png"}}]}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"64cecacf-5ebe-47b4-beff-6acc74020e4f","timestamp":"2026-08-25T14:26:15.279Z","tool_use_result":{"type":"image","file":{"base64":"iVBORw0KGgoAAAANSUhEUgAAAMMAAAMdCAIAAACpwVU/AAG940lEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8e7J3nhZJku7VmAMQzlVL4n822JO5nnkm8MAaMhG1J/D9ge2NjA5yZIP4FDgXS0dGRJK6Ayv0ktdYkRYRtwHZE2C6lbG4f55kMBpaHB5nJfz6D+FcrpUjY3M8gXgSZzVhIERHRWuP/utls9nd///f33Htfaw0opdgAEs9XRJw+dfLFX+zFhmHgCtDB3nlAUmZubW22lkdHR5JqraWU1WrVdd3Fixd/4Ed+9OzupTaNHse9/f1bbrrxIz/8w/taFQFgIwGSsA22bUcE97MtQMpMwLakiBAYgMyUJKm1FhEhGQBJtm1npiTb/EtKKRd3dy9d2gMZCwEIDOKZDCBpapMQANje2dmpXddaE47QiePHWkueh21JtgFJkmxzP0mAbdtcJonnJAnITJ6HJJ6TJCBtbEk8D0lAZvI8JPGcIiIzAduL+fx3f/8PkvIar/4afd8D+/v7EcW4TROSwAasCIwx9l/99V9N4/K1X/M1V6uVJEAHe+cB25sbGz/2kz91+vSp133d110vlxcvXty9dOlhD31oN9v6ju/9zk943/d71ZuPbcm/fn5YpQfrT3/vd17ixV/8rrvvtl1qaS1LxDAOUpSIxWIx6/uLl3YjCmB7HMdaq8T21nZXK7Aehr39fUklwvaJ48fXw3B0dHTi+PGDw8NhHJ05tVZKidCsn+1sbY2tlQheqFLKhYsXx4kbbriRyzINtl1Kaa1xmSJs217M5zzAj/74j/7yL/9yTuN1N970wR/wgX3l5MmTrTXuFxGSSil2ShHSMI6ZyQNIklRKAQQRMbU2TRP3k9Rai4i+65AkZaakkNKZ6WmauJ+klok9m80ilGnscZok2QYktUxgMZ/bluRMIEpkehgGHiAiVqvVbDazPev7pz796bfdcc8bvP4bPOEJT/iLv/jra6+75vVf73XHcey6CuIF+63f/q3rzpx4xCMesVqtJFUAiIij5fLXf/M3rjlzTWaeOnnqh3/sR9vUXuolX0Kwf3B47TXHv//VHvQ+f3PxrU7Em52ZfdjfXliu15J29/ZKib7r57PZ0Wq5Wq0iSomQVGu9tLc362fDONrZ1W4cR8RiPq+l2C6l2D48Ouy6bmtjU9Le/v5qvT554sTRcrl/cDCbzeycllPf9VIgZWslghfKzt1L+4997Ev83T/8/TNue8brvvbr3H7HHRcuXJimKUpsb20DR0dHj3n0o++9995f+uVfetSjHiUUoYsXd2+8+eaf+qHvn/3Zr1x7/Niv/258yId91Gq519oEAmwvFos//6u/uve++x50yy1Pv/UZ15w5s16vHv3IR544fry1xmUh/dJv/MbBwcEtN918tFxubmyAr73mmoc++MHDMEiyPev7v3vyk2+/866bb7pxtVwZ7+8fGC8WC6HTJ08+/GEPHYZBku2+75/25Cf//eMff/211y5X63EcH/rgBz38oQ8dx1GS7VnfP/EpT3narc84dfJkrWW1Xoei77uDg4ONxcZLvNhjuV+t9fyFC//w+Cc8/KEPuebMmVLK3ffc88hHPhL44q/4rGfc+1ttdeqlXvIP/+bv/mJ5tJzP5xEREcvlstYaEeM0Cp0+ffrlX+7lH/nIRz7xCf/w6Ec/2rakCtheLBZ/9dd/3Vq7tHfp1379N/q+u/mmm3Z3Lz391mfM+v5wnLqu+81z6xfbqjfM4ro+ri/T7uFRRMxns/UwrId1KWW1WpdSp2laD+vt7S3bEfGQBz3otjvvODg4NOzt7z38IQ/dWCxaaxFR4LprrhEYANvXnjkDANeeOXPdNdeEZJBk23Zm9n1vmxdKUkjT1G65+ZaTJ08u5osbrr/++LFjtXaSJNlubdrc2Lz5pptf49VfY3trez2sz549e9111z3kQQ/ut3f+ZK8dY1rOtpQNkGQDIE3T1Hf91ubmfWfPHju2MwzDMI7DMIQ02ZIApOuuueZgcxPY2txoLac2rdZrcT+pZW5vb/d9t16vx2kcx3FjY7Fcrpy5ubl5tDySxBVSZm5sbJw5dcoms21ubhweHUniMkktc2tzczGfj+NweDSGdGxn52i5Snu1XmW6lLANZGbf95sbG2lzWS11HEdgZ/vU/hP6kzsnSuGWm2+57777Wmvb29uhsA1sbW2t12tge2sbmKZWSgCSAB3snQdqrffed9+s79O+9957d3d3H/nIR549e24ch/l8fve9977Fm73Z9ubGTGzWWFsrlZ/52Z97xZd72d1Ll8ZpAiSBMy0JqLV2tS5Xq82NjcOjIy6zvbFYlFJs80IJzL9RRBwdHZ2/uHfNtdfVUsdxjIiIsA0YA0KtNYXms3lmRoQxpu/73/qd3/7dP/6Tzc3NB91w/cu/zEsd39na2txsmdyv67oS0TIl2Q5pnKbM5AH6vg8pnSDbkjJzmiYeICJqrZkZkiSDAEjb9jRNPEBE1FptR0Rm2p6mSZJtLouIWgoSIMhMpJBsj9Nkm/tFhCSgtVZrPX/h/J/++V+/9Vu9zWq1vuOOe06fPnH8+A4vgp/9uZ95mZd68WuvuWYcR0B7u2cB213XZaakrutKKavVqtYqqUTsXrr0y7/268vVarGxUbu+1nL9NWde8sVerLUWEZJ4HrZtR0RmRgT3y0z+k9kupaxWqwsXd+2UZAMG8WyWhEmnJBtAItNbW5sb84XtqbVay3w+b61J4n62bUviASTxALZtSzKIZ5LEAxhsi2cziGeSxAPYNohnk8Rzsg0YxHOQxAPY5jJJmblYLB73+Mfffuc9j3nMi81m3ThO4zDaNgACAxgAgUEST33qU66/9vSLv9iLLZfLiADkXHOFzRW2QRI2YFAp0PFcPHCFjQRgc4XEA9kIAIPEfwGbCCg8B4H5FwgaJAgEJhOJ/8MyKfPl4cVnPOP21XolSRIvVN/3N9900+b2SXKNBAD6tV/9RZ5FXCGwASQA2y0TG4QQIEWEeCYDIABsJGwQAsBGAmMhns3m+ZIAbBAYACEADALABpDAGAAJwAaQsG3zTALAAAjxLzBgEAIkgUFg88IIjMQVBgwgYYPAIAQ2CIENAiNhwFwhYQNI2LwwAhAPYBAPZPNcJAwCG0Rm1lr7vpcEiBfGgD0M4ziNEYGRsNHW8S0uk5S2wWBTRYINAoN4PoxBQmCwAQSIKjXbBoEBEADGAEgUQMJcZgAkMaYNIa4oqGEbCQBjKEJosoEqEtIAElVMiUQBAwACgyQm2wYQmOcgAdiEKJJtSc02CAwBAiQMGAkDljTZAoONhI2EQNBMJyYQGGwkAJsQQEAzIQRImGZLAAagChsQGAnANggSABuDBGAjQGAAROEyCduQRsKAqSEbBLZtgyBNsyWuMAACISCEQBISdoIBqJubW4BEmkWhSkX04tzoeTALBSTYhDCkASQEAqCZye6kGhhsmrk0eaeqCAFgECQEVNGFls17kxsIABuEIM1NnbrQkE6w2Zt8rFMnJpOmCon9yc0cqwpxfvQitFEQjObi6FOd1mZ/yiIBBkCQ9k6NeTAZQxVFEgzpedHBZEERg9mfXEQz21VVjEkXLJtHkyAAbCSANMeqGgQsioZ0J9bJaE9mp+rckMe7aCagD0YjCDEkwFHz8aq95ilBFDjWaZ1g15DNpckhAANGwlDBMAuBZ6EQNglVNPMshv3JDQSGXmwVjQao4sLoEIABI2HTBSe7GNKAoIhm5qH95tFeNSQAQ4F50IUM9UzHZM6NmeZYH7fMI+FE1W9dGK/vy+lOx2qc6PT0ZavSaM9Ck71ONouOVW0WDcl+y/OjT3eahe5d56zo9y8OD5rXzaJjNbaKQlyafHHMvckbRRshiX84mM6N2UmT/aB5OTvkKp3wsEV3qotV+uyQ1/TxGxeGRy66m+blviFX6V66ptfjDtuty/bYzdoHv3F+ePhmd7zT2SFPVP3mhfGxx/vdKf/skjcLg33DLIbkwpijechcD9uol6Y8UePxh9NOVR86XnVudBV7k3eq7l7n+aFd18fd63y57W6z6Ch9omowf703XZiykyb7QfNy35DrtOFB826jcKLG+THXyVFybR9V3LXOa/v40zFfcbtuFN07tLODtwrbNU71mpJ1+mnLvGUef3RplOjEKnnMRt2fDF4UjeZPdsc+1OzNopN93LZqwPEuru3julkM6WM1uuDskNf15anLaZ2c7mKnanfKIv3t/nTUPC8cTH7Z412Rls0SvfR7F4cINXuj6FQft60acCLiNY7Xc0Oe6uLOdTtqPGwj7h1cheEv9saDySe6uG/Il9mux2qMdghdc/1pmwTDLLRZNKSXzQ3moU4kAAHm2QSGNBIBzdRgTAQhBPvNG6EimpEACiRMZrIXIWCVHo0AKCKNQSAA5kUBk1mnBX0oxLJ5o8gwJsaLosPJDRYhYLQ3iy6OPlaVcDA5BFCETQIQ0IWqMKzTvSSRpgqDAJjMMh2QMA9VUcRk0kz2aARAEWkMhs0iQZqj9E7RUbpKnShiMofNs1AnRjPaGyFDQoChE2mO0s1cMQ9VESLNZFZpABCEaAYIOFZjmS6iGUEIwzpdpT5IAwiW6ckIgFlI0IkGy2bzTIIQzQABIWYhQzOT3UmdGE0fjMlhcxEJndgoMmD0oAffCAgAQzOCEIIEG0BgAATm2QQGQGAQAAagiAQbAWCeSUKQBgghnskgnskA2BgkAgw2QIhmgBBAmhCCBECQporJCEJcYRDPZDDYACEMGMA8myDEFQk2VwgkxDMZxDOlMQhCNBPCYHNFEQk2EoI0gMAgMAAhxDOlMc8kETybQQAYmglhIwAMQAgb82whxDOlAQyCEA9kEM9kSCNACGwMAoNE8EyGNACgpz/p73kAgXk2AWAAxDMZBAZAABgE5vkTz2SeSQCYF0YAmOcmAMzzJzAIzL+OeDbz3ATmRSUwzyQwzyQwAOKZzDMJzHMTAOYFEhgEgEFgnklgAATmuQnMv0AAmGcSGATmuQkArVf7gMAgMIgrZCwADAKDAGTMZULGXCaukDEgZCwwCEBgAyAADIAAAIENQsYCAyAEGAMCwACIZzMIAPNMApAxlwkMAoO4QsYCwCAwCEBgAyAwzySuENggZCwwAEJgAyAADIC4QmCDeCYDIAQYA4DAIDCIZzIIAIPAIAAZc5mQscAgrpAxIDAIDAIQ2AAIAAMgAEBgg5CxwAAIAcaAADAA4tkMAqAO6zVXXfXvBFUSV1317wQBALZt27bNA5jnZrBt2zZgsG3bNs9JEv96kvgvJIl/PUn8jyeJfz1J/BtAjYjMnM1mXGbbNpdN09TV2lqLCEmttYgopdgGJNkGbEcE9tRaZnI/2/zr2ea/kG3+9WzzP55t/vVs828A9ejoaHNz8y/+8i93tncU6mqdz+dpAydPnLj1Gc+44YYb7rjjzs3Nja2traPl8vDwsO/71XKZ9nw2sy3p8OhosVicPHFi1vdpc9X/N1CfduutL/aYx+zt79/6jNtuuOH6YRjW63VEPOJhD5um6R8e97ibbrxxPaz/4fGPe9mXfulxmm59xjOOjpbHjx/b3d3NzJtvunlvf6+1duHChdd89Vefz+e0xlX/34BWR5emaaq1ZiaQmYCkUso0TYCkzLQdEREhqbUGlFIys5QyjmOt1U4b21z1/xBo/9I5SdxPEpfZBiTZlgTY5jJJgG1JtiXZ5qr/z6BK4gGciQQGANsg22AQGLC5wjZgGwCDwACIF8YgnoMBEFf9D2UQAAbxXDKJqCAEgI2k2mHzAG6TIpAAFGBa2sllKgWDQIHNMxmDINM2l6lUMAhBJgowgEECyGabF4Ek2/xXkWSbfyVJtvlXkmSb/yqSbAMgnKodwsNa3QzwNCIpglK9XqlWSvWwVq1EIZtbA8rWdjs61MGlc1ymCE9j279EBEAEaUWUneO5XnocgVweqdbY3I5uZqci2v4lIsjM9UpdB2CrFKLijNlCtdpGapcuqlZPo1srG5s5DIogAvA04Syb26qdba76LyaRGfPFdPGcx6G/6aHjPbe5te70dc7Mw722tzt78COni2fb3m5/44On3fN5sBcbW2XnOOjSb/70zmu+aS1/90fp1DTxyJcaVA7/9LfqiTPT0UGUUk9fN144e/y13mz9tCes7rqtHDtRto+Pd9+2+diX5djJ8b675g951PJJf9sO98tis568JtfL4Z47cr2c3fCgtneRiI2XeKWyudWODmLr+NE//HlOU9k5HvNFO3t3KlSrMpHK8VPjxXMbD39sf8ODc7VURERkpu2IsG07IrjqP0lmzBfLJ//d+R//jrJzfP7Qxyyf+DdM04m3eLd68pqz3/tVsbFVT17T9i62g73Fo1/66G/+KDa2t17pdXZe403v+YbPvvgLP7h6yj/U6SVfdWt7m9YOjo6OzWez137zqbXNre3l0aFg4yVffp3ZPfhRxx754qXrNN8YHvboVUv1s/6GB+U4LB79Ms4WXU/tcnmw+fAXq6HlcqlaPU1lY8vS7NjJvu/LK7zmYjZzqYqyd+H8Yj4jYrVcGs1qmW1uHi5Xnsbt4yfaOBweHm5tbkbXH+xd6rputthcHR1M0ySJF4Ek2/xfJMk2/7Ekt6lsHjv9zh9y8Rd+sB1cOvNuH3n2+79mvOeO7pob28Ge+tl47x2xsbV41Esd/Nlv12MnNZurVIBQPXG6nr4+Zl3367/263/wR3886/s//Yu/Onu4qlvH/vhv/vbQOiJ+8hd/5fz58zunTv/9057xO3/6F7/5W7/15Dvu3jl5ClsRXSn9zvHZidN1Y3M2n2+cvu7i0ervn/6Mxakz853j/fGThq7W++47+xd/8ZfnD5e//sd/+gd/9he/98d/vHn6zBNuv+uJz7ij2z6+ceLUnZf2f+IXfzmjlIif+7mf/YfHPW7n+Km//fu//5mf+enFYnH+/Pkf+7Ef2T846PveNi8C2/wfZZv/cLaieFzf+y2fP3/oo7df8XXv+spPmj3oETuv/ebDHU9TP+9OX4+iHj+1fOJfx2w+f/iLLR71khd/4Qc8jWXrWDl2cu93fr4sthZ//Kd/8ld/8zeHR4ef+Tmfu7e7+9CHPPgN3uRNb7z++h/6kR+58847vv+HfuhN3+iNnvCEx3/Rl3zpn//FX7zCy73sNI4bi4Wk8xcujMP66PBwGsd77r13Vutdd931a7/2a6/08i9/2+23d7V2XbfY3Pyqr/maL/3Kr3zsox/187/wC9/6Hd/x6Ec+cntz8/0/8IOe+tSnvu3bvs2tT3/aJ3/ap7dp/N3f+/0/+bM/+4d/eNzv/cHvX7xw/kd+/Mf29vZ//Td/85d/7VePlsuf+bmff8PXe32FuOo/njVbrJ7y98Odt5bN7fGe2z2NkmJze3bTw4ZnPLkd7m293GtMu+dzdXTizd9tuOf2o7/9k+Nv/E6zBz18/dTH7//Rrx1/k3cqx08e/4SP/Zibb7ppHKezZ89ubW9l+uLFi4qotX7lV3ztox/x8FLLy738q+zunn/d137t1XL1GZ/zuU97+tMf97jH/8AP/fD58xe+4Vu+5fixYz/yYz/+q7/xGw960C3nzp//yZ/52d/87d/6nd/9vdd7nddZr1a//Gu/+sqv+Irz+eI93+Pdn/q0p37ap37WF33pF7/1W77l/sHB67/e66+Wy9d89VdX6Pf+4A/29va+9Zu//ex999x5152f/Rmf+ZSnPOUZt9/2uZ/1WV2tv/v7f/A2b/WWkrjqP5zkcehvesix13rTxSNfcuPFXn77Vd5g4yVeoRw7Gf1s6+VeY/OlX3X20EdvPOZltl7uNbszN2w89mW2X/n1Zzc+OA8PNl7iFTdf+lW3X+0NA3HrM57xvd//A7/9u79z3bXXjuP427/7uw9/+MOy5cHBwbDa/4M//MNhGIDdS5cuXLjwgz/yIy/22Me01h73hCe8z3u+x+nTp1//dV7n9OnTCt1+xx1PfNKT7rr77t3d3c/69E8/Wi7vuvvuu++55/d+/w/+4A//6Hd+73fvueeeYRjvvvPWP/+Lv/zDP/rjn/35n//Lv/jzY8eOfdGXfdkf/+mffvWXf9kwDOfP3X1x92Ip9ZM//dP29ve/9Au/8Eu//Ct+/hd/8Su++Itms1lmctWLwDaAQCAQCAAJQEJCQjxThMchl0fOzPUqV0duE7bblKuls+XhXq5XbmOujnJ55GnI1ZKIPNzrH/SIXC3jnd7+7X/sJ37y+PFj15y55sEPftDNN920v7//ki/+4i//ci/7iIc//J3f/T2e/NSnnj51CvLM6dOnT51+j3d71zvuuPMlX+IlXu5lX6afzba3t6677tr9vf0LFy4+9MEPvu+++265+eYHP+hBkm6+6aZjOzuPf8IT3vHt3/4bvvZrtra2Do+ObrzhhmvOnPmOb/nmN3yD13+NV3/1Rz/qUU9+ylOefuutkn72F37hzd/0TT70Iz7y3nvvu/mmG5/29Funafymb/3WJz/1KRuLxY/8+E+sVquI4KoXwcZiERJpJUpklMiQFiittNIkMjJKY4RkhIRkCQSAjAghWUJCGElKi5iHatcpp+W9993X1W5jY9Fak2Q7JKTZbHb33Xdff/314zi21gDbG4vFXXffvb293XWdbcD2YrE4e+7c9tbW1FotxbYkQNLU2qzvay2r1TozI0JS3/eSxnGUNE1Ta21/f7/r+jNnTt999907Ozvz+Xx/f//w6GixWMz6/tKlS13XbW5uctWLoJbyx3/2Z/devKCQQQDYliSUWDxTKNIGA5IA2+bZBKFoTgFgEAgh0hbY7qO8+iu+kvZ2z3ZdZzszJdmWZBuw3ff9MAySAElAy+y7rrVmW5JtSZnZdd00TZK4zLYk25Js244IwDZgG5DEZREREbbHcez7vrWWmaWUiMhM2xEBtNa46oWyvbFY/O4f/MFB9Yu9zEvOopM0tUlSLWU9jkBf63oaiyLt9TTMuj4QMLQpFCWiliIAbMY2radha7aRTiAiptZsp3PRzdKutT7jtmc84c/+ukZEa43LbAO2uUzSOI6SJNm2DYQ0TROX2QZsS5qmCbDN/WwDtgFJtrmfJB4gMzMTiIhpmgBJmZmZANBa4z+HJNv8K0myzf88ilgul/dduviqb/x6P/QHv3Rm6/iU+QoPeeyFw0tPO3vndTunjsbVrPYv+6BHXTjcO7m58wdP+ptXeuiLPeHuW286ee2lo4PDYfXiNz7095/0uJBmtV9Pwys/9MWfcfbuS8uDB5++/mi9+rs7n7oz3xzbdHr7+MHqKO1xGt/45V/jjqffVnkR2Ob/KNv869nmfyRnzvo+p7a/t/9aL/4Kq/UqIk4eO3bYVg+7/pabTl5z58Wzm7P5bD4/Vcusdi//8BcbMm86c/3xze0zx09eWh4sNjZuPnNdiRJSOueLxUOuv+n2C/ce297Z3tpqhY1+njawPW5v9LOxTRGxe+GCDvbOc9X/FbZns9kznnHbH/3tXz78MY8OhfHYppBKlKm1WortoY1Ctmup6SxRMtO4REyt9bUDjIWGaQypljq1JlGjppPLQkpb0tOf+rRrt47pYO88V/0fYns2m124cOEpT3sal0kCbAsMgCQAsC0wSAJsS7LN/SRhGyQBtnkgkS2vPXPNwx76EO1fOhcRkgyAwAAIAPNMAvNMAgMgns0gXiCD+J/IPAeBARCYfx/TsoXEc4oI/pPZrrX2fc9/AalN0+HRkYbV/uroKDMRz8EAiGcyCMxzEBjAIAls81wE5t/LIJ7JIF4kBoHAPH/ifgLz3IQAAyAwLxIBYKJoY3NzNUzO5LJSCnB0dCQJzHMQz2QQAAYBYBDPZJ6DeG4GQLZt85/PuJaytblV//Qv/+qO8xcMgEAAAnM/gQBkLAQYCwCQBCAztqwlAITMFQaEDOK5CAkMABgkAAwCQAAWMi7QkEFQIHFDABgECAwCAyAQDtRwcoXA3M8gZJzG3E/IBiUIEsxlAmNAxkI8k0FgG/EAxipx4dzhsaq3e7PXUxTbpZT9/f0/+bM/r7U35v8KSeM4Ht/Zrrfu7r3Wm73lMAwhAosQMggDwkICEJhnEiARSGAhe2w5q9VgWxgkgZEACRDPZBBCYBCYyyRhDIAAXACB6WCChAIzYzHCiMwzGSQwACJMjwOWMALmuUw2Akg7EZc1LDAYhIxHMBIYm2cSVwhsABJANhYG26WPJz7hwh/+wi8/5klPermXeumDw8PFYvE3f/f3L/mSL3vLLbfwf84v/tIv1Nl8UQzDWlGMDYCQsZBBABgEEkICJExiC4FMFUdH61JrkQQCAMkYAwIQL4oAoYYbSMYaMQA0SCQQDjQCGDAymGcSDGAcCGjY5oEMhsQgQcPYRg0E5pkEIINtiyvMsxkQMs9isImo0dbHjh07XC4lGexsrR0/fhzIzIgApmmqtQLTNEWEbYmIAtiWlJkRAWQ2mysk8T9GZtZajx8/UclWREgSIEAgBOIBQhTEswiQoEqAcZ3NP+dzP/fk8cXHfcLHT8PAsygAsCQDIBuJBxCXGQlDwQCEMIAEgMDAxBUSEgYBAiODkAEsZAwCCkYk2AYAASCUGBTIOHAgQGBIEBgMKRmMBAYBYBA2IABBQEDaIQmBQ8EzSdLUGhARf/33T7j+2jPXnjl19913T9N08803c7/lcilpNpsdHh5ubm7u7u4uFovZbMYD2OZ/BklAa60KAIGQeD4EIQkEWMgARhAStiFb60NyBuoj1q1FKQIBdiAEmGcSBpSyQCAAIwCBASwMAsAACIOMhA0YG8QzCQvZ6UzAtqKUICEBFIAwtjEAAUIJAksGAzaScFgJIOGAhCQBEWCQMJcZGQsECQEFSEcgADCAbfFMx7Y2n/C4J1z7Wq/2x3/yxwcHB+cvnD99+vSFCxfOnDlz4cKFCxcubG5uHj9+fBiGvb29jcVGqeXGG2582tOeptArvsIrvsorv0prLSL4HwIqSCAkHsBGCikQmMsMEiEFGCScRK0R4ZYzOHb6zMMe/pAeulJqhDGAbYwNmCsssAkAgc0LYoEBEGkAk5YEAOKZDALbXdctSjEEJAzLpSLWMOEKhkQhDGmnLamXMCNulnACtgEsCLAxFCjIYFkANs9kbDAYikgRIFsSAkA8kwRk5kMefPPWYvZbv/6bL/ESL3H33XcfO3bslptvuevuuzY3N1/6JV/67nvu3tjYOH78+L333nv8+PH9/f2nPf1pm5ubL/ZiL9b3/fFjxwFJ/M8BNSBAPJtQhARCti0EAkEIwABkuuu62++462hvbz6bbZ84tjo8bOP60mp5cHBYa6m1liiSokREIIoCQMIOCclGwkaAwEYCsG2ukDBgC2yQbWwD2ABgY+dsNv/bf3jCd/3AT5Suy2l6s9d51bd4/ddardZ9COhQwBIMkgpImkGHJxFohY0KKiAEgAdbgQ1gEOJ+xkIGMJIBGxRBDXWl9l3H8yOpZZ659ppX2XmV+WLx8Ic9nMte+qVfGgAe85jHAMCjH/VoLnv1V3t1HiAzI8I2/wkk2eZfBSoSEhBIAhAIGSeWCAhJPJCcbTab3XHXPf/w538Zoo3T5vb2eHh08Z57/uz3/3j/4ADJ6a7vZn1vqZQSIVBEIPpZb4Tdd52h6zoh4ygRilJrhGqpCtm2HRFRQqjUIii11lIVighsKSS1bLO5/vKv/u47vvlbZ4v50bmLJ7Zmb/EGrzOZTlpIaTmzE4YxbQFuVh/q7CqM1iZtSVWEPRcH6LClhQCRtlFI2KBmG0J2mmfKTAdIdF1xmmcyDxBSZs4Xi8y0DUiyDUiyDUiyjcBERGZymSRJtvnPYZt/LaiCgCIVCTA25rKAkMSzCYRwdn1//sLuE//mb7tQP5977q7rImIxmwfMa9daI6SW64PDxLYVkZnr1Toi5vNZy8RM09TVulqvEW1qs77rur5lAqWGpGFsLZvToFJjmlrtqtMRoQjstEstXe0y0+Lk5vy7v/HLpnEybO/s/Pyv/WbfVUCmTVPUulou7VTUhlvLxWyW0zjv+/V6PWZO6ajV2QS2lR6mUdEtV8vNzc1SyjiOtdR01q4ul8sSdbVaSdTarYe1bacXi8Xh3qXNm16MKVfLI0VggwDMFZIk2Y4ILrMtCQAkAYAkAAFEBP/dJPF8QQ0IrjBISCAkLIkHCCwEWWu9tL//13/65zmMfT+T6WpRxMbGxubm5jiOmQkupWZmP+sjYhiGWuvUWlerFLZrrZY2ysY4rDfqRiimNtUopavjOPa1k5imtrnRr9YDuK91aq7RIiKVGDIJtXGyWa3Hrutam+azebexCUTRarXKYTxarbrarVarUgpiGEeDPAr6vtu7eLGf9aujFVLLnMY1aFiPXd+lc2qtRhHrYbksrU3TtLGxsW5L45jP1/sHx3a219MwtVxPBxHRMu10jRzXobJYzJ17PAdzmW3bQMs2jmNXu1IK/7NJOjo6kgTYbtm62vV9DwBVSBBSSOIKgUFcJggQIKVdSzlaD3//V3+naaq19rN+GqdawhHzxaKrtZRAvcjWWimltczMruuAUkqbWojad8MwBmTLNPNuNuUUVqm1i9ovuqlNXe0y132tijg6OgI25jPbtiMCmJySZl03tZQ0tanUMrYRubWWmbNZ73SUaqh9Nw6T8WK+WA/DMAx93w3T0Pd9iRJ9tJY1atfVaZxmszlQu1KijNMUpWztbEtaLVdHq/Xm1gZgmC/mUerGxuYwjW2cgLS7WmvXnTh58van/N2v//qvfdwHvSPPQYDtpz3j6cMwOFMRG4tFKeXmG2+2zf9UtiX9/T/8/V//zV8f2zk2m88wZ86cebVXfTUAqMIFAsQzCUCAQACGMMauirT/6s//8mD3Uj/vh9V6bktaD1PtotRuvliUUrONs9lsGAZDqTVbK6WO01RrN+t7yUalVGGbftYXKVrUVjIdRUCp1c7ZbBYhk1uLDYEzFaq1c2bLDGSoXRelDVPb2dpOJ3bt+vV6XSOmNlGUJmp4ou9jmkaLUkrf9aVEiW6a2jS1UsswjJubG0eHR4uNeSnl6HA5n29lawZgsre3tgSSQgKyZe26dE7ZailFIcXUpqlN4RLE8W46sdVPUyLxLOKK0ydP2QbSrqVI4n+DWuuLv9iLl1LGcWytnTl9hiughhQQUgghYR7IBowDFwWKv/jzvzzc3V0s5uM07uxsl1AppUQMzTVqQI0y35m1KfuO6MowDLN+DooI466rtZTVMISi78swTEZJOhO762raRUTIKYxtrPSkiFKrxDgMpdau76ZxUi3OTHt7c8OmUqQYhmFjNhuGsdZORcvlqo0utU45dV2P6fuulRIhoKCdzY3VajWfH+u7Llvb2txaLpdbW5uZmfb21ub58xd2to8Nw5j2iRMnhmloUxtymIaRvislMFFDaDbfGNuUUztarm+46eY3eL3XKSWwQTyApOPHjvOcbEuyzWWSeMFsA5JsS7INAJJ4HrYlAbYBSYBtHkASz8m2JACwHRG2X/ZlXpbn1ForpQA1Mye7TaNqTRMSyDgkICICSQpk8fd///iL953d3twqXc2lF/NZa832YjH3eur7bjbvF5uL5jT0s8U4DEWKUGbWGuM4ZeZopJimyeuUJKFUKWW2sahdNwzjNI0bG/PVapCiq2UYhiil6zsU0zBsbG6WUtbr9Xw+bzk1xbwugFqLpHRubW9hb2xtRWj/4GBjc7NNE3amu5mypSK6qLZXq1Ut1bakjfl8ytza3gbXrmwsNpar1Xw+G8ZxsbERhTAnThxbLldOdo7tXDh/YaPfyMyuq9M0SYGYWutqN6a3NuZAmyZJABgQ4jLb0zRxP0nGQsZC/CvZlsQLJck2/z6SMhPITACIiFIKANS/+fO/mo4mybXrSq1tmkJRupqthQKBFBGINrZpvd7Z2Z7GqUJXamttNput12twSJa2trfdUrjryjRl39cIZRIB0HUdWKE2TNigTN99791/8sd/cur0qdvuvHt1tLzmzKljx09k2gihCNmZjohhHDFRQmDAKCSRRlJIkqbWaikHe3t333vv8ePHzpw+ee7shZd+2Zd65MMeMk5TZpZSiso0tQjNZrNa6zAMEWW5WisUpTgNMU1NimG9TlNrLbXM5/Nxmvq+396aD+P62LFjzpSEiChtaohxnLqutr43zPvZfDGXBAbxAJK6ruMFsM3/VBEhiQeYpikigFpFwTZMbVgPs9lseXRUu67WslovI7ReD13fbW9tb25vd6dOSJqmqe+qpHGYuq7MN+ZtykUMly7c8xd/efjyL/PiJhZ1XtTWwxilTNO4Wq0kaq2ZDXs2mx8cHg7Dutay6Ls3fsu3fsatT//TP/vLN36D197ZObaxsTmOo0Tf96vVehrHru8yXUqUUg4OjjY2FjKWIsLZsrW+7zNzaq10dTGbnT179vTxzd/5oz9/5MMf/mIv8RJFrIchpJzSVZaaWzb6rp/GUYFwmkqMwzBN02KxmFrL1tIupYClMEzT1Pf9MK4x8/l8uTyKiOVqmZnz+SIiulolaldriVoraZ7JgDE2kJmX9i611gzYs9ksMzNzPaxPHj85n89t8z+DJNvcT9I0TU956lNWy9XW9tbGxsYN198AAHVjc2Pn2LG9vUvzxXwYx66vtdteLle165CcbVEXd91972133nnDzTdLilAppetqSF1XNCiidrUS9fVf99UvXtobo9vc3v6Tpx7N++5lH3oCad68MWVrJmTjzFLq9tZ6HIZxHK+/6WFPufPib/3eH7zV27/tK7zcy66G5ZCO0u0cO3a0WrXM0nVGqHZ975xauutnw2qF1NWyWg1dV7HH9boKkbsXLt50+roXf6VXPX7zQ/78j/90ceb6x774S+S520eVmJeQxmnc2tgAJUSUdLOZdR1yP5sNq1Xf9yEZ2tQA8DCM0tj3s3GYkEOapkkqteu3apGUZhzGnWM7y9VqGqe+X0SEIsQV4gEk7R/sCxnsnKZJ0jhNBwf7G4uN+XzO/xi2uZ9tSU9/+tO//we+/9Ve7dVu//Pbjx8//o5v/44AUMdxApweW1PEcrmez2d937VpbFN2tayGYTUM6/X6tqc/fb1e930Pymx2KyXaOK7HsdYOorWpljKslzYXjtruwfrJJzY25gUcUaQoNYYhVcqwGm988IMf/nKveezYYlbj2Frv/rGf0i227kpawSjM+aN0zoepTcvM5vXY0Dodsy46rZrVBVNOi75rRzTH4I10dMHpMye6yoH96Fd9vete8lVoOfYb5UGPznWe2Z7f89QnnL3rzo2dY9fedAsYSVIpkhBCsTi2VUqJUtrUSgmQbQQmM22XWlpmNgsl4IyIltSWkxQbZaN2U5pxfbB/KU9tgng2AZIedPODbEsCMhOQJAkAJPE/1Q033PBxH/NxpZT6GnWaJtuSgCohsbG5ObapKOqsm6ap1pqJlF3fTdN4/ZkTzp377rv7mutPPe7v/qFKfdeVWpuoJeZRyCmiuGCPs9pFLTvbtZ3xMLZsU5um6GtmrpdjS1a7FzdPnblvmm/sr6q6o1XL/mQfurg3Tc19iRIcDA7VSYhOaLBd3XflaG+sB9Pmoj+7Nxw7PqvzUkf6Slc4WOV69JTeT+3My84stnrdcu2c9Go5bE6+Z9KTnnH+vjvuvvdpz5h13ROe8ERJtVZJgESJopAUAtuKEESEJBsJSaWEMYQETttd12Vm2pJC6rrOgN339ey5sw+55ToAzHPKTMA297Ntm38925L4z2EbkAQAmbm5ubm5ucn9WmulFKCGCqCgV52mFqVGlOVyNZvNtrcXw7A+dvz4ce1ExO5996x3zz/pT/643XfXxmIGaVuBMycnCDBqtoWRrfXUxvl2f+rU6uy9C5xRchhO3HjTS7z1e3UnrrnmwTfct1xpNhsm7zdrq7aWA75mEXX03Qc5JgVastn7kSdrKbGce7iwviSfXuTEeOzYwmO777AdjGz3NSrZfDZ1536sd5lQQfOuzGu5ZaN5q1tNnbduecij9Ye//DPzxbyUKhFRQrIdERGhiJAUkiRFhJBCIQmQJMm2RAlFFNtIISSFBDYIZv3saPcsNs/Dtm1JtrmfJC6zzWWSbPMvsc1/DkmlFNuZCUiKCNuZmZnGoYgIAKjzxWJjc3N/fz+iRMlxGvvabW1tAq1NtdZaYhiGjZ2t+WLzj379lx/9mIctrtmczfsigY2dObUppJbOzEzbmZnDOK2Hsam0ro07sypPw6Sd7Zd45/d5xnjsES/2Evetl7srO300GLszZ2Z66dPd6UWcPRjv7fWk88MTzjecqxp/fTgcTA58jXjQhmNWNo/N98b14+5dJ9rplEc+mFiNvm+/KQAlMe90GGVzFm0qp+CVHrPzD8N1W/vlzLHjf/RTP7S1s+1sthzKOpvlGBI4JIWahVQLkgRGQImYMiVFSCkH2EYlytSmWhSCpHQV+9L+/qu92qsSwbMIQFJEtNZKKYBtSeM4SiqlRASXpR2SJP6btGzL1bKrXa0VmKbJ9jRNi8WilMJlU5uCAOp6tdzfuzQMQ+0qKPA4rIzm8xlomsYhXEvcese9P/nrf/agjRMPfsTD948ubWwuSkQpAcJubSolCGVrTqVzam09jGNrxQzjkJtzS4f7+y/3vh/7hMP5mUe9WDfHI51ZNjoh2Cz52BP9i53qnb5mUV+q6patw4WOJtfD9bS39kucml+7VVrLm3bqZl82Ow1TvtiZ2anNbmtW0kh62rmDb/+Du88dNElD08ZWN5qDlfZ2vbsx26C95GOvecbj2uu9w/sca6u7//7PFps7bWpRQ7Xv2qAIoBRhxpYlQpKEwCCDWE+tllJCzkQg2SjKMI7zvovA6a7rRZ67tFlCmGezgalNt99x+2K+qLXW2p27cG69Xm8sNra3tvb292y6roIy2y033VJKsc1/B6Gf/4Wf393dfcVXeMW//pu/vvaaaw8OD3a2d+bz+cWLFzPzwQ968Mu8zMsAQA3lRl8jm7CCqGGHM8OTTSmqYbe2NZ89/IZTOriw2NgYZxtdnYGBEAKLrhREujScbcJILkihUoudy729h7zmmx9s3dDGfNhDr+1Zjopqr6c8WE/roY0dmfWJF5c3bvbA39x+eGwWr3rT/PT27Gg1raa87th8ViSzTs9CRUzSsbFdOhrOXRoM5w/HJ9xzOK0HtVxOzmRxLJrZO2pR4s6zQzLtezp1fPPJf3X3q7/bB/7ut+6Nu+e1qF1QSoFFKWFTSkSoTVMpRQgRgZOQINfD0Hc1IJ0h2QCYsXXzfmYSU0pExDQMoQDznEJxbOdYRNgGHz92vES0ljs7233fr4e1FM6UhPjvImmcxpd6yZe68847NxYbN95wY61V0ku+xEteuHjhrrvuOnHiRMvGFVD/+I///K67zoK6rislIqKUUkuJiFKKs83m/cbmRimlTofHjm10JUrUKB2YNDjldBsTp6epTWYaM9NT0zgZnMk4DPMT1173qm/4hFvvfsXXeM2Nfn046OIyLx65z3ZNx17GPNySX3rC7nZfdjo//r7VK9+y/ZI3bPYR/WYvKKGDYeprmXeltTQK09d6eruU0OFqvPW+/b94+t6qccvxxWjO7o/POHfUSQrNZ11x299b33dfnHzYif6aY0/dXb32u73Pr37j1xRFKSVCoFICR42i4lDpapECLEg7JAmpzPpOME2t60qmAZk6TfNZNWBqiYjYWKx5LhIQEadOnuL5mfUznock/jt0tXvkIx75yEc8EnjEIx7B/a677rrHPuaxXNZaK6UA9e/+7h+e9tRnIIUiSmCDJIGBzATXEqtxunFe3/KNXiPTAijCKE22iTbR0pluKcOU0ZxT8zg5baPDg6OXfat3v/P8pWM3P2y+GZF58chPuzCe6GK7Z91YT+2eS+NTzx1EsppNp84sPvxVb9iZV4vl1PYPx8w8fzTurqbVMF13cutR12xka0PL1dAuHI0nNmdIr/qo617s5lOPv2vvL5+xd+5wmnVlY1bGKceWtbXtedk7XF28FPecPXjoo2/869/6m+3rTl73sq9y1x//TrdzzBhkQqVYCoUkCCkQIWQkCaIgVUmEonRESiWgsS5dj5WZtS9SdLO5eT5sT9MkiefHWIgHkMT9bEviAWxL4oWyLYnnx7YknpNtLrPNCyZJIQCoG5tbJ06cBkClBkaSoLVWSrTWwJLqOJ7e7Gf9zAhku2XiNKQ1NBdIaxiGcRiGcbAxGttE1DYN89PX+/QNsylf5aUeuszlnUdtLq5f6OLB+q/PN0kid2ZxejF/1Mn+pW/cOjYrZB6N0yQNw7R7uLq0mv7uroO/vuNw3mnz2PgSZw4ftFNKjaN1+7XHnX25Bx+/+fjsr+/ce/GbT7zly9xww4n5n966f/5wvGt3LcW817xSimrVfRcOTx3vz++tH/HSD/u7P338m7zBm51/yuPHw/1SO7nVUE6j5YySEKWGItMUSYCiRFhRCxBpkCiAQlFKRDEIIgoKJGyeydxPUtd1vGhs80LZlsR/HNulFCAzI4L72ZbEZba5LDMBoNpKV7ChuDa3sEK0dERkNlCJaFMmiq5vJk0aG6yEdBplpt02T52cHT9Zt0+WrZ1++9ju+fNP+e1fHfb3bnz511hP4xu+6suc2tLT9stWZd7pmnn5w9afWYSn9eHhcrvnVW7efJlrN1etrcbsxDqtYHvRP+W+/V9/8sUkSi0HQ+baf3Lr/h9N666Uh53Z2Jz3jXJh2W48vvGMs4dF5TE3Hj+5PbvjwurPn7EnxTPOHR2OWdu4vSh52C6cP5r3esQtOzvXn3jKhenmV3vDf/jJ7z9z3bFTL/Mql45WfRu8XNZpnYeXvNyfmm0sjLBzWGZrzq4orFApmRYkTmTJiJCjCKWxQVwmAAPYPjg4QPRdn07boNamiAgFgGQnkJnz+byWapvLJAG2JdmWJAmwzf0kcT/bXCbJtiTbkgDANg8gyXZELJfLw8PD06dP7+7ubm1tAVOb5rP5pUuXMnN7e7vWCmSmJACoCcY2dja7tUxJUktHy2lK5LSnKQWK0prTTjAYbJrJdNbu+Gu93bRz/a1nd++4d/e+2y9euHRbHt37KqWfnzy99ZIv35V6z1iefM/5iys9eKs7Pit3HOQdf/tn/f59NzzoQbOTN59YdDcf64fWgFJUYHPWNXjGub2/v3s/7eUwbi7KbFHDq3TLWg/GfOI9BzNNf/2MIc2DTm3ceGLx93dehOM3H59fe2zxyBu2n3Lf4b27R1hFSURX2ds72t7Qhb1u68yx3/zVv/6wd3j9g9ueeufj/u4Xf+svzp2968SxE6dPn77+9KkzN958ihVP/9tpHIPo54tutt1f/6DoZjmsz9xy8o6//Iv17gVqFS6SU+Nk5NaMWqgMUxqDeDYDko6WR7uXdiNiag17NpsvV0c72zsRZb1edV0XUYZhfXF398G3POjkiZO2JQG2ucw2YJvnYZvnYRuwDdjm+bGdmaWUP/6TP/693/+9F3uxF3va05526tSpo6OjWmtmXrx48dSpU8vl8vTp03ffffdLvMRLvMkbvQkAVAzIpCFNpsGSWnOQU05CmNY8TS1RZk6taWq2DTZpxmHcvuHB3/drf/D0J/z9ouuWQzu/vz5sZRzWN97st3+v9zjx4Afd/dSn3vbEJ42ejo4On1yKS710sFr9zW8f7F+8pvdjbrrp1BbT2M4PY5Gm9Jg5Zhyu1vtH60ec3Hqp64tMDSICKIJQCUV6/+CgRbdKVmNud9xwzbytlucvTFG0GrOOw+s/6sSUHsdpmNp6rXGamtf14u7RxYOHX7dzYlHe4D3f89u/4PMf9/t//0ov9fDtzQ378MK9B3//t3917XXXvO61x5b33Nst6mKa6mJ24+u+u2YbOQ6nd87d9nd/M4wp2c21MDTUDGotQxHh1gzigSQuO3P6zMmTJzNTyLbtruvGaRQy5jKhG667oZQCSOIySba5TJJtHkCSbUCSbe4nyTYvgCTbgKSIAF7sxV7soQ956N7+3su/7Muv1qtZP+v7/uy5sxsbG7PZ7OlPf/rW1tbLvczLnTx1kiugKqRQOOwsoRSSuEwRQm4t02Cblh6nNk6NZts4gZZuaNw7/6DYL8em7e3ZYmNjNr+mlqA/+Sov89hXfJM3yjq75cyJ1UgrZXSsprZV2Z/82Fd97Sjd0Wo9DOuL6Qv3DVEIAEmY1rJ2tdZ5tFAtargZC0FRDGZSlhOLznbzRqhZ+y1TbS+Ro4jF8Y0dyTALUBOcmNHnODbDtbNgsbkYdzY+5Eu+5BX+7K8e91d/9ZQnP21qubGxcd2ZnQdfd3y9f2FMK8nQaNal5Oqo1G65HtuULVPNJA23lq0JqSVjy2INU+MFkNTVjgewPZ/NeX5scz/b3M82z8k2l9nmAWzzgtkGANuA7WvOXMPzuOGGG7jslptv4X6ttVIKUA8Olyr7YKDvutZSEKJN43K5bNM0n8+acxynaWqt5TjmOE1MTRicVqYbcXjp4JpZN7vlhnFqY2sXz519/bd461d7q7fbV3/b2Gh0Xe9oq6EN6b6WezMSr3aPnOoLs6p5H9t97ySN7Uxa+mBqy/SJ4N793JlpXjWrRXJLT+mQ+hLFmnX1YFoFpRCzIGYxpFtqdEzpVWOdFCHsUu448Hze1555SGK953UC2zuv+Pqv+tKv8VK3Pu5vf+sXd++982HX3zgfp8O9g7TGYVpPU7fpaT0ZZRtaaakYpyyRNmlay7GFYMpEpGMc0+Z52c5MXmSSANuAJMA297MtiftJsg1IAmwDkgDbvGCSbAOSbNvmfrYB2wgAI8l2RJRSAKC+4Ru82sMe+oiD/cPVej0Mw+Hh0dS8f3AwDuOp06fPnj37D3/3uJ2trTTrYViup/XYVuOU3RgAYZyZLZ2eduTTGxvanK1Xhw96q7d78Ou+xZN3V43WwaWll+PUy4sS23OWkw6GfPSxuPOQc0fZhcYpW0tgOeThutltGnNML8f28FN1fqZ/3K1jVRZRixZVw9RWY4bUFyRqMCt57fH50+45XMzrosZkBRglUUscjSkURa3l1iyGjY3Wq0phNxOKRpkyu1oPNh7+Cu/wEZd+58f/5ld/aV1qAFIbpgm6bq75poeJEqXvjMeW2dKmhMbMmFKKKROcobEl4lkkcZmkWisvmG1JvGC2JfGvZFsSLxrbkmxL4gWbpikigPpWb/WWr/0arzVOo+2xZcF9pU1Ta5Si9Wr1vT/0Mz/2kz9/4e57vHVsNY6r9TgMI3USRATQMqdpKqWsD4e9vcP9S3vXPebRF65/9T/6sb/qh93rzmydPrVz6uSJfmMrum6zan+dbh6O/LSxdWJYtf2JKZtbZuaJOQ86rWOLfla1eziO2dnOsT3mZG5vzLqqvsasSkQthBimPFy3ey4cjGWD1rZKu+Oeg9baevLQsqX6roQYM/oafVcODpc7G93NN12/Oa8jahmr9Xi0v79//q79+26/eM9Th73z29ubb/KGr3Ps9DX3PO3pOyePt6kFvmRWexf4i9/CIjiI83vnLjaT0wRMGTk5aKg1YytLG6aGeRbb2MDUposXL2bmar1qrdVa+64/PDrc2NgchjWwvb1z6sRJ27xgtvnXs82LzLakw6PD3/qt33r0ox8dEULrYe30xsbGOI6LjcWNN9wIAPVH//q+PxrvXB4cXLvd3bQZR833HnredzuLUqpObXYf8CHv90qv/PJf9MVfcfD0p0/Jej1MU8Y0SVKmUNqZaZC0Xi5f8nVf++Hv8oF/9hdPP3/nU/YuXviLP7tkt+Ob8+uuOfbIm697pZd6+Dz60fNtLU4uFtfvxKnZ8nA1tcb+ym55ap7HFzHltBX12jN1arlet73lZK26Np29uM5GV7Uxi66olhimVLZHXrP55094xvmjdVrbQNEIo6YLhxOTdo/GCB0S2MY3Hb9mfXBw6ez+cve+S/fddvHe287e/YwL58+GKHV25prrLu7x47/2J2/7Tu+/8Ss//vS/+avFxpbto4jDe++8+LPfSkQgMEQpak4kPGYalZCa5ZaZHsYRzP2EuEySIsjs+95pQNLGYiOkWmqtdWtjk/8xhvVwz733HBweXLp0aRzGdB47dqyUsjxa3njjjTfecCMA1CG6VZ3tsXrLR558zJnF088d/cmfnX/GHYdv/Njj123OfuZpB3+/d++bPPIxX/xln//5H/kxFy8diBymxjSFJIXApmUGDOvhUa/1mi/1fh/x9393ez335Je/wdx4ejkeay2naSrkwe7df/93yzd8zZdbrfd/58/+7NJsoVuue9iDb2iL9dHo1ZbWkw/X3h0yzbmjZTZfOGyHq+bWangcVpljLTFNbbkeMm0CtzPHuvv21st1bi66nZk2ZxFytja1WA9xsBoPl1Nr0zjm4dHS+N7HPfHO25967523SwzjdP7SYZlv33LLo2664dqbbrzh+IkT1157Zmdra9bHa73He5daH/eXfzVfzBinrtaun4GqTMS4HltrmTS7hFpmtnTa0mzWZcupmQcwBgElyplTp/mXSOJ/gBMnTrzHu71HRCBCISkixnGUVErJzIgA6jRMJ+bqNuvBul08Gm88uXjsdbO7DvJx9y5PbpRXuG7+Z3evfrJdfK0HHXvfj/2I3/zl3zq8eHH/8GBOzGa91KQAWmsFDTU2X/kNbrt77M4+fWezXy2PxmG5GRGdFsc2+r7b2Nh4yC23PORhD7106RJ/8Cenbrip7Fz3l/dA2bh41JRtbFo15dScrWnjcNkm1KZxGltfQ7Cz1c9mmoZhlhaKoAvtHS3v2avHdk63zmOvZWU+6zYXXYS6qlpUQ518uJwu7h1euu+OO2/jqU/4y+tvfsiLvdhjt7e3zpw6fc2Zk+Ow7rv6oJuum/elTeOlS3vNvvO+S+vrHnx43YUHv/yrb81iaz5b7+8NKcurS2ePzp8rpkQ7OlruHy37Wd/35fhidnjuwsV7z88WG+NkI56H7cw0BjCSuJ9thBD/5STZ5nlI6vseAGwDrbVaq23btgGgHpv7qfcdHB4cPfHe/Re/fuP0orzKg471oT94xtFvPHn3Za7fuH7WpuXwl7flyz38ZV/xDWe/+N3fdssjHzG1duG+CxEhAXZ6nMZ2+uTpxaLt3/cnf/kH9971DCke9ojHDOv17t7hgx508z133TPb3LrzGXfde8999148eOI5//XTf+fCubO7R+Mwtf2L54/3ns9KpkFpU2el9hvzftZH13U1YmpTZooUAYBLIMVypKlTRFfL1HKa2mSIOk5eTy2TtJytlC6Ho+PafenHPuQVX+7l1uvV673yS+zvXdo/PDx3x4Wtne2n3Xrfr/3iTx0/fvzCxYvZ8oYbb3rdN3jjv/nLwV1/6pZH3PSQR4zro6fcs3+knSl9dLRsDxqlOLah44zlqJW+Pz73Zrc+uXf36jd+bHnXudVqJQHmOUmSxAsgyXZmSuI52eYBJAG2JQGAbUk8D9vcTxLPwzYgCchMSZIyE7AtyTZQSsnMiGitSYoI2wBQX/fhx8+emt1xbji5WFxYjuflw2F8uRvmDzvZPeG+o0XnYc7jzx+tBj1t0R7+4Ae/xhu89qu+3huOLX/867/hyX/yp/ONTZthGDdP7rz0a73mVsm9xrEzt9x97/mNLtN5++7qld/oHcf9o5tOvXTtZnV9358+7vaz3nnGP/zFP/z+zx2OGqfWFRXx5KOjrsiWZJDtaRjHdAnxbAYEmQmADHYaQlGipBsw67taCshIYLdU7fp+vTxsya//4rRx7NQrv/ZbTO23H3rTdQ958C1d3+8fHL70S79UCdWinZ3txeaxKKWf9Y951CN/+Rd+8qs+92Pe+YM+5V3e4nWPL/jRv720ym5qpOYR5b6jaKt1LVH7rXNlcybl9kNnb/OYE/f9w50/+C3ZGohnM2B7GIdQZKZxiWJbkrHtbInYWGzYlsR/rcystXJZRPCc1uv1bDZrrdVagWmaIgIA6mbojV7q2r39za15RbJp2Zar9fUb9aE7Ed2sKV5n1ZbDdHrB1NoNr/MGP/iDP7BcDkf3nWvWepymNkWEju086NEvub25efbgqN8+8xpv/HbzWfzyz/1Ev33ijif95aWLh4vZxsasRj+/wM7f/fr33f3kv3n1N3r7Gx/8yHEYTp0+sbW5+LsnPL3tPHS+senMdFqdl2eHvbNTNuxZ32dr1Tm0RDLKzMSzEuk8WE+l1Np3ZPa1LNnOuiVk0dBmr0dd283z8Ohgr7T15rz8ws/9zO/98o9cd+I9HnzLDUTUrh/b3lOe8pTVOO2fv/Tar/nqh0eraRyytdr3L/HYF/u+H/y+H/iaT7vx+Je+5Is99iT7z1h3reVydCiSOLnRRynT6uKl5e7JzXnX9Uc6Xh79Zje+76lufo5MEA/Qsj35KU/u+35ne2e1Xk3TtFgsIiIUpZT9g/2NxcbGYsM2/4VsR8Rv/85v33HnHa21aZxuuOGGo6OjjY2Ns+fOjuP46q/66hFxcffiX/7VX77YY1/s3vvuXcwXb/HmbwEAtdaYF2neGZyWM9BsY2HYYe60yetmnegmCxQl3u4t3/wbPufzbv2HJx0/cXI1jdtRTj7kwUfHTz/13vW1p91tbD/xrv07/vxxi/ksV/nrv/IduK9d1xxbm7OHveRrrC6dfepf/8FLv9Kr33f3M+696zZlK1Vdjf29S4drR+0Cuq6zlOPq9MmTD7325nnft6VLKedXe/0ULdvh+pxVT8xPDV4vh+GWzdPzbqOUNgW3n73t0rnzZbYpNztbaurKX//DNK6GLtR1UYKbb7l5mMYf/cHvefmX/pKf/Jmf3b20d/bc2Sc++daLl/Ze69Ve8YbrzuwdLGut2ydvMDz6JV78Hd7tfcfu2A/88E+ce8tyYvvkyuMlL/YvrDKYFZar5bXH5zef3todcrlarY5WEAe3H50/2OLkAU6eTUCJ8shHPHIcxn7WY6Y2Oa2Q7b7rt7e3nQYk8V/uuuuuK6XYXq/X586fOzw8vPnmm4dh6Pt+nMYTJ07M5rPHPPoxD3/Ywzc2Nrqu4wqo5/aHVWsH+xddZigIhSThTFRmsxqqo1RKKXhYrSfVmx/+qC/7ru/4+R/50Z/8zu8f1+Pq2OJ3n/DE6x7cTu/u7y1PlnF1/VZe95KPuXa7/uUf3PaKr/q6R6Oe/uTHTUNzZhn2L9z+lEkzFH/6Z3+M1dWyOtzb393d2Fqc2N6QwLZUolw4PPiAV32DRx0sf/v8bS//sId3qncO02uO8aDF4mvvPP/grRPvvrPxK/urhRbT+Qt/fv6Jc9xt7fzD0/7u9luf9OBHPPbcvbeP65Vhd3d/PYwQ19xw8zBORwd7j3zxl3ypxzz6937n9++77+xiPnvKU8/96Z/9ZZqhMZv1N994898/4Sml9huL2ThNTd1q0m//zm89/CE3+PCep++23YMLd+yta+1n0cbN49o8dnavbW3Ua44tpq1y38WDUmaLY93qcJVTIvFsBiTN+tmsn3FZT88DdHSAbf5rSbL92Mc8lsdwxTiOEVFK4X62JT34QQ8GbrzxRmCaplorUD//i77k8fvzcu2jfvObPn556ULtOuXomJ265uRmX86evTjrYzabZ8uHPPrRb/M+H/ynv/IDL/sSL7m1c83Lv+U7tn7jB77iqynxxKc//eVe8RW2+1gvx6Oj/MPf+NnHPPyGUw990BOf8PfXPfwlbrjhwU/5m78+PLx46uSZrb52fXe4XK+W68c89qX/+q//cmtr88brr720ezHb2NcqgduUFMV23z9izrB761889Smv+/KPerH77ujncZPGu/v2Mddcfyl0e7n0iI3p2o3Fz/3NE/74SU/eqbXO53WxOHXdLd18sXPyutZajdg5ORwtV9ubGzfefNMTnvKEgWMv+bKv9pS/+6M6X6yHcb0eT504GahlYl+6tL8ehgfdfP3u3uE4DhFx79nzj3joLQ++5YZf+Nmf/I1f/oWP+fQvfPJdl8qTn358c8bh+dmxsjHP/XuecHDfst9Z9Bvbp3KY3GaXtnbuvTPOPAgE5gFsT20CYfOcJNkGJPGisS2J/yC2ucx2rdX2MAxcFhFAZtqWlM6IqKUCQN3eOfkdX/Elr/aJP90e+hZP+aFP6TaPH+3ec+rmRz/8Nd7pWCz3jv7gV3/mx4+dvm733L0vufnSxx+/+wc//0s3nr7hjlvv+vO/KS/72Mdef8tNf3frM6695ppTp04++Rl352q48SGPeIXXeOO9o/XtB7OTD3v13/yZb3vkIx+9PayXtdba7x8cpj3rZ0940pNf89Ve9eyFh5w7d3a499zuhQsbi9n29lY/X6QzRSo88VO33f2aN9z4Do99qaf8/RNuO1z+3rn7XurMNb9y69Pe+qab/+H8+WXtHnzyxO7h4ctec/37vsoNtFbm/a/d+rTze4dH6zZOQDlcri7tXtjdO7xbunS4unBpfOXXfsNp/77d3fOS7IzQiZPHStEw5TAMx3eO/cM/PG55tL+5c3I1Oq3VcrXYWBy74bGH/pXd2+67b396lVd66Zd/xZc+v2JnzszpYTleesidz7jtKU95+u69T9w4ea37jTy3P9x3Ad+MeDYJkNTVjheNbUm2eZFJsg1Iss3zkGSbF0CSbUm2JUUED1Br5QFaawBQX+H13/rE4x9/zy99/it8wOed/dtfvOcf/qhl7J+/Z3nrn7b51m233VG7bhqHOHnLu3/A+z3jF77xYS/2st7YPH762GK13js46HaO7x4+YePk8e1jJy5c0uH+7s6xU6/6qq982z0Xz+5OH/mmr/+gG7d+6Bu+vCaXplbVPeiWW7quOtuU+qu/+/t3fed37jd2tuaz1sZhdfikO3Z55Ft0Wyc9rBOVKAeP/7m/uPNvaq01Io+XG2588F3plzh1/T9E0TW3HAsuhMbJfxClj0iF2/DQ133fW06+hDxlm5rqRjt7zeE/zGc1W7qNs35x2+23/vkf/27fz4skWA/DarVEsVotX/NVX+XjP/bD/vzP/6bONh728IeVfuepT//jWsp0tP8j3/QFuR52Zt13fc0Xvebbf9Cjbj5957mD13rsqVd6+Im794aDjZOnrjl9NL/mtltvvTi0l3r5V7jm5NY//P3jVc9hg8DcLzP3D/alGMdhaq1ERIQUEcrM1hpSV+s0TSeOnyil2OZfwzYA2Ob5sc0LZhuwzXOS1Fp72tOfdvHixeuuve4Ztz3jlptvedCDHgQA9cyZ697iHd7jl374uxZ/+yPv9yEf+Ae/ev3h0bLA/nq55eGxj37Eox/50OVyuPnFXnb5hN/aPHbyPd/l3XbmCqb18qjWGfONi7sXHvfkx7/6q73a9Y95reWFu/7uT3/lloc+9pE3XvOYm6c7nvbEV3/jN/3rv3vCM/7817aHcbkeDpfr2XxzbNMrPOZh62l62pMef+MN169LHB4tW05b42r1D9+fMRMJjMnJWN54ZpFWlOi7KmkaxynnJcICXEtMSUSttbZE4nD5hP2nPbEErWVLb/Q5MI0EdhFLcfvTH3/Lddfee+991FnU+blLB9Nyf+/SxZOnrvmET/i4yf2DHvao06fPUPu/+ss//bu/+fNXfPmXveuuuw8PDvvQ7rkLJ04c23/an/zDxRv++rbDX/7t8QNe7zG3POSW3/+7J5+9lC/+Yo/s+vmpbprf+w9/9sd3/daf/M0j3u3VUIBBADaQmUfL5TAM4zhKSCqlRkiKaRqlAM9n89V6deL4Cf7HaK2VUh73+Medve/s7SduP3/+/OHh4YMe9CAAqMe8u7M++w5v82Z//Sd/sLzvSW/w6i+fZpqmw6PlvI8+tFgs2jR5XO3v3/Nmb/QGdXnh0u660IZxnG1s7pw4tl4dvfEbv9GxnZ0n/NmvbN34UhcP9v/6b39sVst1113z2Ec9fHN/9wPe871+ZWO47+5b7z67d+7ihVd5hZf9m8c98cSJY7//B3/8d3/zVzdef900jU943BOi1o3FTKTAqNSS49AcacCtTahExLBeZXM/n9USq9Wq62o/64fV2oqQkAru+1q7fhjGUkvLHKc82j+Yb27eeP3128P66bu7r/rqr136+U0Pewx19pu/96d5dJ9KfPhHffw11z3ovrPn7r7nvl/7td/8i7/8s2maXuqlXvKaMycuXrhw9733tWl85GNf8uGPfVkPy5uPhw72fupP7/rcH7304NN/dXDxXL/Y3Dt7622333PLDdf117xS3nxi5y//cHV0iILnVGu99sw1pRTul5mSbAOSJLXWJEkCJPE/QEQAb/rGbwocHh32XW/btiSgLrTe5GCcpjd43deYppzPuj//y7/+pm/85rd/2zc9Wh6dvXT4uMc98Yu/8HOs0nXd8mB/WF7amM2+9Mu+/N4773i5l3u5vYsXiHLvvffu7+/fc8fTnvj7f3z8ugefvvmx+6vuqU/a/eun/N7R3vlrj20tl+twG9erp91+/vVf59Vf/MUe+6SnPP2lX+GVfus3fnVrc3M2qwcHN41T62oBZ5twbm5u7l3aF0SJNHar3Wxzc+Pc2fOCbr4IxTisZovZ9tb2+fMXSi02ztamab6Yb29vP+zhj9w5dmxcrjbGduvtt99xcOnMiRM333vn8syND33YI7/nh3/oEz7xE3/nD/509/w9fayuOXNTW+5993d+85133n1h99LRan3TzTe9+KMf9fM//3Mv8xKP3d7ZOnPq2L1nL9540y2/86s/+4ynP+XU9Q9967d/p+sXR3fk8LinX7j7zqeP6/E37cUs4i//6q3r+JqPOnPH4/5k/g6vD+Y52ZaUmTyAbS6zbTsibNu2zQtlWxL/mYyFgMystQLHjx3nstZaKQWoXc2tuW67/a7z9z7drW0s5mdvf3zx6s7bnn7h4m5Xa1tdvPPpfyewmW9uHT92TNaNN93yCz/3S8PoW667tuvmT7n1zmue8OT9i5f273j6Ux/3V133C7Pj121f/4hrbnmxbvsR51fJ/JT67sw1rn3/h3/6N+/8tm/2mZ/7RY961CNe4ZVf4+47b2+XlvsrO0ExNm+ceng36/vFYrF1pJzGw4uZjUxHmeqcBS09UmRUZ6HuYJqtY6sgTJl1dXtbfbcs5U8ed/dw9IRptbs5n6+Wq9nGRunHp8bxt3yjN/61X/2l13ydN1jM+9/8nd9/0DWbL/nir3bm2pv+/vFPGIb19tbOZB75yGtuvuH6/b29e++5Z7VePfnJT336rXc89BGPfPLj//buO259hVd4ZdXuV375Fx/zEi+3evKf7Zy8ZvN43HXvwaXDg+VhOXnm1J/++Heee/jDrn3QIzIbDyQBEjYPZFuSbe5nmxeNbf7TSLItyTaXZWZmApIkcQXU82fv+Yov/9Jf/bXfhhhWh5lT7WoJ/eWf/n7X910p88X8/d//Q4ZhPFqOW9uLd3nnt3mXd3nHD3qfd3rog275+3/4+6Nz57d2tndm8/XyKMd1UW5sbbWx+ejc7pPuOfsPv9UttjfPPHj7uofPTjxo6E5uLW6//fY7b7397vd6z3f/jm//1nd9p3d673d/F4Xa1KZp3JiVvRW3b75i67bbOKr2szJu3/XbMex1s3mohYVzPY4SRorIxtBcu15RclyvFjfet/HYNg0hpbobu3tOHz5hdNQo2Ubhs/ed+9mf/olLY3mvd32HL/rab3+5F3vIox/2oFPX3FBr3dpcdyW2NxdPfvLBT/30z7bW+lm3PDwcx3EYp1rrfNadv+euhz38UWeuv+HFH/2wJz3pSX/75CdydOn2W//iZV7x1d/6jd5hb3/38Y//u3ue9kRV/uJP//j0mTOLxYJMnpvsBDLTEKESpbVWahHif5LMjIjWWq2V+5VSAMB2ZgJA/Zsn3312efyWl3vjvgtyTKcJZ964XveFE5v9emhRyurwcJyGLIunn8vv+4GfqGVx/OTJ66677pd+749WR0c3XnftiRM7d+xd1MZmOTxsTPP5hhRTa8N6vXfH4y7e+tdRard5umweD48/8JO/+Dmf+KGv/pqv9yM/+mMX7rmtq+VoebQehvmswznlN68mLWaz1TCQ07xTESgitLGYHx6tJAKMMrOfz0vEej1EhJ1j43DdNhYb4zQZ31HTqKWdefzYsa7r/uFJT/vbx9/6VV/3NT/3K7+ze+HCa73MQ3YP1+ce//egUEis1+t77rnn4GC/73tl2DkM653trX7eLY8Oo8QtD37wwx/7UtLh9ddd+2d/+8TV0TgM64uH7fFPvXX72OZDH/MSh7vnp6Pdja3jT3zy0w8Pl0QYAEnYQGvt8U96/Gw239rcHIcxSmTmpb29Rz/y0X3X2eZ/gMwspfzZn//Z5ubm3/7d3x4/dvxN3+RNv/8Hv/9lX+Zll8tla+3e++59wzd4w77rAaA+/clPalqs1utSYhrW2aYpXUpdLLaWzrN37DvTppRuNuuH4Wwebf757z7t4GC5tbXY3phPl452NjfvO3vu1IkTL/Pab37x93770lP/oZ9tLMdJnpSTnVL08w2F2np3OjofUs6Pf/P3/PinfNT7rjV/8kFbVE8rj2Nd746Hq+lw71xZXbzuhpsOj9atJRFp2Rmhza2tCxcvScgypHM2m9WuHh4c1tphC7tNJ0/sTNNw9t77NNsus0WNsHXsJFs7x+6bTn7Mp733cHjwh3/2N1vtwl/8+e6kenBwMA5jt1goWxFb21uv8HIve901Z2648YY77773+uuuf9pTn3bdmdPXnDxx6+HRiz/2YZvzdusdl5ysDvanYbz+mtP7Z2//yzufxLSWal1sxOJYv12PnVwiAQLANgiQ9JAHPWQcx8Vi0VprUzM+fux4ieB/DEnATTfddO7cueuvu/7subP33XffieMnbB8dHT3lKU+59tpr9/f2T58+DQD17//2b/ral1qBcZxsTy1rrbPZzGacRrec2hCKWrvWBqRjx45vb893tmZdtot7+y/7ii+5cer43sHqhjMnjm1snNs45tJtn7imqni952E1rY6OlmMblsc2AjRMY45Ht9769B/+sZ/+0s/77D+7cPLI86Oj8eDgaBqHfmPzERt3P/X3f+xwZaKj9hGSorWMUsC20xGl2BYpSAqiK9GVAi4lSsTmon/EIx7yhOGWv70r+shaSt9VhV/u4SfP7P3FZ3zBVz702sWtj99/7Eu9zG233bXu6vXXX3fzLQ9aD8PBcrjh+mtf/BEPj/CU7rp+1nc33XjjB7//e/3xH/3RuQsXm2ubxv29S8uD/b6Wlm05lsXWZtSNyCnt/anWw6Mz9eC+/XucDcRlkrgsIrY2t3gBJPE/gCTbN95w44033Mhltt/sTd+My17uZV9uY2MDaK2VUoBKlOXYvBoAhQDQOA7TuB6WR5YU5eQ113fdArdafGn34tl775GU0/FJs3tHnn7v+dd+yHV1Nn/C3/75bU963HR02M3myGW+QZB9d+L0g442Hn40aPn03/elu+aL+drs1PWTnnbHN339V73DW73ROsvtd59f3XX3an9/8/jOM9ryN377Dy+cPx8hAU4Ftrqu2+iid9tbrafM9dT6vpbSpWrtZy0dgdNSQbWlX/6lHv0Wb/uOj3mx66ZxHMZlWx/W8N7j7/rM7/qRazbr8uI9U7ZZF6/wCi8TZfbk2+7uNzaRnn7bXUeHB6uDvXlXzp0/f3h4eO2ZE3/1138Lunhx/+SpM0+/9RmPeMj1L/sSj/yrv/rbaVwv+nr65I7bfqkxWVPLnbK+5abr6/whnp+otYPkMttgwPbUJiH+JZJ4fmxL4jLbkngR2JbEv4Zt7icpM7lssViM4xgRXAH1YPfcsB4lgW2BwVKAbAv3fT8e7dWNPH3q5Cu/wkv/2V/8xR/+wR/2s402rb7jm7/qhhtvuXDhwr13P+Ommx/2J3/2V7/r8aVe9iX+6q/+Mqf9HBbbW1ubW5vj4dnj43In5qtj3difqhGGvf39G453T3jiUz//i7761M5sd8VqMm6t+fBgv7blxqwD2dmanc501LIe24XD/dY8m/XzWSepTVPtyta839s/bFMapEkMRfrzv/irxz/xycc2NwXplDwM472XDo614YYp/2HVrr/2zD1337Wx2FitL65373nGhTvmfT3RDcuD/b/+syesx3z4g24+f+7ir/zKrx8crZ78lGfM5oubbrj2mtMn7z178e5zRzsbi2F1uF55MavTNA3r1TRltqnU6MtUuvnu2bM4QTybAEld7bifbUlcZlsS97NtWxIA2AYk2QYkAbYl8ULZlgTYlsSLxnZEALYlAZIiArDddR3QWgOA2pK0ABkEBMgYIAJYje2uO+9QcOdt/RMe/3cmymwjun5ja+vxT7rVml17zcmXeak3Xx2t7rrr7hMnjj/qUY/9+8c97lVf9dXXy70nP+UpO9vbBwf7RSvnanOztMVORLXzxLEtt/HEIvqo8xml+PBoajlltOMnejNPG5AESIqIrtaulmE4ZlO6rpaQBErnNE3bs21DpktEREGAM9O5sl3koqJo1+/0C8cl8sz2vEhT+u///u8FXRet5URfu26r62968CP+4Hd/+1Vf+eX/+u+fsJ7GwvrsXU8G7nh6fb3XfpXrb7gJtz/+/d/JHDNZrtYbi41+thmljsPqxM5219cS3tmoPD+2Dw4PnFYoovRdd3h02Pez5fJoZ3vH9nK1LKWO43Bs51hE2JbEA0gCJAGSuJ9tQBIvgCRJPCfbgCReAEkAEBFnz54ttRw/dvzo6KjrulIKANTXeK03OHnm2mlqNmBnllpDyChCoVKilhoRJaKUqCU2FrPNzc3tra3MvP3u3cO1l2uObc/HcZQdpU6NB9103Tid+tt/eGKajY2t9XqEzHQ629hKoZRSSpFYNa+OxhC1Ul3TJZ2YK4RsgxVkTuuhhSQxjeM0KkKSbHOZkGCaJnswCGwMksAjYymxmFVTD6em1krXdV3Z2dmRaNM0TdNic/Oesxde/MVf4jGPedSf/tHvz+b12LGdEye33+h1X+fFHv2oCxd277jrzic84S9e+sVf5m/+7u9+7dd+bbUaIC+cPwuln81m88ViPlNO1113zc033nDTDdd1XYeTZzPQWru0tzdNY2tZSizmi+VqGVEu7e0u5otxGi/uXpRiY7FYD8Os7yPCNs/DNs+PbV4w2zw/tnmhMrOU8tu/89t/9Td/9fCHPvzi7sVXfZVXfZVXfhUAqJ/4Ue/72q/x6geHRwphpwmJEGkpFMItQjaKqKUIQSoCKCWiVIkp+eu/+lspLO1szvLYg7/jZ/5wMV3MaXr605568/XXFEWtxQQqUgGaXSPOXrh4z933LOZ9Sw/roZSiUKadTQrbmY6QbZuWzRCEcQgUNmAMElhCaGop3GygqERRZkoCVusx4TGPeOj25uLS/vLQy6hlmkbsrc15V7QaWukWf/rnf/k7v/8n2jxTFauj5eKG69/oDd7gLd/8jYdxHIb1ufP33fGMOx/58Fte59Vf5e57z567cPHSpf39/eXu3t7ewdFyeXRp/+Decxf+6m//Yffixbd9+7dDYe4nAbXWa6+5RkiS7cw8FaeAm264UdLc843FRilFUmZyP0k8P7YlAba5TBLPj21JXGZbEpfZBiTx/NiWBEQE8Pqv9/ov+ZIvOU1TiXLjjTdyBdTWpnEcs001OjtDSJGtAVGDTLc2NtkJjAoAWxFRCwppxHR9vx7G83tH8/m8XPfw4/PfHuYb01HONpg2rn3acgqvS47F6+KpKhezWmo/DOOtz7hzas0UpP3DVVF0fW3TFKWkxwARBGAcgMGkoWEJ27ZDAiQZC7W0RDaXrmamMw6Pjmb9YjafRWnLg6P7zl28697zpaiNUz+b9fP5sWPHu8ViY3Pbpbv2hnrXHXcqyphZjt+i/lajC/sHW22jtYnUmZM33XD9QxTIRERmDuthmqZxaqvVejUMwzBmukQ8+alP39rapDUhnlMtlfvVWm1zP0ld19kGIgLITEmZyQtmmwewDUiyzQPY5gFscz/bXCYJsM39bAOSMvPEiRMnTpzgfq21UgpQWzrNlGZKEHaEpUiYxjEUmbadxjlJRSKzSaruoxClWJRaL126ePfdd69Ww7ly6uS1Nxzc+ldl4xilxvbcpctUmskQWl942g2nTuyv2sXd+ww7mxuKYntzc0tSiZp9Rok2tak1MICtCABjLAESYCSMMQgbgwJw7UvXd601yMViq5/NSoRMm09H6/ERj3jUiz3qQc+49db5Yuv4iRNTy/VqtRrW81r3LpyVR40r163y2Nfv/vxPr7/mdER0fcfaJsY2LfdWw7Bu4xSlK7WUUqIGisXG5tbOVkTYzPve5H3nL5gHsAHbmcnzIwmwDUjifrZ5AWxL4gFsA4BtXjDbPD+2eX5sA+M42rYtSVJEAEDNljaSJCRJklRqzTTZLIU9jmNEpBTy2MbWWiiyTVKJWiTTplrrxny2tTH/+1/5CR172Ln9P972flHU+bUqGwoHbDDV5T03Puh0mW3tHd7n8UjCCizjYViHRM3Wpq6rbRrb1IQk2Q4pIe0QBiAiMtO2IrBRZCYi00CJKIVsDXu1Xteuj5BLiVJXR0fDanlpf3nTTTf87d89bj6fzRaLnZ3tzbboaj17z12r5XJ1tLrxDd9x7+zd5+++4+Y3eW2slk5IJ1KpXa9gRmY6Eymbo5Q0ntJuraXRaj2AeB6Saq28ALYlAbYl8T+J7VIKDzBNEwDUcRyGYbU8PIwIoJYSJSRFlMyWzlC01kqEpJaJ6WpnA05PxSHRpvHo4KCbLU6dOf0Pj//Ll369d77lXT75wh2PO9rfHZZ709FdLT0lwzTNy7i5c/Mzbr97GJb7e3tFURRIpszmi8xUKaXUUmuzioxtCFCoIiNssEUgwiBhwCIypQiEs0T0s8U4jq1Nm5u162qJKKFWynJcnb9wbmtn+/hDb97a3HrSU5526tQJoWmapmyLxfbO8VOnb3r4K77V2/3U137qLQ960M6xndbS6XE9TNOEQbIz0xECsrVsTcim1ooUErZtAJB4JglorV24eGGaJqDUsrHYuLR3adbPLu5evOmGm7quu/fsfa1NXdedOX1NV6tt/gfIzFLKb/zmb5y/cP7hD334xd2LN9988yMf8UgAqPu7F/Yvnluth9l8HiWa6zQpSkitlCLCdkQgtUxJEEattVJCUVLU0nV9f2l3947bnnbmxNbOsWN/9Ye//ugXe7HT11y38ZBH1Fq3tjbHYcS5Xh32w8Wn/MOfk+M4DC6zsa0YphCIYb1aLZd938kZmxvDctUyAWObkLBVwmnbEpJathIFSDskGxtEZitRusLR4dEwDqXUiJ0JpT1kuMz2j4ZxGG697e5XeKWXj9Jdf+Mt6+VyvrFZurp74fzyaJnwpz/0pRfuvuPlH/Eyf/zHf/qIRzxyc2OWmdjjOIFtl1KXR6uuqxGRmemMKOt1s1spkW5tmuwEzHOTFBG2M3O1WnW1y8z5fB4Rtmspdm5vbrdpCqmUYpv/bpKAjY2Nxz/h8avlaj2sr7/+eq6Aeuzk6Z0TZ9jbK10XJXKcolRBy5YgbNvGmZLsRKEg0DilpEjbEr733vuODg9vvO66Rz3o9OOecfHJT36qb727dPMIRamQm7Nuc1YO9i5eujht9WWqm/2O6rRuE1NmZnq+3c1aZhpfaqnZhrGwQGBjJyAhCbCkzJZGEiRGAoFCgbzfFBsbcwWhKRRRkBYL1a7O5ltDq8Ph9LdPuOORD3/o3sH4D4974mo1zBfzC+fPT+MwTeN6dfSYh90w6+rjnvCkYVzjbG1qOdlu04TUWmttam2yAaY2zWc9kq2ptX6+MEjieZRSzpw+wwt23bXX8Zwk8d9Nku1XeeVXeZVXfhXu11orpQA17ak1284cpknGngy2c5r6vi9dzSkRKKCUiMSkowgjaRxWG4tjy+Uy0/sH+7dcf8ZtOFqurUwNLbrB/eC6Glf3HWVj0Z/cORiHkeXx0+M8xo3ailtLp0lnpjNtk06n005nZqbBNhhjGwlhIwECJEmBCAlFIIUkCUJCYSuiRddcpoxllK15v3c4/PGf/U1rf1ZDcmttlFubhnFYg5fLncc/6amX9vaLKCVqKSFlpKLMZv00TVoPCIk2tZBby1piGsfVeim8v3ep9DMA80w2YLu1xv0k2ZZkWxKX2ZbEi8C2JP4L2ZZkG5AEALWN4zRNUQpQS7GZxjEiokRRncaxtSYsRYQiwjCNA2kaoahdLbVGKZf2Lq1WyyefOzfvy5nTZ9bjdP78hXEY7ZatpS1pQSRA9CrrMVv6UAwRNZAwgLANIGemEzBgAmxjwBgBGISEbdsIsACFmIxJJzYoEDin1lrLqU1urciXQtnGNM7mdMPY2VIRtdZS6u/+wZ/NF7NHPvSW2vWZWWtt2Qp11tFyqlUlZggMcwm1NrU29l0331h0Xb+xsbluDUA8kKRaK2BbEoAxts39JPGikcR/LUnGJYqk1hoAVIMkG5xEtNYiZNymZtymKUpIqrVr0zi0FqUO6xXQ97PJ6XGsXVdrOXnq1B/+4R+dvuaa2++4696zF+bzXlH6xSwU49SmaZrGNk7T1KY2tdZatky3iLh4tBrGScg2SZKSuq6QHqdMOyRsgwHbAAhAgLGETAIgANs2GCSwJARGEvO+IyKkjIIium7e9V3taild33W1HBwc7F7aG8cREqlG1BI7x7anaRyGqdQ6Diu3qWWS7udzqWS2WvuEWruIkpkBfd93s35YrnggictW61UoEE7bjghEVztJ/I9nOxSZuVwtF/MFANSWiTRNA4ZS3FrXdeCptYBSS2ZmZraGiNpnttl8jslsEaXUbr1cjsNw4vjx/b299bCehnEY4vBoWWuttQARIYUUfdf1XYdsyyaK2pSLxYScttOYZttpIxFSptOQbiTmmQTGNoAwyAAWApBtbEshhcJYAiLErO9KrYAAA5Y0ZZoc1sthrdZa35UItanhaRrWmdx73/kbrjvVdSUzJVm1dlovD9fLlUo3DkPzUUQYlygh0plO27YBcT8bmKbptttvq7VbLo+2trZKlJbN9o3X39h1nW3+Z8vMUspP/vRPOv0Ob/8OAFBrreM4DeNUa81pqqUiZcsI9X0/DEMpVSFn1tq11hTCbmlnm6YhSijKNE3b21u1q6EwFp7NN6ZpWq/HaZpaa3YOw9CmJkmSIiICUeu8dF2bprQRnlLCNkihkCJkkxg7FBItjS0EEs50hCRsB5KETWBb4aJQOISkUqLr6u7FS4dHKyBbs40opZRSETYlSil1NptF5Wi6BC4lxuQHfvzXH3zTNa/wso+95aZrN+bz5XI1tQkctUh0fZ/rFW7jOC6nqasdUaXx4vnz3WJDYPNMEhARD33wQ4dxyJZd3wkN44CJCP7jSLLNf4KIAF7mpV4mM7kCamupkG1D13WttWmynW1qmQ5h2jiSbRqnVkLzft6mljk53Xf9MKz6fo44efJE33WJI8Lpo8NLaYDlcr1ajzU4ec0NWzsnDg/3h/W6talNQ065GicPwzSMttMtM2W31gxCkjNTgCQBxpZCUjpLFNu2uSxCkmotTktC1FIiikKIrtZSirPre0E3m81qqbP5Yjaf3X33vbu7F6UQUeZ9a+3waJVpZ6u1pnNza3u+2PiHJ9/+90+49abrTz3ioTe99Es8ct5Vq6IKENSuB230i3EchmFdJBNdvxAyIAAhLosISbVW7tf3PZfZ5j+Ibf5zSLL9sIc9DJimqdYKVAFmvrERUXDWCBR2hkYrAEUUJjciVEpZrVaZKclgqe/6aZoOD46uv+H6za2to6Mj5zBltmytJTAOw8H+YQQ3POxEv33icGw4NA5upja15rRCziwqtRTnFCUAbAWZiRWhls12jQJu6VqqjSBKcSZgG5imlBRSm5qNlJJssrrWNo6t68vG5nzWz2az2Xw+P3782P7+pWfcuhtR+76XElFKAUWE0yViPtsY18tFX/cPVrfddd8Tn3Lr7Xfe/cav+6onjm0drdbjNIKmMcfWuq56asM0VcuwHtbzxZwHsgHb0zRJAmxLAmxL4l/PtiT+a0mapklSrRUAaqklSlnu7dVaFRLYCNLZdTXbOI1DZpvNZlLYdjKNQ4nS9bPWWjZbrIf1yRPHb7zh+n943OMTMp2JTbastUaodN2wXh7efTCuV9naNI52y9ZamyQwAgF2KaUIp8G2S+2wbaOgRFdKaw0yIgAb21EKIKm1FhHgTEvKNNh2KWUYx6lJYrmk1CKp77qu686fv9imLLUHdV2VFCWAzLRdSgecPHXGLcdxWCxmtkJ6/JNvv+ven3+Fl3mxV3iZxx7bnrfMfrZYrda1lJZJRE5TV7v9/f3las39jEGApK7reH5s87+B7dlsBkzTFBFAXS3XuxcvtmnKaUIoijNrLWlP4zifz5qptZsS57RYzJfrI6n287mJnNbDsALXWk8cP/6Wb/WWf/PXf7N/cDg1T1MDO1GEnXbe/YyngkMhyc4oxSbdBKEiGZTpbEhIsuVMlBHRWpNUazhTUq1Fkp0RpbW0DUQAESFbNrUWm9YSsG0707ZB4zi11hRh25mAxDRNdj+Oo5oMpJEixkc96mVOnDq1Xi+HYVLo8OBgsbUdpdx77tLP/MJv/8MTnvZar/qyEXHPfefHcWwtDcKK2Fws9vZ3H3TzDQLM/Qxk5u133nHq5Emhw6PDWmtrTdLJEydLKbb5n812RPzd3//dxmLjYQ97GADUcRoVUWttmelUTrN+BshpVGqXq4FaV+t1QJQwRMTR0dF6GJ0ZJWqJcRh2L106fe3167KTGs0UJaIUnJm5s3MsQrYlulqb0xmSbEoppcTUMiQQ2LhNyWVd19kupZQSEqWUaWrgUgqQmZJKSBHTNEnRdbJtU0oBt+aIIsm2bQkpWmu2Z7NZy+Y0BlG7DoRB2AhHVSlx6uTJm295UGvT2MZai+2dra2Ul9PYd3UST33GnU962u2yX/olHvXgW64Hrdervuvms35zc2NYHxjzPDJzPputVqtxmsZxmDF3ZjpbtlIK/+PZBu65557VavWwhz0MAGrtuvnGYlgNZAu77+rUMiJwzPqutdZaW63XXa3Der08WvZdP40TEbPZDPtouZzN5uv1yqvl8e2t13yt1/27xz0xc+pKaW0ch9U0jV2U1qbWxmmc7FRAMo5rhbCliGwSoehqAds2hDSMoxTOrLVmpiQbCciIauy0BCAJlM6Qau2maRqnqetqLTXtNk02USIUEWED1K6kXUtpmV3XR5RaakRERK21djUiZl3fprY8OoqoYxvHcapdV0pZdP3RclVKVdCV0px33n3vNadPvOxLPeaG604vl6txmhaLxayPcWoGxP0E1Fqvu/Y625IA25K4nyT+Z4sI4NVf7dUz07YkoGKy5TCNsmutwzjJbpmK0lqT1M/ndrZ01K61KcV6GLa2t1pr4zj2XbdaD13tSrAzn3/MB7/Ln//1437vT/7u6XfctVqt68ZOV2JYrRDjsMJtHAdPKTzTliCnNo5jX4tzClRqse3Mvu+jlH4YjFtrUvR9N4xTgARCRES0Nk3TFKXY6fSsdnaC+tr3uKtdpkuJKJGZoXCmpJbZdX0tRaH5fN7aVGvfdV1mM6qlLOaL2WJh6GpXoiyXR103ny02hvQ4TZkutc4W82maVodjV2tmu+uec8+47bd+8df/4DVe9WVf99Vfbj6b7V7aG8ZJEs/DdmZKykxAUmby/EiyzQNIss1zkgTY5jJJtnkASbb5DzWfzyW11kopQF2t18MwtGnqum6aJpUSJYKofTeN49gmSaBxWNeuq7WC+r47OjoCzWazQJmTwQiVWtsbv96rqdSn/cg9s43tiJAdda6IfpoiaON6vVoGNsi0Nm7Wzq1lmyxymgDJTjfkoOu7zigk6CIV0dc6TZNCpZTWpjKOXT8THoah1C6dNUqpJRTjONqOEkLzviMdtYzTtDOfC5Cc3t7eHqdRUi11Pl9YKqVky9r1m1ubEaXrZsM4tGmc1kfz2i9XrfRV0jiOSIuNhaGLeSnrNmsN/dYf/M0zbrv39V/zZV/ixR5x993iuYgrJEniMtuSAEm2ucy2JC6TBAC2AUAS97PNZZK4nyTuZxuQxP1sRwQgKTMlAbYlAZJsA5JsA7YjgvtlZkTYzkyugDqfL2Z931qzXUoppaDIbEdHR33fgzIz0yDbrWXtoutnXq+Nh9UKESVKFKBN0zT5wu7+q7/Sy5w+eeI3fu/Pn/j0u9dj9vPtaVh13WZrreu26mysNZwM41o4orQ25jQhnGQbur4Hso3j2GoJABERZHZdt16t6yKi1CjVbRKUGuM4zUN914/TWCKyJdBDlAic6ShVUt/3tXbL1TKkUupqvRqyLDY3+66rXdd1XSg2NzdXwwje2NqexpFga76dra2Xh0Q5fuy4I8ZpWnTdajn0iz6nYWrZd/2QR0zDiUV//ux9P/ijP/cOb/WGJ4/Nl5MBbK6wAUlAay0iJEXENE2llNZaRHBZKcW2JP6j2Y6I1XpVoozjuFgsWmsRIWkcR2C5XG5sbETEMAx930sClsslIEnSbDY7OjqKiL7vJQFA7fpusbFxtDwKRal1tVqBSgnb4zhmptNd30Wo67rl8gi7tSbJzYv5XBEqZXm07Ge1K6V2KKKW8pIv9ojHPPJB957be8qtd91174XdS/sHq2H30sH+4VGmJjOsVpuLzcViY708StzXsh6mviv7+3uz+byGSqmr1ZEUmMypRBlWq/S4dXxrsbkZUYf1upTouzqME1Lf9cPqaIG7rmttzMzZfMPZBJJmsz6kqU19N+8O9iR1XT3Tne66bhyn2tVxHJNA5Wi1EjG2dv7ChQg1U0vX1QqznKZc7UepU2uLxUapZUrGwePYtrY2rNCwtky2KfnJX/jtRz70+ld+pZfhebTWnviUJx0/dqy1tr21ffzY8fMXzg/j0HXd/v5BKXHq5KljO8cA2/xHsy3ptttu+6Vf/qUbbrjhyU9+8ku/1Evf+oxbr7/++ltuvuXP/+LPa6mnTp86ODg4e/bsNE3TNL31W7313XfffXh4uFwtu667cOGCpN2Lu4985CPf/M3eHADqOAwHBwdSlFozs9bu8PCw67tZ34/jGIquLyXKahy7jc2iKLUOwzqjqMOZLbNACBHD1LBLKSiWh4cldO3p4zddfxoTtaxWw2q5Wg7j+Yv7u5f2b7vj3vMXL66Htn9YD1ejbROzvqslVsPUzbqdre3lcoZCoo0jbpuL2TSuVLuNWd9aO3bq2GJzOzPtNqyHzNzemJeuDsNYRMscp+nksVNTmwjJRMQ0TZlte2u7dnVqres6FFX1aLkk2+b2IqjL9RE5dV3t+42j1brrZ1i1K6v1NDWHutlso3NbrYdSyjAMijp5Wg7TxYv7yNvbO83TwXqdpfzun/z9y7zMiyvEswmIiOuvvS4iImLWz4DFYrGxsYGZz+attb7r+U8262cv/mIv3nXdmdNn5vP55ubm/sH+5ubm677O6549e3ZjY8P2pUuXFovFPffec+HChVrrDTfccHR0VEo5dfLU8ePHz58/f+b0Ga6A2lrLTElCpUSddxsbi2w5DENr2c1mUSKz2azXq/Vq1c9mgKTZbH5x9+LW1laJQMrW1sPQ1c5tnMZpMZuX0GpYL1crKeysitm8P3585/SJ7VLK677ay164cMFmGNveweHB0bB76dIwtvMXdvcO16v1ME5j256dv3BxPYx7F8+3No3jNN/Y6B3n9s7VWsbWiL7Wulwuu67b2FzsXdrfmm/M+xollqvVxsZ8TB/sHzizdH3f94qYJmfLsQ2ldvsHS5voekpfIscp023KEnjKcNPY7GFqLWu31cw4ON129y/UQq2l62pXSlfL6VNnLp4/d/p4eeiDb7733rM3XX/DYx/9WpuLxcHBpb7vnEbiCgFIOnniJA+ws73D85DE87AtiReZbUm2JXGZJNsPetCDHvSgB/H8POLhj+BFNk1TrRWo/ayfzxdppnH4h8f9QzOL2WwYh/V6vVquj584Lqm1CThz5ppTp061Ns76RWZbD6utre1pmlwMRCkRgVRqdeZ6WEsexpbTFLX0tRumaV7r4eFRS8O4Wo5GXd9FzWM72woApFpiGKepZWZO47h/uFoux/O7F8dxOjhcHR0dnT9/rpS+lNoyu74fhmk9bEytBZ7V46BxzChRAuXUGsePH1+vV2MjSs3W1uuhn3dd6WRiPl/M+2HMlm1jvtkyuxIwX62XXd8t5htsLxKWh0dV7drrTx7b2V7Muvms29pYbG9vzmfd5mK+WMzvvfeeg6PlW77l23DZL/7iz/XVj3zEg/76b/62tSYJA+Z+tqdpAiTxnGwDkniR2ZbEv4Yk27YB25JsS5Jkm+dkWxJgyNaEbZAkRUQpBQAqmV1X7zt79m/+9m9f4iVffntzNowJ2XXdOI4R4UxFlFL+9m//5p577nnxF3vser2SZLcIWiZOQ2Z2XZ/Z7IxalNGyzWZ1DJVShmHa2d4ax/VquVYp/ayf2tTVajQM49FyGVJENHtzPmuZmZaU03j6xBYndOO1x4b1Cmyrdj24n8+FS63r5br2/Wq17moZxzEiVsMoNGX2ta6WR/uHRyeOH2vNUes0jiFHKRC4KYrkaWpOz/ouSmnTmGmLzcUiW6v9TGA3p+ezPkpRRJsmBeMw9rP5OA6huPfs2Xd5l/e48847n/b0pz3oQQ960zd9i+/7vu+++aaDfjYLCRsAARhAUtd1gG1JXGZbEs/JNv8zZGYpha7jOU3TFBFAHacppH/4h394ndd9w5PxjCc+9SmPebHHbJ56yd3d8ydPntrd3T1+/PilS5fW6/U7veM7/cAP/sBqtS619LXiOFwuFcVSSLN+No6jnbXvx2lar1bz+Xy9XrfWQlFC+4eHBW1ube3tXVqvV6XUqZTD5bLrOuzS9+v1ejabXbp4aWzT9vb2er3G7eDg0OD05uZ8GKdSqqKth3Fqns17u43ThFywTek6tzarEbVubG4Nw3relxMnjrXWSpTalXFq0ziWiNlicXR4GJJFKxFSqVUwkBEx62stfall7+Cwq2U+m43TtB4GlTIMY+36bM3ZxulwvtjY39vb3j4G/OVf/+XNN97013/z17fcfMvp09fs7+/XWtNpQNzPQGYeHh4ab21utdaOlkellO2t7cOjo2ytZZYSkmxvLDZKKba5nyTb/CtJss2/kiTbklprpZSzh8s/+41fXly6L0vXrnvwS7z0y2i9vO76GwCg1q4/Wq6seMjND/r93/nWX9W9xy/u9nvH/+yv/uBN3+TN/vRP/+S1X/u1f+VXfvn8+Qvv8PZv//CHP+Lee++97vrrFDGuByFBlHDLw8PD2tXW2j333td1NaLMzMbGxvLoaJqmlino5vNmd/3M0xQRiTcWG+mUKbW21YqWtetUo7Vpe2e7jeNs5sSSpmGcz2abW1ttbP1sfnR0NA5jzGK9Xpu+72fAsF5ny8Vs1tLLo2WbJkkl1NLDuD66cDhfLEJQu6OjZYma2aZpykyV2qa2XC03t7Yz25RM4xolNtSxtSi1tXSmJNwEXddNrQ3LVd+V1XoFvNzLvOyf/8VfvOzLvAxwdHR4/KG3XNrbQ5LA5gGMn3HHbaWUhz7oIcMw3HX3XVtb29tb2xd3L5ZSnHlwdLi9ubW3v/eQBz2klMID2OZfzzb/eraB1lop5faz5377k9/35Z/+xzdu9lPLp7TuS7Ye8+rv91Fvf/0NAFDX66Hv+2lcP+7xT3yxl36NxfLXbtl+sTK76cTpN1zMF6/6qq/a97PXes3X6rpuc2vr8Y//h4c+6EFOr5fLUmqtdRyGCLU2ZTap67oO5/bGZu3rlM6W89ksSkwta6mr9TIyZrNZpu0spXRdh8ipKaKfzbquU5sKJUqdzRe7y1VIfd+1ll3fh1iu185czBeLjQVSy6xd13UdmdM0dbWktHewP+v7je1+bdleLpc7OzvL5XLn2M6wHjc2NoZpbK2p05QpsB2lhOj7vkQ4M1srpQ7DWCKmcYyMrhMi03bmlLXrj5bL+axfr1YnT50M8k//7E9f8RVe8S1vuBH4y7/6y2G9LFHG9brO5yAkrpCAEuXRj3hUa1PX1VLKwx78UES2dubU6YgQnMpT4NOnTkvK1sx/KYG5n11Cl8b8w099v/c4++c8+EbGiVJfsXLTM/7ix3//V3nTNwGAWkusV6uXfPGX+KM//Z0brnvINcfe+8/ageL3IiIzQzG1qe/71trjHv+4G6699tSpk+M0WbTWmrOb9cZdV+ez2f7B4c6xnZMnTgDYXSmttXRatKllphSKUEQ/68HZWmtN9pDZK2qp63Hou06lZMuj/QMJcBsnZxKapsx0rfXw8FCKft5P4xRiGsdaqiQjlRKKvuuXq1VrGaXM5/NhWNNaqXVjY57OrtQSHluTQhFdqaUWOY1Wq2Xfz3AulyvIIkk6PFoWrSQ1p8xsPmvTuJjPhmFozrNnzz360Y/8+394/H333Xv61OndS7t7uxce+bCH7u/vTS07wOY52e66rus6oBToOi6blQIAlf9Z/v43fvFVnvEn3HTDtFzV2ZyDS0PpbnjQTdf99g/96C+8wTu+2Zu21ups1jtbX7tXeYVXuufeu8/tPwMboqXBNaLvu/3l4dTaS7/Ei584fiJxP5sdHh51s76mgX7Wp3M+m8/mi6m1Fq2UEqEgShetZTrn89lqvRaEFEIgFKWO42DF5mIxTtNs1ts1ohwdHnS1LjY2WEv2bD4zLI+O5huLYT0sFvPVaiWo0M369XpI52q96rquSMD2zjZ2lNopJDLTST+fRcTB/p5KLaV2XZmp1lqj1NWwzjZh933X9/2li7t9V1sb3Vyimql2XQ7rja3t1WqZrbWpRYm9ixdLKf1sPo1jTvkyL/WS586f3z1/37Fjxx/+4FvOnj272NzsZ70izDMJcVlEPP0Zzzh/792lVDD/k2Vqc+e23/2VV97eYP9SfesP4tJ5Lp3vbn8ye2dfcrv7up//6Xd8szeVVC9cvHhwcLS/v6/QxnxR+1mE1uv1MIwbi3lmllKNa5T1en32vnsNXa3jNB0d2s1jGxezebPBESUz3SaV2jL7rpNiyjbrusw2TK1Kh6FMC4fCdjqlGMf1arlSlNbGWvvl8iik2WJhexzHWsp8sZimKY+WbtN6vRzH0dmmcernC2Cc2ubGYvfSXq1ldXgUpXR9tzw62tzeXh4dhsp6WPd93zKztfVqPV/Ml6vVYj4XCqlli1JqKbXrI+LwYD+ilq4cHhyqFNnHdnbGcTh/cbfvO7c2tVZns5wmQdvbC0XUMo3TfNadOn1qtVzdfffdCp0/e+78+QvXXHuNAAMAzgTuPHfh8R/3Do89umddejn51xECAwaBARAA5goJwOaZBAYhsEFgnkkAmBfAUEXsZ7txu6wP2d8FeOnXZHXE+TtV671n7wNKRL106dLZC+fG9Spq3T9IAJCwOTzYi1BLZ2aU0lq6dtH1Yp2ZrU2lVImDtgKcaSwk4fV+CCkyDY6ItLFLibSFMpuQgVCVMtOQNiDUWosSbW+/1iJJ0C7uKkLYmdhpI2VmOTyyLenS3qWIEhHDMESEna3l3uFRiUg7Ipbr9TS1Wqszj5arqU3DwWEtkS3tjFKBrqu2W0tjocwEg4Zx7Lo6jOPh0SEKoJ9aOlvLNo2lVITTl/YTSTgiIkqtZble2yCBAfNMB/t7N7fDB193gsa/nrFRIGEjAThRIGEDTCMRlArgxBBBm0CUghMEgDH/sqr7vLrtcHj4sc3xN3+89j1/+AtD82xz80/uPF+uPw20zPq6r/Par/zKr3E0jr3kUrNNRpbkFCq1TJDTVHFfO+59GhfPUisRRKDARmCTRmBTe255dEMts4QCGQMQgYDmFiqAAHKwLEVOFSs6HsB4zFYiCgAJzUIELgT3Myl0dLTfldLNNjIn26X0wLBe9rO53aQKhmxWESAADMH9VqvD2s1qEQCRObVp6voFtOVqAC3mcwBy99Kl7a3NiGipUgIMFgECg3Giesedz3jqk59kpyQAzGVRyqDC2KZUiH+BQTyTTakAw0A2SiUb2ejnjEvGgVpBnLyW9ZLds5RK1yMxDmxsk8n+Hl1PNmxqB4BQIAAM4rlE42V26s/eu7xlUfqNGVOCZ/Ny/mD48tuHz/qktwJs12G1vLScvuPvy0Me9ye7J665O9cbG8fKseu1f0+Xq1/8ie962x1KlB9+0pO+9xu/tHvK3+0//GVYre64/a4TO5u5Wkaty+Wy72exub1u0yF1/tS/fKk6+4f+muXUHFpOU1dKlJIez993R2vjdTc/av/C3uH+/ktcd/yW49u/e64draeH95oX/dbv/s7DHvqgstg8NiuLza37Wtx3z72LGx/ySifpp3b3slwc2J+8OesW5564Otq3RXDtDQ/787/422/4ju99pVd8hc//hPf9s8c97UE33vj3j3vCiZPHH/93f/PoF3/pa2548H333XHdmeOzUs4frO24Zqcc24i7LlFrmXfe399/0jPu+evHPeMt3vDVb9gpY0tJkn78p3/hDV7j5bZO3/Bdf3z7k//otw7OnvvQ93yrYzsbP/Mbv/7+b//WN5w++T2/9te3XdL+4fAKDz32Lq/zyCed3b9jUu26Grp5c/bk8/s2gHlOtjAgIf4l4tmysbnDa74V+7usjtg6xt//ESev5eZHsDxkGsnknmdw8yO4/sHcfSvDmlqZb/L4P+PBj+Gmh/PHv8yjX471kgv38cS/4A3fld1z/PZPsLlDJuJ5pT2ver3T82+5/ejFtupLbNeE37939Tl/d8+Lv9YbvN1bvAVQSqmKUpU3T/esYv/g0qVS6t6lO9q9TzuxUR900w3nnvRn33fnU69/+CNXXe/M/aPh6WcPLt11+51PfoK3TvYPfrGZOBr78eLR/OxflBKrMnvQ3r0Ws5b3Pv3Jns8f9eIvdmHv0jCtf+vXfvAZtz/1zKlHPPr8cOHv/nx5uL7l9V97dt1LvebWPeeju/3eo7968uN/7U+e/lU/+Bv94e2bMGbbObEzry3tR33p5193w4PKwfKaLh583dYXfsHX/PAP/uCJrY1pWLt2j32xl3j4TfP3e7e3evSjX6zruzue/tS//6u/uuvC7t/89d8N+/vnvvtHN294xLK77mUfdt1bvM7LPvKht5zdOxxbKaWUrhyuho3N7Yt79/3On/z9G7zB6z3qhu077rvozL7rULz0S73UOOVqNdz1jHuPn7ruz3/3t7/u+7euuf7GYOtbf+KPrz259ZQ77jx18yMedf3WdccXqLt4191Peeptm7N6OLa/3zp5z513vvJN20KY5yT+bUrl8BK752gTG1ssD1kdcfwMF+7D5tqbmUbO3cWl89SOnZOcu4txYLbBNTdx6RyzOY94aS7cx+YOOyeYRp74l6yXdD02L4Ck1nxqFu9z8+Z333H0/Xevzg/pUj75QfNrX/KhCQFAjdot985d+IdfOVu2z5+7eOzUjRf39mqJ2rYOVpvv/Cqvduwfthfn7js4c9PxM2d+7S//+nue9DuPioNZG65/+w+8+cVfVsuji0fTM86v9/7+T3jK33ZMhzqMd3zH3d17fu9Xf+744bnTb/2ud3qxPn7T8Vve9FVf+6Y//vXf/s7v/IXXfamHP+77vv5lHnQ9r/Cyf/nnf7larX721//whke/6kMe+qjFU55Wb370vds3bMZQzENj92/O78o0p6iHGp/wY1/Z/dXf3vKQl37IIx/RjZfuuDTd4LL99LuOHnNUPUzj2G9f8+S/u2N7ubtuG+eG4aFnrrtluf6N3fFvZoe7P/GzL/XS1w3t997q1d/vuu2X/tM/+6vFDQ/9qyc848/+8HcPtf0DP/zDd7/SS9x7773v9Oave+fZi9/3i3/4Yg+65gPf5jUe/4xzT/7TP6pdtPmxp93+9IP1sL5039Fyec+l4brjm+/3Lte95iOuP7HZQz2647bH/cj3X/NiL3H7DS+tg/r3T8uXuTYJ8VyEEdjG4l9Hwe/+DFfYdB1/9EvYOMkkCqUiMQ1kEgECEwWbv/1DSgUDIGrHk/4aiW5GGvGCSJoaW1Uf/rCtafQyvT3rONz9ldYSAoAKKH3rrbf71E0HF3dn/fGXuuHEX/7FX/ztfef/8jfH606d2Xj4i13/8Ie/8xu8ctAe87Kv8Bav/WL7f/prZy8ePv3WO//qL77u2HyjZZ7f33vIDSdmL/M653Xy2jv+gODXfukndfzmp59vT/+ZP67bO93iHzY7PfnOM4/7m7+5Zjuect+5M6/zdt2p68F333fu0qW92TWP3Ln2IXf/2e9v7d/6d+uN07f4xkc89h8e/6SzZ59x7cZiu+vbevV3T7/r7N5dT/il3/6bCzmUnumGMeZznXvaMD7j8X/39m/wCidPXTuOw4NuuXFcTd//zV//kEc98pqd8hePe8p124v+3B3dqZd+1M2L849/3H2r839x3Z0vccvLzu644x9uu/AXT7rt/O7+hcMLRwe75+vO+uLdbfjVF3uxF3u9l3nYLdceHxq5vPiUP/6xjcViEUnp+3JfWe3deOz4SdZPuf2pP/vTB9dtv/3N89W1N960Ojxc7146nB/fH9wu3fOoG65bdEvSPKdsrcuJWmvyb7Gx4FlsEOLZbIB+EwBzhUGAsBHPZNMtMGAQL1RwWVKrtiUEmZ5GroAqyIinPPWpfvqt8y7+7h/+7O/r/I47bme9F/3m3sZGhjSfX/ty171Hiac98fE//Ge/css1O7c+456nPOWnjh07NptWLWrW2Z3b/eaJ00862py29ijaXNz0pCc+47f/9M93vFxN2XVx6tqbT5/YfNqTn3jfpfWsK1rsvPobvsY4DL/0uGHv7tsO1vzdX/zpsF7ul24mlbb/pL/5o53N7dv27/37P/+r84cf+ZAT2z/2Qz/we7/5Kw+78cylcZDzjif9VZltntieX9w7uLMstvV35eimPPX6fexGl8vCE5/4hDHde/yz3Lnz8Ok3Penc6ce+6pu9xPqbfjYWB5vU/i/vuPUXfv+vT5/euXjuwqXdC1ru/eWTfnMifv8nh+uuv2He92//Rq/6qI96/27j+HWPfNWOozw8P5/18xrL6O6+7/wjH3LjwcHh2btuO3vu4nTpiY9+hdes1z9o5w3e/qlP+MsxntqJv7/93rf5iHemFIQAkAQcO378L2bHF/feNZROmP8BDOJFYgAiympvVa69qXIZ1IhYrZanTuxce+OD/vYv/vjeu26fMlZjnjm2dXF/9Yz9S2dOnBguXfijP73zPd6lP7bRvdbLPeqhN177K+s/vvUZ3fpo787z5xVx4tjJyPmrvcrLvsJ8fvpsw/HqL/Po7Xbw2796/hkXzi7mm9vHT91+550xba9XRy/34o++cPHi3XfeXqcjSS97ffzGE+87c+zkhf1lJz/65EaWLr1aH56bhtnrvtorbL7Ra548febcffe88Ute/0Fv+3l/8vt/9pu/9Ueza05Pw5octhebJ7qdV3z0I6996EuvVznrO5EbpR2f69z5vVnf3/iga0+U7sFnXlwe/+hv7vz1PxlPbC1e6SVuhukRD7+m/sadu09/8s5io/SmdushbT/kzImqg/2Do9/7rV/64Pd/5615efmHHZOOrdYnQxoOL9xz732zxWZa1xzfbMSZ44uHPOTlF8eOP/nxf/9T3/E1b/oWbx7d4s9/79d3L+5O09uDMAhAEnDdieMv9TU/ee7ee0ut2DyLADAIACPJNkLINuLZjCRj7idkzBXmWSQZC3GZMc9iAISktDEA4lkEINsIAAMgEgq8+iMeyRVQW2s7W5t33vqU7Vk9e999y9X6+uuuve/83tmL+6vD/cz8m9ue8ZAHP+glH3HL4e7uox75iGsf+pIntxa//Xu/f/vTnuQ2ZJtsH148GxGv+vIv/REf8xGbt/5drtabW5sv9VIv+bCHPvjXnvrU2bWzpzz5CX3X3fcMHztx8uy5s8ePHXuPj/+Y137NV5N4w9d/3WfcefZ3f+/3hmF9eHD4p+fuHqd8hZd/uf1Ll5ztiz/v006dvmZra3MZesVXf42+77/tqT/yO3/++2dOntjb28/ME6dO7l7af8u3eOOHPuR9Lx2sSrRZLh98euOlXuIxX/glX/HQhz3sKU9+4tlz991y402PfsxjotSHPvjm13q1V5xtbI3j+Pqv8cptvfy9P/7z/b1LUUo/mzk9ThPOkzvbh6vhmhtuWSy2L917z+P+7i/Bt99519bm1oNvvPZBN14X/SzhcU966iMe+zJ/9cS714962EsQr/byL7n5cR/8Z3/1t8dOnLpw6UAQITDPyZk3XXfdTdddx/9+rbVSClCn1jY2N9/1Xd7hzrvufuVXeJm77777L//6b++6576u606fPj21jFK2d47ded9FnPv7+7fee/7shfJ6b/ym/bFrL17a29vbq6VKdF03dNvf9mO//LY3lFOPeOz+weHtt93+iq/wSo942MOXq+Xy6BA7ojzolpse8qCbbrrx+vVqdf7Che1jx1br5fu+x9u/weu91lOffuudd97Rpmmx2FhsLM6cOf3gW25uya3PuO0xj3n0NE2X9vbvuvf8zrGTb/AGbziM03o9AIqysZi/xqu++rnz99VabQ1ju+/C3ku8xEt+yRd/4dlzF5ar1bBeb2zMH/PIhz360Y/e2tzY2z88ODi85lrdd/7Sy7z0S7/cy740Ui1lmqbWmiIiwmmbcWq1lqnl2PLEieOvdONN81m/tbXx0Jtv2FjMn3LrHW/39m97/MSZre1jOxvdOAynr7nm0Y99sRtuuumOu+553/d4h9/9vd/PTBDigRRx39n7Do8Ou9qlEyhR0rm9udXPZvedvW9jsdHalGnjUIzT2NUuM6+95trlarmx2Dh77mxmdl23Xq9Pnzo9DMPZ82evOX1N19U7775ra3NrapPT6ayl2jlNbTabSVJoHMbVenXj9TcOw3r/4MA4W0ao6/rW2nK1jIid7Z3jx47fededN95ww/kL56epXXvNtRcunF+t17Wr2LV2q9XqxPET29vbAFBLRDfbeu3Xe8PFfGZ7f39/GIbdS/vL5WoYRym6rstMSYtjJ/vjx8q5p6jUh233b/qWrzRNbWopsG3A2TLL8oBjpx4SG9eeOPbar/3qIMC2FBEheRzG9TCO43jNtdd2fX/q9LWIV7j+hld7lZePKGBJmZnp1Xo9TQ2xWCy62t1w400PfdjDXv91XkMRtltmSNhd34/jeHh42PezKPWGm27c2tnuu+41X+NVa62KECCNY1utVi3bzvETOzs7pfY33HzzNE4RSmdmCiFsbAMh2e77/rGPffSv/NxP1FokIZxeD4Od89lcpZAtM6cpu362c+zYmWuvv/lBD3mZl+sW8/kbvOEbnT13jmzimcwz9X1fa621TtMUEUBmzueLKLG9vbO1uXlwcLBerxeLjRIxTVPf9+M41loXi41aaylle3s7IhTRdR1w+tTpxWJhOHH8RCllGAdMrbXWOk0TEBFd7YZx2NzYHIahn/WGjY2Uou87Kdbr9WzWz45mpZRaakRsbW3V2m1tbh8tj0op88Wi1Cqp73spSil939uWBOhnfvYnX/7lXs62baFSi6RaikJCQDqFgMPlUs4YViDbmSlJAoMAQMLuZq3UKikiM3lONhGSJKlNLbPVWg2ZaRvAAAggJElAyxSUUtJ22lgS97MtKSJst9ZKKRFhO9NgjAEckiIAQdrZWikFiRcqW7ONZAMGAElC6QRAEpKcGRGlFNstczabPf4JTzh98sSjHvGIo+Vyc2Pj13/rt1/hFV/1xPHjrbVSCs/DNiDJtiSeR2ZKsh0RgG1JtgVItgFJvAgyU5IkLrMtiQfIzIjIzIgAMjMieE62p2nquu4P/vD368u9zEs/+UlPHMZREoAxxhjzbBJECMkKXjhbTgPm+RCYZxJCxvxLhABj/iWSbPMikGSbf4kQYMy/RJJtDALIzBuuv/7hD3vYar2WpIhpmoSAUgrPjyQAkMTzExGAJC6TBEjiMkm8yCKCB5DEc4oIICK4LCJ4HpK6rgPW60Gro0uzxQaIq/6DqY2r5XIVIdt939/6jGc8/olPuf6666fWxP8FBknTNN55x+1aHu7ed999rTVJ5qr/AAIgnadPnZrN5tM0SbLd9/358+effuutdoLA/K8nbEXcdOON+qVf+rnazbqus81V/3Ek7e5efLVXfsXt7e1pmiRl5tbWFtHDxP8th/v7tXbz13+91+eq/wRPv/Xpf/U3f/v6r/Pa4ziB+75/3OMff+78+VqK+T/lEQ97WF0sFsA0TaForXW9oICAzIwIIDMlAWApMlNCCtuAJB6gtSaJ/99sl1Jms9lyuVyuV+D5fPH3//APZ89feuQjHzkMAwgMkviPZxD/FQxStva7f/DHNTOBWuv5/f19x+/9ycGbvsTW3Xc89ZGPfHTf9xcuXOi6bnt7OzMBSbfeeuuDH/xg20dHR/P5XNI4jvv7++thvb21DWxtbfH/nm3AaUlOA5Luvufe13zN193Y2OD/nHvP3le532+u/uCuX/mVO+54z4cem//AN3/9i7/kS69Wq3vvu/ehD3mopNtvv/36669/zKMf89M/+9Ov9AqvdMMNN/zRH//RxsbGhQsXbr755sPDQ9vPuO0Zb/c2b/fqr/bqmRkRXCWexXZErNbrjY0N23edu3S0Hhd9d9M1x/kPZRuQZJv/fJlZSnFm5X5b/U592p03zs/dcsurfPInfUqU7tLepVrrE574hBLltV/rtWutW5tb1113ndNnrjnzqEc+am9/7/Dw8Ibrb9jb3zt18tRdd9918803A5K46jkJbEsChqn93t/fvph16zEfdNtTH/bgWw4PjxAHBwd33X3X5sbm8ePHQ7G9sz2fzZ/6tKfefvvtt9xyS631zOkz0zQ9+SlPfsmXeMla65Of8uQnPvGJL/ZiL3b9ddcD952975abb3n8Ex7/V3/9Vy/3si/3qq/yqrYl8Z9JEgBUAMjMN9l5VT7zVcEgjm8BN3ET8KhHPooHuOaaa7jf9ddfDwDXXXcdcOrUKcC2JO5nW5JtSbYBQBL/PrYRGEm2AUk8J2MhwLYkXjS2AUm2JfGfIFteOHe27+qUdJcu/eWf/8lsvrjh+usf/4THX7p0aXNz89ixY0960pPe6A3f6NKlS3/9N3+9vb196dKli7sXTxw/cXh0eNttt13au5Qt//Kv/vKaa6758Z/48ZtuummapsV88cQnPfGmG2969KMefdfddwGS+K8BlWcRl4kXKjMBSYBtQJJtSbYlSeIBJAGSAEn8B5EEIABJPD9CXCaJF5kkLpPEf47FvH/Mg66578KlU8e3X/2lX3Gcxq3NLUlv/EZvPE1TKUXSNE211sx827d5W0mSxnG03bLN+hnQWnurt3yrruuA1lrLNp/NW2vPuO0Z21vb+wf7gG1J/BeACgCS9vb3xnFcD+vWctb3klprXdet1+tjO8fGaRzHcXt7ez6bcz9JACAJkMT9bEva29u7eOniYrEIRa11am0cBklnTp8ppfBvslqv9vb2JJVSlsvlfD4Hpmnqut7OaZoWi8XO9s7Z8+ewT544ube/t1wur73m2sOjIzuP7RwziOcwTdO58+e6rsvMlmnnrJ+P47Cxsbm9tcV/HPFMr/OKL8795sy5X62Vy2qtQERwv67reICI4H4R0dEBpZSHPuShwJkzZwBJ/NeACgCC1nIYhmmcopRSytHRkUJTm8ZxPDg6FGTmNE3MeNEZMjNbTm7pHNbDMA6lFGPbkvg3MFHKerVCTK2N42h7Paxns1lX54ftcJom29M4Auv1uqvdSqtxGrGPlkfHdo45UxE8gG1D13WHR0fDMLQ2gYZhPZ/PAduApMwEIiIzJdkGJAGSeJHZzkyQhCRAkm3uJwmwzbNI2NxPEmBbEs/JNpdJ4j9COjERYdu2JNsRYZtngQoAaZ84fhyOc79TJ0/x7yAJOLazc2xnh/9Q8/l8Pp/zAmxubnLZ9dddz/22traA+Wy+s7MDRATPqeu666+9DtjZ3uF5SOKyiACAiAAk8W8iqZTCc5LEc5LEA0k8J0k8D0n8hwoFApAkCZBkWxKQmQBQASAinvKUp/zpn//pfDZ/izd/i67rbEsyFuJfz7ak8+fPP+GJT1iv1w976MP2D/YPDw8PDg6maXroQx/6p3/6p2/8Rm986tQp25J4kY3j+Ed//Edd1506darrur/+m78+eeLk2bNnH/OYx1y8eHEcx5d/uZcHnn7r05/05CfdcP0NZ86c+bu//7tTJ08dHB70ff+QBz3kL/7qL97pHd7JtiQAmKbp937/9zLzYQ972OOf8Pj1aj2bzTLzEY94xJ//+Z+/2Zu+2TAMkv7kT//kaHn0Gq/+Gn/2Z3+2WCyOjo6GYXjFV3zF3/29332jN3ijM2fO2JbEC2YAMvMZz3jGtddeO5vN1uu17c3NzfPnzx87dmyapqlNmxubkparZWZuLDaWy2XXdbVW25Ik8V9lHMc77rgjnQ+65UEHhwf33H1PKaW19uhHP/qOO+5I5y033wIAlftNbcrMP/3zP32D13+DrusAQIh/h3Pnz/313/z1fffdN5/P77n3nrvuumv30u7LvNTLnD51+k///E9f/MVf/NSpU7Yl8SKwLeno6Ojv/+HvZ7PZYx79mLvvvvtP/vRPHvHwRzzt6U+rtbZsT3va0x7+sIeXWh73uMc98clPvHjx4iMe/og//dM/ffCDHnzu/LnFYnHyxMk//MM/fKd3eCdJXGa71np4ePjkpzx5Z2fnCU94wsHBQdd1L/WSL7WzvfOHf/SHL/MyL1NrlfR3f/93fd/fdtttf/8Pf9/3/Wq1Ojw8fPjDH/73f//3j3rko86cOWNbEv+S9Xr95Kc8+S//6i/HaTx54uTF3Yuv9Iqv9Ld/+7cRkc7lcvmSL/GSj3n0Yy5evHhweLBaryJiPpsP4yiptba9tXXTDTeVUvjPZFvSar364z/942mabrj+hic84Qm/87u/c/NNNx8eHT784Q9/8lOefN99991y8y0AoN/9vd99jVd/Ddvr9brv+4PDg+2tbf4jSNrf31+tVqdPn56m6ezZs6dOnQIyc7FY3HPvPadOnuq6zjYvMknr9fri7kVgc3Nze2t7vV6vh/V8Ns/MaZqGYTh58iRw9z1372zvSJrP56vVKjNLKbZLKZf2Ll1z5hrb3E/SMAx7+3snjp9YrVZd1w3DMJ/Pa61333P3dddeJ+no6Ggcx4jY3NxcrVa2a63TNG1ubt53333Hjx/v+942IMm2pDvvuvMv/+JPX/e1X8v2xmLxa7/5W6/4Sq924vhx22fPnu26rrU2X8wPDw/ns3nf93v7e5KEFovF1tbWMA7DMGBKLRGRLVs225K2Nrf4LzEMw7333Yu58cYbj5ZH6/X62M6xS5cunThxYm9vb7laXn/d9cDv/f7v6Xd/73df49VfIzMjgqv+Q9gJId15151/+Rd/+rqv/Vq2NxaLX/vN33qlV3q148eP8yKwLYn/8VprpZTf+/3fqwBgANrRepymkAxgmyuMAYwxABiwzRW2AQBjAGMA29gGai3f+l3f/uZv/GY33HDDMAyS0ikEGMCAeU7muRhzmW0ASWCemyTANldI2AAIQNgOyQDi2WyQBIAQICQbhZB4JiEBIAQIyVgKJEHCmc154YWxzQPYlsRltiUBkmzzXATmCkncz7YkwLYk25IAYyHbAEIIAGwjMJJsSwJsAwgMgBCybRuQBNiWBEiyDUgCgAoAJeKHf/GnvvRXvm9na0uoRJSIEqUoSkSJUiJKlBJRIkqUoihRSkSNKFFKRIlSIopKiSgRJUqJKFFKRFH0ff+t3/3tB317xKMeOQ5DLbVGlCgloihKlIgIBEgICYQACSGBkACQJBASCAFgbEA2AMaAsQHZABgbwAawBWBsABvAyTTRRqaRaWIaaSPTyDQyTUwjbWQamUamiWmkjUwj08Q00kamkdZ0uPc3j3mV1/nkL+4B83xJ4gEkcT9J3E8Sz0s8L0kAIAmQBABCgCSekyQAAUjiMklcIZ5FkiTuJ4n7SQJsA0Dlfk98xlP/5vzTr+WMoJbaRamldqXUUrsotdRaSldqF6WWWkvpqJXSqdYoXak1spbaFWpRF6pFXSmUElEoNfrZfHPRbS+6Yxsxdn3tapRaaldKF7WWWksJJJAkCCQkISQUIEkgJBRCSCAkAGMLY7DB2LLB2BiwbDA2NoAtG4yNDZbBybhmWDOuGdaMZmgEkHikrfGatmZaM6wZ1oxrhjXjmmHNuGZYexrr/sVnMF9N2dfgX7J/sL9/sN/VTtKxnWPL1erSpd3ZfD7r+q3t7f39PZsIrYdh3s/W4/r0ydOHR4fANE072zvr9frg8GBzc7O1Zts2UKJMber7fjFf7O/vG4/TVEsJxc7Ozv7B/jiOwzD0fd8yF/P5er3OzMV8MbVmZynFtu2I2N7avvfsvVubW8vlcjabzefzixcvzufzzNza2u5q5VmgAoDh097vo97ylV63OSXZBgBJtgFJ/FvZ7mr3mAc/8sVPPOghi+vXsZYkJMnNNBhIN8A2kqGBbUDIWBIQEbYzU5Ikp40lSbJtW5IkZyIBkmzblgRIAkAAiOerW9DxIjFgJNuAAJA0TtNrPPyROzUAxAt3dHR0dLSczdpytVosFhEap3HmWTqd2Vrb29+zXUqtpazXa+Dw8HAYx77r4lhc3L2o0MHhwTAMpdTWJtu11NlsdnB4sJgvLu3vdV0nWC6XIW1ubdpeLpfrYZham6ZpvV631uaz2eHR4TAOEUWwHtbr9frYseNbm1vDMOzlfillb3+v1mr70t6lvuu3t7Z5IKgAkK3VvnuZl31Z/tP80A/8kCT+f8jMiOA5SbIN2JZk+9prrr32mmt5gK3NLe536uSpUydPcb+TJ04C115zLfe7/rrrJfGC3XzjTTynne2dne0d/iW2JQG33HQLD7Cx2OD5ggoApZR77rvn4PBwY75IZ2t5+tTpcRwu7u6CS6lnTp2ez+fpFOLfJCLSibFdSrnzzjt/4Rd/4RVe4RU2Njbuu+++xz7msT/9sz99/XXXP/KRj9zZ2fmHf/iHvf295XJ56uSp9bC+7trrnvyUJ89n82uuuWZ3d/chD3nITTfe9Hu//3td1x0tjx58y4NvvvnmX/7VX77h+htaa621a6+99qEPeegf/OEfrNarzY3Nzc3Nvu9f4eVfobUmiX83SdM03XXPXV3tIqK1du0119539r71sMbe3Nw6c/oMzyMz+9kMkARI4t9HEv85JPGiiQig1loBwPbO9s58Ni+lSLLdd10tpT/TT22qpS4WC6Co8O8QCoRtYHt7+03f5E2vueaa1trJEycXi8Wrv+qrd3137NixxWLx4Ac92PalS5f6Wb+YL06cPLFYLE6cOJGZ11173fbO9mKxeMTDH9F1XT/rtza3+r5/uZd5ufl8npm11q7rZrPZi73YiwGttRPHTxweHgKlFP6DKGJne2c+X4zjEIoocWznmELjOC4WC0k8J0kbG4snPOHxL/WSL7VaryXxP5lB/MsMOEq57bZn6Hd/73df49VfIzMjgv8qtiXxf5dtSXfededf/sWfvu5rvxYgCfiLv/qr++47Kwkw/xcIWms333hj5QGMMVdIsi3JGCOJ/ziSbAOSANuS0ikESLIN2JbEZbYlcT9JtrmfJNs8gCTbPIAk/kPZlsRzsi2J5yQJAF7tVV5lvV6Pw4D4P8JImlqrPIAQ4lkkAUKI/3CSuJ8kIBTcTxIgiftJ4jlJ4gEk8Zwk8Z9JEs9DEs+P7VrrarU8PDxSCPN/RkTs7GxXntN6vW6tzefziJimqdYKXNy9eGznmO1SClf969mutV66dOmP/+zPZ7OFbf6vkDSOw9bmonI/25JW69Xtd9zedd2jHvGoZ9z+jM3Nreuuufbpz7j1QTffctsdt73EY1+i1spV/0q2+777m7/7+5d72Ve88cYb+T/nl375lyr3kwTM+tmNN9zIZdddcx0CuOmGG7c2t2664aZaK1f9m2Q609vb20BmRgTPT2byAJLA/A/WWtZajx07VnlO8/l8Pp9z2ebmJpddc+YaYIcdrvq3Eki0TC47Oloul0dctlwuSymLxeLChQsPfehDeW7if7AIgNZa5XnYBiRxP2NMa42r/h1s80z6lm/9lnvuvvuRj3zkalgtl8vDw8PXes3X+uVf+eUXf/EXX61WmXn+/PlXfqVXfp3Xfp3MjAj+h4PK85DEcxIy5qr/IHY+4uGPeMmXeIlrrrlm59jOPffcs7m5ubOz81Zv+VZd143juFgspmk6eeIkIIn/+aBy1X8hARARb/7mb8b9HnTLg7jslptv4TnZlsT/fFC56r+cpNZaKQW4ePHihYsXFouNG66/HhjHsZTCZZIk8b8CVK76L5eZpZSj5fIHfvD716vlzs7OarU8PFq9xZu/5cMf9rDWWikFsG0bkGQsBBhjAAQgZFsSYFuSbUmAbUkAYFsSl9mWZFuSsRBgG4FBYABJgDHmmSRsAIEBJHEFVK76LxcRBwcHX/nVX/GWb/amL/0yLwsFfPa+u7/1O77jDV7/jV7xFV6xtVZKkcT9hLhMCPFAkrhMEiCJyyRxP0ncTxIgCRDiMkkAAkA8ixDi2SSuEM8BKlf9d/ie7/3ut3qLN3upl3p55wBN0plrrv+UT/zED//oj77xhhtvvPHGg4ODYRxKKavVamtrKzNn/WwYB9vTNJVSJElqra1Wq63NLUmHR4ebm5uHR4fHto8dLY/W6/X21vZ8Ph/HcT2sp2laLBbL5TIzNxYbU5tms9kwDLXWiDg8OupqzcyIGIYB2N7anqbpaHkkRd93rTXb6/V6Y2NDklDLtrO9wxVQueq/kG3gvvvuS7eXeqmXf/rTn/yzP/dzL/PSL/0nf/ZnL/HiL/7Gb/Rmr/6qr/qt3/6tn/NZn7Nar/f29+xsra2H9ThOJ0+cODg4GKexlHK0XNZSaq2ZmZmHR4fHdo5d3L24f3DQ2tRaCvYP9g8ODx50y4POXzy/f3CwubFxcHh4bGfnnvvu2VhstNaOHzt+/sL5UuvJ4yf29/eWq1WJ2NjYsNnf37Nte/fSbikFKKWu1quQpjbtHxyM49j3/dbmVkQAQOW/hG1JT7v1aXffe/ervdKr8QC2JfGc/uhP/+jMmTMPf8jDbUvi/woDcPbcuRPHjwN/8Id/+PRbb+36fu/SpTvvugt41CMf+eM/+VPA6VOnTp86xXM6cfwEAGRmRPCcTp08xQNce821XHb9tdffcJ2437GdY9zv1MlTXHbi+Amew41cdub0GZ6H7dVqtVgsgMyUBFT+Cx3bOcbzkMTzuO7a67a3tvk/arFYtNaARz7iEU944hN3trdnD37wpd1dYBjWe3t7wGq1Ojg6nKax1io0m81Xq+UwDIvFxjgOp06eWq6WR0dHs352eHQ4DENEHD9+/OjoqGVub24dHh0uFouLuxe3t7aHYai1bmxsXNq7NJ/Nj46O5vP5ar2e9f00TVFKVyswn88vXLww62dd1w3DEBGZKUWEWmtd143juLW5NZ/PJS0WCx4IKv8lJNk+dfLUqZOneADbu5d2j+0ciwjuZ/shD3oIYFsS/4dIAh76kIf85E/9+PJo7xVf8ZVuvumma6+99ty5c33fAz/7cz9/4w03Aqv16sKF813XRURElFJms9ne/v6F3Ysh9f0ss91z372bG5vrYb2YL45Wy81xc7larlbrjcXGpb1Lfd/3XX9weFBrd3H3Yill/+BgPpvPZrOjo6Oj5dKbmyXi0qVLpUStddbPjo6OVqv1NWfOSDp3/tzm5iZmmqZS6zAMq/VK0nw+53lB5T+BbUk8J0mAbUncLzPvuOuOpz/j6Q+6+UGnTp6yLUkSYFsS/7eIZ3rN13itb/zmb/64j/3E62+4BaZrrr0R+P3f/+1v/rZv++3f+G3g2PbO8WPHeU7bW9vDOPRdb1vSieMnJPEAx48d57Kd7W2AYzzQ8WPHeaEe/tCHA8DW5tapk6d40UHwn0ASD2AbOFoe/f3j/z4zeYBSyks89iVuuemW+XzO/dbD+sLFC5J4wWwDt95262///m/zv01r7RVf4RUf85gX//CP/LBf//VffupTn/q3f/uXn/U5n/4mb/EWX/pFX/pSL/lSrTVFALZ5Tn3XA5IASQBgzP1s8zxsA7a5n20us82/xDYvHFT+o2Xm/sH+9tZ2RHCZJGAxX6zX67vuuevmG29+3BMe96BbHrS5sWksdPrUaQCQBPzD4/9hmqZXfLlXtC2J50sAJ46fiAj+tymltNbe9E3e9MYbb/zWb//Wpz/9aXt7+2fOnPmVX/yVV32VV83MUgoASOJFIMT9JPE8JAGSuJ8kLpPEv0QSLxxU/qMNw/C0W5/22Ec/dtbPANuSfvcPf/fG6298+EMf/g9P+Ifrr73+xPETtVYAg7ANSOKym264aWtzC5DECyAEHNs5dmznmG1JR0dHT7/t6Y9+xKNLKfyPV0pprb3US77UN3ztN9gGJAGttVIK/7Vs8yKQxAsClf9o8/n8pV78pSKCyyQBj3joIxaLxbGdY49+xKNLKddfdz0ASOIySbYf98THnT55+sLuhePHj/MisG0cCqDrupMnTirEfybbkrjMtiTbCCHbkniRlVJaa7ZrrcA0TUApxTYgybYk/tNZEv9OUPlPEBE8p+uvu57LTp44CdiWtFqvbr3t1oc/5OG1VkDS9ddev7HY6LquROF+//D4f7ju2utOnTxlWxIPIEmIy7quu3Tp0qyfnTxx0rYk/hNI4n6SAElcJokX2TiOXdeVUrhfrZXnJIn/bDbS3sHB+uhQEZjnJkBcdvLkyYjgstVqlZmLxYIroPJfwjYgybYkSUAoNhYbtdYnPOkJewd7j3nEo++5957HPOox8/ncPNt11163tbkJSHKmIjJTkqRxHJ/y9Kc89EEPnc1mwDVnrtnc2AQk8W/SWrM9TmOJMgzDfD6PEtlSkiRJl/YuzefzvuuBvf29zY3Ng8PDCB3bOXbPffecOXWmlMILZgDW6/Uv/8ovnzlzprX28Ic9/MLFC8vl8poz1zzt6U+b9bOpTdvb23t7ewcHBy/7si973bXX2ZbEfzTbkvbOnzv/kW80v3hv1k4293MU7V9s7/FJ+ebvo4PdseXu7oWHP/yRmRkRT37ykx/3hMe95Eu85GMe/RgAqLzIIoJ/K0lcJon79X1/y023ADvHjm9ubbvUS3uX7jt331Nuu+30YvaoRzyKrp9Wq/vOny/zxZ2P+5utk2cuHC1XB3sXdi++0su/0ubGZpTY2d4ppXDZyRMn+fe55957zp4/O5/No5RSyqyf7e/vzefzg8PDG6+/4eSJkxd3d6dpvObMNTvbOxcuXjh3/txivlgsNoC77r7r2PaxxWLBv0TSK77CK0bEfWfv6/t+Y2MDmM1mN9908/nz57e3txcbi+PHjp89d3axWPCfRhKwcezYwXt80nDxnGrF5lkkxsEPfXGvB1Sj+MTJU4Ak4KEPfejW1lbLxhVQedFIWq5WpZbWWi11mqZSa2stQhjbUaJNrdY6TVMpJZ1Cklq2WmprrZTSsknC2I4SbWoRylKv73TbX/zen/3tX7zUe3x4Odq/5ql/rdXhvf/wh3HqOmq/ODoc7n5yO3vvdOqaet9dB7c89kE3PygUwzgA1565VtJytepqnaYpSmCMhTKz1jpNU6mltSYUES1bLXWaplrr1KaIgm07IjLz+PHjs9ms67rMTNuZs/70xsbG1ubRxmJjuVzubG/PZjNgPQxbW1tbm9vDsN7c2ByG4aYbblIEL5QA6Pv++uuvB6699lrg1KlTXHbttdc+7GEP434PfvCDAduAbUn8J6i1u+GN35EXmSRgc3PzIQ95CNBaK6UAlRfZOA7TNBuHkRnrYT2DYRxqqcaZWV2HYUCsh3Xf9VObJEXENE10rIf1Xffc5fTDHvKwcRpt16wt22233uaIR19/3b1DO/GYlz517Q1PesI/tGOn88SZW1fTY0/fuOVpft3Ntz758Scf+VIL5daZ66950KM25vO9/b2n3fo0pL7rHvOox6zXKzEfxqFmTWcp5fY7bj88Onrxx774ar3aLJt33nXnhYsXXuKxLzGMAx3rYY0YhqHWmplALXU9rBfzhefuum6apogIxdSmWut8vpA0jMPW5lZrLZ3YG4uNUkopZWptGsdjO8ck8R9NEv/FnDyLghcFVF40to/tHJvNZov5ApjP5sB8PucBFvMFMJ/NeU62n/r0p546eerUqVNd7WazGfd7yIMeEqEym7/4m73TrKuCvXF6+Gu80d8//vG/96WfetfLveo7f+Jn9XDddQ/anM83+p77nTxxctb3SF3tutodP3YcmM/n3O+mG26KiK7W48eOAw+6+UHXXXvdfD6fz+fAfD4H5rM5ANgG5vM50Pc9MOtnXDZjBsz6GTCbzXges74HmM95ERiAaZqe9KQndV23tbVVSsnM5WrZWjt+/LhQOkuUxWKxf7C/vbV99913Hzt+bBqn48ePz2Yz/qNN43jvL/3QtHtOpaNN3jzml3ttnkdmnjhx6sSJE5kZEbffcfu99977kAc/5NSpUwBQeZG11gDbkmxLMhYCDALbkmxL4gEk3XzTzVubWxFhW5JtScBisQDAG10F2zz6YQ/f2th4wvd/w+es/vbJv/AnP3vjg9/+3d7rzNZWczoTIUVrLSI2N7eAzMzMiABsSwL29vee/oynv8RjXwKwDdRaa63GgJBtSdzvyU998qyfPeiWB9kGJHE/YyHbkmxL4n62JdmWZBAvqtbarbfdOp/Nl8tl13clyvnz548fPz6bze6+5+6Dg4NHPuKRN9544xOe8IRHPPwRT3rKk3Z3d7PlG77hG1537XW2JfEfwbako/1Lw499w3z3nqwz1kfc9PDp5V4TgXkWSVNO5y+cO3HiBJctj5Z//hd/vl6vX+1VXw0AKv9KkgBJgBAACABJgCSex872DmBbEiCptSYpIoDWchzH+Xwusb1zHNh5xIv/1V/93F3zM/vpqU1Hh4dPvfVpL/XiLxUK4HFPfNz1115/+tRp4B8e/w/XX3f96VOnbUsax7Hruu2t7Yc+6KGSAElcZiwEAJKAe++7d3tre2Nj4+Ybb44IQBLPSQiQBEjiASQBkgDxIhEAs9nsTd/4TW0DkniA/YP95dHymmuuAR76kIdm5iMe8Yh77rnn1KlTfd8DkvgPIgl75+Rpfctvr44OFcFls0weSAAbcPLESSAigIc+9KEPf/jDJWVmRACV/xK2JUkCjIWe/LQnb25s3nzjzcAdd93xuCc87k3e4E2AzIyIl3zjt/qJ3f03euO3eMOXfmkyt7a2H/nwR0YElz34lgdvbW6dPX/2/IXzD3/ow2utgCTgiU954nq9vumGm6695lrbPIAQz2n30m7XdRsbG4vFgv9CtiVJ4nlsb21vb23bliSplAJcf/31/CeRbG9vLLY3FrzIbNdauSwzAaDyX0IS9xMCbrnpllIKl11/7fXHjx3nsogAHnLDDZ/4CZ/Sdz1ABLC5scn9tre2gc2NzRJlsVhwv2EYHvaQhx0eHs5mM0ASz8NYiMse9YhH8QCttXR2teM/maSDg4PNzU1JwGq16vs+IjIzIqZpqrVO07Rarba2tqZpqrXyn8WSLu1dWh0eRgTPVwQAOnnyZCnFtqTd3d3Dw8NTp07NZjMAqPw32VhscL++7/u+5wHm8wWQmRHB82O8sdjYWGzYBiQNw/D3j//7F3v0i50+dRqwLYnnIcTzsC3prrvvOjw6fPQjH21bEv8JDMA4jn/4R38oabGxuPuuuxXKlq/wCq/wN3/7N7XWRz78kU980hMf9rCHPfnJTz516tTh4eF6vX7t13rtnZ0d25L4D2Jb0qXzZy98xBvNL94z1V5Onk1k82xj+pzv06nrx6PD3UsXH/HwR9qWdNfdd/3+H/z+S7z4S7zKK78KAFT+Z7AtiQewHRG8AEKAbUlc1nXdox/56K7rANuSeB7jOI7TuLHY4DlJAq679rrMBCTxn6nrukc+4pHDOITi2muu3d7ePjo6OnXq1Eu95EsJnT59Op0333TzmTNnVsvVxsbGxd2Li8UCkMR/HEnA1rETh+/9qcPueZWKzXMwUVgcc3PU/vTJU4Ak4GEPfdj1110/TRNXQOV/Bkk8J0n8SyRxP0kbiw3AtqR77r1nvV4/6JYH2ZYEAE+/7em33nbrG77OG/L8dF3HfzIBYPvBD34wz2NnewcAHv2oRwObm5tcdurUKcA295PEf5BS6w1v+Pa8yCQBs9lsNpsBrbVSClD5P0cSMJvNFAIk3XPvPXsHe4982CMffPODb7juBv6VbAOS+A8iiX89SfyHs5ESGgjM8ydgHGvXcZltSTwQVP6POnH8BGBb0tbWVt/3QN/3fd/zIrMt6clPffJisbj5xpttS+LfwQCM0/h3f/d3N91002q5Alpr8/m87/uI6Lru0qVL4zSeOH7i4u7FzY3NaZokdX03DmOtFai1Hj9+nH8/G2l1dHTfd34hF+6jdtg8lwhWR361Nx0f/QpbXXfd9TdkZkQ86clPevrTn/7oRz/6Qbc8CAAq/3fZlgRsbW6xyRW2JfGikQTccP0NJQogif8I0ziNw3jbbbc95alPOXXy1GKx2N3dBSLipV/6pR//xMffc/c9r/RKr1Si/M7v/s6xY8dKKa01RFe7YRiOHTv2Sq/4SukMBf8OBsE0DvnUv+8u3pulA/NcInS4ly/xSkSsV0vANnDPPffcfc/dZ86cedAtDwKAyv9dkrifbUmAJP6Vtja3gPV6PbVpc2OTfwcBsFgsXumVXgl4uZd9OUASYNt2RFx37XURAQAPfvCDIwLIzIgAMjMigFDw7yMJe+vY8e6rfnowEpjnQ7AeNA6bW1tAKQV4zdd4zdd8jdcEMjMigMr/D5L4t7It6b6z9/394//+VV7xVY4fO25bEv8aBkm2AduAJEkAYFuSJNsRwf0iwjYQEbYlRQT/gSTbM5hJAOL5m/XMetuAJB7ANgBUrvqXSAJuvOHGY8eObSw2AEn8KwkyczabAZJ4TpK4TBLPSRKXSeI/gSReNJJ4HqUUoNZauepFExE72zv8m0lbm5t//w9//5Iv8VLr9UoS//sZgJCe8YxbK1e9yGxL4l9P0mq1ermXfZm/+pu/+cVf/Bn+D5HUWnvYg2+uvAiMuQok8ULZlsTzkARk5qu84iuO0zQMg/g/wiBpGIbKi0DIWBJXvVCSeAFsd7UeHh3uHxyEgv8rjEuU48ePV57T0dEREKXMZ7Oj5dGsn5VS7rr7rmuvuTYzM5Ornh9Jq/VqtVqdOH6C52G71nrh4sU/+fO/3NzYTJv/KySN4zjra+V+tiUN43Dh4oXW2iMe9oi77rl7Y7Fxw3XX33XP3SdPnuy6br1eS+Kq52S71nrx4sULFy+cOH6C52G777u//ft/eMVXfJXrr7uO/3N+5Vd/pXI/ScDGYqPv+652th908y0Y4JEPf0Tf9RHBVS/YDdffcMP1N/ACZBrY2NgAMhMFgDMigMwEIsK2nSBJtoEIgTIzIniAzAbiv1tm1lq3t7crz6nv+56ey7racdnO9g6QmcZCEcFltiVxmW1J/J9mOzNLKZkJRAQvMgGQmUBEsL7X2lC//Td/93eL2eyRj3wksLe3t729HVGAzIwIYJqmvb29kydPXty9eM8999Ra77zzzkc/6tHXXXedbUn8D9Baq7wIbEvaPzg4OjpEuv7a626/846d7e3tre3b7rgNtL21dfLESduS+L8rM++5716Jo6Ojrc2t66697qlPf9qDH/Sgo6OjCxcv2Fx37bXz2ZwXwLYAABM77eIv1tMv/kd//JfDevdnf/5nb7zhxjvuuKPUslwuZ7NZ3/cHBwdd1x0/fvz8+fPXX3/9Ix7+iN/+nd8updxyyy3AddddZ1sS/xNA5UUgCSgljGWArtbWWkRImqbJNv8PRIRgHKeNxUatFSgl2tRqrZm27TQvEiHH/CWIh77e69T9/UtPv/Xp11173Q033HBp79IN199Qa93e3r7vvvsWi8XJkyePjo6mcRrH8Q3f4A1PHD+h0KVLl/gfBSovsq3Nra3NLQC47trruOyWm27hfpL4P03SDdffwAM8+JYHc9lDHvRgXmS2VTdi55HAIx7+MOBlX+ZleR4Pe+jDeH5aaxEBRAT/Q0Dl38S2JMC2JC6zDSAwkgziX2YbkATYBiTZlgTYlsRltiXZBiRxmTEGQAgZYwBJgG1AEmBbEvczBglsS+J+xkK2JfEvsS0JsA1I4kUgCWhtsp1p25K4n+0I2YABSYBNREiSVEoBWmu2wSCwEMI2CAyAwCAwSAJjAEeUiOCy1ibbNpIAMAgMAsA8kySVUni+oPJvIonLJHGZbUlcIQDxIpHE/SQBgCQuk8T9JAGSeAAhxLMIIZ5FEveTxAMIcZkkHkAIkMSLQBKXSeJfY7U8glZLLSFJmc12RAgZj+NYa5EEZLZMS2QDSGs+31itjuxWS41QZgpN2YBa6zRNtVTj1lopxXZEZHpqkyRJETGs11G6rputVgfCXe1KqGXaltRaq7Xabq2VUiVsZ2ZrGaXOZgueF1T+rYZhuOOuO4ZhOHni5DVnrrnnvntDKrVGhDNtZ+aJ4yeGYbj33H1d7WopGxsbXdedPXcO3Pe9FNecPnP23NlSyqmTp/b295arVS1lapPN6VOnhmE4ODg4eeLk0fLo4PBgPpsfHB7MZ3NgsVjsbO/Yvvveu0uUruuOlstZ39dax3FEOnn8xHK1XK6WXe2m1vqua611tdva2lqtV33X7+3vTdOE1NXOzmEcrj1z7T333lNrba1J2traOjo6Wg/rYzvHtja3+I9gAMZxLIVn3Hbnhd3d+XzW1a7raq3dNI7rYSilPORBD7rtjjvW6zWws7194vjxu+65p7U2n89vvP761WoV8p133zOMI/bU2sZisbe/v1gsSik33nDD3/7D329vb998001PfupTay3L5Wo26yNK3/fr9Xq5XF5/7bUnT54ahpXIO+66e5qm1XqNffzYMcN111zzl3/zN9eeOXP61Kln3HZb2huLxdFyef211y7mkZkRwXOByr+VQvPZfGtzq9YKHNvZuXTp0ixK13UHR4fORLKNWMznUtRSuGw26zGllFo72y2zlAJM05StUcqsnx0tl8A0Tev1umWrpU5TG8vY931mGo/TtFwt57M5qGXz6BLRdd1qtYpS2jRlZmZmyyGH+Xw+TdMwjpKAUBiP45iZ/Ww2jIOkvuszs+/79TDM+n4Yx9babDZbD+thGNjEtiT+VczzFRHjkNtbW0gRGsdpY7GxmM/39vf3Dw52drYlRaiW0s96Senc3FiM4zSb9a1lrbNpnDY3N3V0GFFKKV3X9X0vaRgH7K2trfmsd+bGxqKWmunZrO+73nbd2Oi7rtaa6Yg6Tt7a3Dw4ONhYzGupW5ubh8sj28e2t7uuk7S9vb1arSRtbW0CaSTxvEC/9/u/9+qv9urTNEUE/xqSJAFAZkYEz49tSbwAtiUBtiXxALYlAYBtSTynzJQkiefHtiSeh21JtiXxnDIzInh+MlOSbV5Ujih33HnnX/3Vn77ua72W7Y3F4td+87de6ZVe7fjx48A0Tc6plAIgZaYzIwJAmsax1BqSbdsts0RIykxFrbVO42i3iAAMtiVhS5qmqes629M01VptRynOTBsQSGqZtfYRMQ4DZCkFCbtlhtRaq7W2bNmylCLJNtBaq11fSuUBMjMifu/3f69mJlBr5d8hIngBJPGCSeIySTwnSdxPEs8jInjBJPH8SAIk8TwighcgIgBJ/Gt0tbbWJNnmOUVES43TxANkSzCAhJlaS2coQtFaSooIZ8tU7bppUmazbRshJKm1pohxnIxLlGlqBrVEKhG20063iJjGwbhEaWm35jQCSIioKl1XOjoAGwSmdrxAUO+99+7HP+HxJYoxiP+5DOJ/B2O6vvu7v/vbG667bpqmUgoAGIDMHNZHq9WylFJKsS1J0jRNpRSglDh77tzGYrFYzNfrVWbOZv0wTsN6mM/npXVdP5/G5eHR0azva63ZMjPHaVzMF+N6ioha69HR/mw2k5TZWsvdw8PadfPZrNY6DkNEAIeH+4v5fD0MfdeBQYg2DbDoup7LJADECwP19V/ntf7uH/7h8PBQEdhc9R9BUmvtphuvu+H661trpRQeoLVWQruXLp2/eNGZpdZpGrvalVJW6/Wsnz30wQ968lOfes2ZM8vVKlvr+361XtdSxmm69pprbrz++nEYaq1333PPcrVazOcHh4cnT5yYpmkcx1qr7Yc95CF/+w//cMN1158+feppt94qVEqUUoZhuP6665arVYlomffce+/W5qbtYRha5nw2m1p7zCMf6Uz+VUCro0uzxRY52uaq/ziSjo6W6/VqPp+31jY2Fr/2G7/1Sq/0asePH7e9Wh05p8yMCEmZiZStIdVSJNnOzMystRraNEUpIdkupZ/NF8vlgbPZRsKutdoep6mrNTMjYpqmiIiIcZpKRNd1tltrSM5EEkzTBNRap2kqpaQtkGI23yyl8CLIzIj4vd//vToMw5Of8te2JWFz1X8IKVu77rrrTpw4MQwDz0nSYrE5DAMYYxxFQPSybRsQlCKEbUmz2aadQumMKJnZdfPWJiGDRKYVzGczhbisVlomeDbrbbe0FFEKQAAAszoDbM/qzHaVIkpERAT/KlB/87d/97rrbqhdZyc2AsRV/15ZovzRn/75y73MS1575prVeuA5DesVpEKSAAlgmsZSikKZGRFgkKTWsk1jP5uP45BtFM3Idi0BgKepdbXazpyyaTZbtNamaVVKMRYoJGmaJimAiABsg22XEmBJmdmmVucb/GtBPX7i1Cu90itz1X+Ca6697m//5i9ueIPrWRsDGIBpmqDdd/bsarVSRN91mYl07TVnbrvjzogSUmaO0+h01/cbi8XxY8eGYe2cDg73l8tVZrZsmK7rbJ85ffqv/uavkXa2tm6+6cZhCOH9g70LFy52XRcRCk3jdN21117c3T08OlrM58AwDLPZDGitlVKGcVjMFydPnBiGdd/P+FeBWkoBpmmM2o2XLpXZrM7nvFCZyVUvlO1SCvY4javVWhLPo+u61WolqZQYx3EYR0zf9YdHRyUiIkqpq3Hl9bpEAICk1trB4WGJWCwWh0dH62HY3NgopRw7dmzW95JsANu11ogASimZuVytxmm0PZ/NDo+Oaq1draXEOE4Xd3e7risRQrbFFQbxIoJqG4goAWc/9ZM23+zNyxu+8e/+8i8+4pGPuu7a6+66+66bbryp67phGPb395fL5YMe9KCu67jqhbLNZUK2uZ8AqLUO2U6eOHnq5CkAkARM03TdtddJsi0JWxG2bdvq+tk0jcePHT954hRgOyIA2621hz3kITZ2ptX3s9baxmLrIQ/esW1bQlJrbXNjC5AE2AYDN1x/gyRJmZlJ388AEC86qABgG5je+V3nj3rMvXff9fgnPOGv/uZvXvu1Xvt3f+93jx079mKPfbE/+uM/igjbH/FhH9F1nW1JXPXCiRek72fDMLTWeCYDokzNYEDCNq0BkkqJYVhHRO02wLazTVOzDRjKMCaXlRLjOIBQjFNKqrWXZBtFy7SBFDIOhW2EnUKIUIzjwP1swJKEjCOilMrzggoAEsDpV3iF2nU3+cS7vsu7lVpm/ezFX+zFjfu+f/EXe/GWbT6fb25uZiZgm6ueH0m8AAbA9mp16Gxd15UIA3bLLKXYZGZIU5v6vs/MzJTUpqmrteWwHofFYnO1PLSniBJSKUWQJjNLKZlTZpYIATIwDNNisbVaHWWOoSilSMpsIY3jqtY6tVZLyUxM6bqpNdtcVmsVTNPYbEnj0ErtZ7MFzwUqzyRga74AgBtvvJHntLW5xf0kcdULlZmSeAGmaey7+rgnPOXg8PDkiRPr9bqU8pAHPegpT31ay3zkwx/2hKc8pdZq+/DwcHNz03Yp5Wi53NrcfMiDHrRcLrsaT7/1rvUwjNMkyMyNjY0H33LL45/4xPlsdtONNz3j7ttDWq5Wp0+dOn3q1HK57Lv4hyc8/ejo6JozZ9brdWttPpuVUsZpKqXccN11j3viE7e3ttbrdd/34zhubGys1+tpmiRJms/n0zSdOX1qq3aZGRE8EFQAkGT7b/72b46OjiLCmQgQz2YAJHHVCyAw6MVe7MW2t7Z5wUqp69XhzTfeeLRcAjvbW0LAqVMnpMjMUydP1lrHcTi2syNRSx2naXNjYz6fTVPr+8U4LE+dOrlarSN0cHDY9/1sNrN9zZkzXddJHNvZwd7Y2NjZ3p6m1s82hmH54JtvPjw67Lve29ur1WpzYyMilstl13WSbr7xxohYr9ezvleolnp4dLRer2ezvus6UGut7/o0EcFzgQoAkn7v93+378pNN1w3TpO46t9C0jCOv/Pbv/VGb/SmXVcxz0UARMRsvllqv7V9TMgYaK2dOnkNorV25sy1tkNhjAEQQraj1IjQbKOUbmdHwJnTAmy3bGfOXGs7M0+dPIMQmqapdl0ppe83auk2NrdtAyeOh23bm5s7xpl58sRp41DYacDe2tpBwthpEMrMrp/xvKACQGbu7++96Zu8MYir/s2cqLv33nvPnrvvhutvMC9QZosQdsuGhB1SOrNliXCm7UZGKeC0ZQxpS0FEZoKdNggM2CE50yApnaTTrrVmm9o0SpKU2UDYTYlVuz4i+PeDyv1CsV4tpeCqf6vMnC+KbUk8Pwagtdam4dz5s6CtzU2DMxGhWCwWh0f74zDO5jPM7qVLtdatzc1hHGw2NxbZpo7FNC73Dw4kaqm2JdVa1+v11Kau67ratWyhmM36e++9b7HYqLWM42i7REGqtbTWutpltvlik38/qNzPIIUkrvq3kgTiX5KZETo4PNq9dOnE8ePjOI7TuLmxOY7jzTfddPc9947juFytFvN533WKuP3OOzcWC9s7Ozs33XDDNE2l1L39/XPnzu3s7Czm891LlyKi1tL3M+yLly4dHh5ee80111933b33nV0sFkfL5ebGRmYuFovz588jsuVDHvSgY8dP2JbEvxNUns1c9R/FPF8CoOu65XJ46IMfnJmApNZaKcXG9kMf/GApMlOilGpnyywRmc7MqXk+X6yWRzfdcOPNN94IknT9ddfbti0JfOMNN47jOJ/PbL/4Y18sMyUAKcDXnjljU2vJTBGS+PeDylX/HRaLzWEYkAXGUaoxgEDYKAJoCRSptExQqbXvZ8B8sTEMa6cN2FKVLAQGBItu1loKDIoAgdMISi0RJSIkRcQ0TYAExhgA8WzmMpuIKKXwfEHlqv9yNuv1UeZUS7VdSkjYSEjKNDgUxq21zIyIrqtCU2ur5dF8sbFaHkW4lJAEMU1jrdXOiMC0zGxDXzvbLVuJ0nIqURSyLcU0DUnXdf3y6KDWAFqmTddVwHZrLRTpLKVIAiSmcZjGmM0XPC+oXPVfyABM01iCCxd2773vvo2NDWAYhmEYTpw4sVqt5rNZRKyHoe/7cRxrrRExDMNqtT518sQ1Z86sVqta9LgnPnEYx63NzVJKSEjL5bKrtdQ6m/XXnD7zl3/7N6dOnrzummtuu+MO29M0lVJqKcvV6tprrjm2c2y1WtYaT3jSk3YvXTpx/PgjHvawpz796SVK33cnjh8/d/78NWfO3HbH7UKGcRyvu/aarc2t1rKU4LlA5ar/chExrNuxnZ3WWq11vV73XZcbi76reLa1tVVK8f6eYDGfz+ezYRjXq1VrU9fVTNdap3F15vTp9Xp9eHRYSmxtbR0cHp04fnwYBmBrcwu8s7U163ugq7XrutZaa01S33URsimlTuPy+PFj89lssZi3bCUiQqWUiJjP58D21vbR8kiolHDaJkI8L6hc9V9IAJRSun7RpuGG62+0LQmQZFtSy8Q+cfykbdu2JV13XQDZUlFqrfbszOlrIiIzJaV9+nQ4UxJStpaZD3/YIzKzZd50482ZGRGAIaSptVr7iMC+4bobJWVma+0hD36owXZr7fSpM62106fOKAIQTK3V2knieUHlqv8OEeFSptYASYBtwHZEYIZxlCRkTFppQJKzZUbXda21qY1CLZvQ1KaIyEzbkqKUcZoAIVS6vm+ttWmUNLpJmsZBAmmaEogIRYzjhLAJKdMRJW1PE5cJTdPUdSGJ5wKVq/4LGYDMHIblcnnY1a7WsloPxrXWUNRaV8vDUkrXddM0jtPYd73EME7Z0rhE6ft518/HYXm0PHR6NptJiojlcl1K6bqutTYMY601IoDMSbONaVwdLQ/b1OaLOaaUsh6GkLquA5bLdamllIIppUxTa9na1CTVWqQAgyScbTbf4LlA5ar/cq1NtcTF3Uvnzp2bz+fAej2s1qta68u85Es+4UlPUsRLvtiLPf5JTxrWw/Hjx4Zh3NhYDMNweHh4+vTpB9188zCsI3T+wkVnjtN0aW+vRGxsbETEOE3r9XpzcwNzcHh46uTJB99yyzCsa4nd3UvrYZB04eJFYDGfz2azcRxXq/V8PouIo+VyZ3v7+muv/dt/+IcTx493XTdNU9rjONoex/HmG2+85sw1mRkRPBBUrvovV2u3Wg3XX3vtqZMnS4kSxTZgW9KLPeYxkoBHPeLhobAN1FqmqSkkmKaczRbr1eGNN1yPmdr0IN0MlFqmcUKEIiKmaYqIUqK1nM231uvDa6+5RtI0TTdefz1QSpnaJASUUqZpklRqCellX+qlEKGwPU1TREQEl6XpInguULnqv5AAkLRYbA3DelFngG0uE9juugrY7vsOGzBgd11nkFRrh9T1i8wG9ICUmbZn8xmAbZh3c2cCtesRXbeYNACzOpMkKTNrN+cKu+vmBttAPwPAAH0vAzagiFo7nhdUrvrvMA5rSCHjUgIjkZkRAhkHam0qpQAgJEBge5rWAklO124WEcN6FQGSnZIUsj21sZYKtGkNREQJARKttah933f8R4HKVf+FDMA0TZnjxd3d9bDeWGyM41hLWQ9D33cRpbVWa7V9bGf7wsULwDAMtVbbmSmp1hoRrbX5fDbHUm1tfd/ZC1JERNd16/Uqopw+dfLe++5BzPpZZu7u7s7n8/l8vlqtju3szOcZsSGJ/xBQueq/h6ZpypYXLl48ODzAbG5sLFexWq0zs9Z6/PixzK1n3H7b9ta24PDoqLXW9/3W1tbB4eE4DBFx4w3Xb2xsZWZEHB0t18OwsbFx6Z57+q7b2dkZhnH30iXbq/Vqe2t71vfL1erc+fPz+Xxrc1MS/4GgctV/IQFQa21tPHP6jCTbpRQua9lCIclY0Fq+zEu+NNhGkoRNZgK2a63TNEXUrqurVT70IQ8FMvOWm28ORWbL9CMf/ghJAFhSpgGJcZwUnST+o0Dlqv8Os9liGNZOG6ZmSQCUlgYDIKlMzYAkJ2AhFLalGKcM1UzbYyl1ak0SRDanbEuKNE5LsgG6rpdke76YS+I/EFSu+i9kAGyvVochSikRyuaWDSilSOKyzJbpGoGU2SIEOBuo62przTiCzGkYx9lsVsKtTaWUKDFNU1erM1tmLSXbVEoBD+vlYmOL/wxQueq/3DSNfVef+vSnL5dLSbPZzDaXtdZaa13XzefzG6677k//4i9Onz590403/uVf//XGxsbxYzut5eHR0fXXXgs8/olPfJmXeqnVavXUW2990M03nzt3rmVmpvFqudrc3ByGQVJESCqlPPiWW8Zx6Lqe/3BQueq/XCl1vTo8c+rUehgy22K+KKUcHh2BbQSIrc0t8M033bSYzwUPuvnmWd/PZrPlarm5sbGYz4GHPOhBtZTtra31el1LnD51KjPXwzCMw87Wdt93EWW9XkvMZ/OpTVNrs9mc/wxQueq/kACIiNl8s9Z+OySUmcYbG9uSAMB2Op2+4YabnG7Zbrj+Jtu2N7d2gMwEbt46Nk4T+MYbb25T62cCtiWuMMaSANuAVCLCRuI/GFSu+u+QmWCnDYAgndkSAGopAhW1aQJKhJ0GO3NyKcW2YJrGkEDZmkJOd/1cYhjWIdKJQUobu5TinIb1KAmwzRXCpu/nkvg3g8pV/4UMQGttGlcHh/tOI3VdBQkWi7mN7bvvuXdnezvtCJWI9TCM41RK2dzYyMzzF/ZPHD+emeM4AhExjIPQxsbCgyPKenV4cHiwubEpaZzGvutLKWfP3be1uRkRwziEQpJCpZTWsu+6tT2fb/BvBpWr/stlZilxeHh04eJF2+v1WtJisXj4wx7mzFLK7XfeGRHz2Wy5XM4XCzs3NzYPDg9OnTx18sSJpz796Q9/6ENns9kdd945jmPLXK/Xs75/1CMfsSi9nXbefuddglLLOE7XX3ftYr44e+7cpb291Xq9ubEhqeu6c+fPS9g86hEPn9eOfw+oXPVfSAB0Xbdajtdec801Z85ElGEYai0RxXbUavvlX+ZlbEsxjkMpJaKAbQA7X+FlXw6QeNQjHiHFMAwR6rpumlqpfURkm17mJV9yas3pWgtg+8Ue85jMlASSZPvaa64R1Fpby1J6/j2gctV/h/liYxgG27Zn8w3bXJa2kBGyoesXNmlLGABFkaKUAgamqfWzhU3LLHUGtNZK6VtmRBAytpEwSAVApAG6rgKZWWonMY6jJDAgKaJKvKigctV/h/VqaVotNUKAje2IwEpna1NEsTMUxlHCdkTYFmptyqTr+tXqSLiUArIl5TQOtdYISQYEU2t9VzMzM2tXMWlHSNI4jlL0XUzT5KZSIlsiJI3DaDSfb0riRQGVq/4LGYBxHCP8jNvuuLC7O5/Putp1XVdLWa3XXa2l1uuvvfZptz795ptuevITn7i1tZWtpZ2ZpRTB5ubmmdNn1utVCZ70lKeWUmZ9b7tl3nj99bfedpvtWd8fLo92trZPnTz513/7N7fcfPPm5ubtT31qV2vXdcM4rtfrW26+eRiGCxcudF1XSjlaLufzObBarRaLxU033DAM69lszosCKlf9l4uIaczt7S1JETGM48ZiMZ/P4+Cgtba9tSlpPpth72xvR4nSd0ir1WrWz1prXVdtQpFtPHH8+DAMEbFYLNbrdWba7vvu+PHjXddFhKSdnZ2+61pr6/V6Z3u77/uj8+eBrqvDer1YLKKE0/PZbHtra7VaaTHf2tiYprF2C15EULnqv5AAKKU4Z6dOnjlz+hpAUst0+tjOcYnWMrPddOPNrU233PwgMGATEbbBmRmlL6WMI9ecuVYSYKekqbVHPOwREq217e0dTMv26Ec+amotM1/6JV/KxvbpU2ckpqmdPDlXhNMSkjJTkqSWaavrel5EULnqv0OpdRjW09QQGCSgZQODRIzTJDROE4grpobUdX3XF9vDeoXUMsEACCw0ThMAIhMQWq9HJKFhnAAQABaammkTCACDwGBQ13W86KBy1X8VSQbA9rBeKoginpt4JgEgnk22p2koZTGsV5KFSgDiOYjnJp5JPJt4JvFM4pkEjMNKs0VE8KKAylX/JQw2JQKw3c8W/FtlZj+b85+sdtjOTF6ozIyIUkrlqv8SEQLvHxzs7OxEBP8OkvgvIYl/SUQAly5dqlz1n0/SMIwv81Iv+ad//md//dcFG/F/g6RhGLuqylX/+SRN03Ts2LHXea3XuPfee6dp4v8OK+LYzrHKVf8lJLXWFovFQx/60Mzk/xCJcZwqV/3nsy0J+IM//KP9g8OIAPN/hOx86EMeXHk2cdV/DtuLxeKP/uRPNraOv+Irv/p6tZZ4FoMQGMTzYRDPZhD/UxiQ4ld/7Zcr9xPYlmSbq/5NDGAAiedi7+8fvMzLvOKs72d9z/8t119/Q+V+6ZzNZ5ir/s1aaxCKyEyeR0Ss1+uNjQ3DdO5iZKrEuL3ZpnFjY5N/E9uS+O+TmRExTVMFgIjouv7v/vbvrr/++nEcJXHVAxjEv8BYqGU7f/7CK7zCSUA8B9tIgOAZf/fb+xfPn3zQI3//yXfuXjj/Yi/24k+/9emnT50+fvz4DTfccOszbnV6mqb5fH7vffeWKA960IOcPnv+7MULF7d3tm+5+ZZz5869wsu/wvHjx21L4r8XVO732q/1On/xl3/xd//weCnA/EtsAAkMArC5QoB4FhtAwuZZJJ7F5nlJ2EhcYXOFhI0ExiAB2DwXCZsrJDAGiediIwHYSAA2z0viRSTpNV/jtRfzOYB4Qf7i9qfc+fi/fokn//1j3vi9V4eHT3zSE6+//oZ77rnn4OBge2v7rrvuGobh2muuve322/q+XywW95297/bbbr/hhhsWG4vbbrvt0u6lUsvW1hYgif92UAGgtdZ13Su/0itz1X+EzIwIXrCXfs13fpmXfeNrhuH4S7008Kqv+mo8wEu/9EvzvwtUAJAEZCYvAkl33XOXFF2tEWGzvb21Xq8PDg/ms/kwDBsbG1ubW621dJ49d3Y+m0/T1HWdbdsRAexs7wC11gsXL6zX677v0xkKSaWUaZok1VK3trZW6/V8Ntu9tJvOEgUYxrGrFTRN487OjtCl/b0SAUREZkaU1ibbETFNU9d1pZT1en361On9g33btqdpKqXYXswXpZazZ8+eOnmq67q9/b3WWpQyrNellL7vbdve2d6ptdrmXyJJEs+PALD9qAffDDcDto2FANuS+JfYlgRI4n8IqDxARPCi6bputVqFZDyO42Ka11KnccouJa2HYWc70q6E0HK1XMwX0zTZbq0BLdvO9k6UkNR13dHyCHD6cH3UdRXIlrXWqbWd2AkJsX+w39UuSpFUS7G9Wq8AUGttb++SFPP5fHtr6+joqOu7NrWpTZIW80VrbZqmYRwkdV13dHRku5TSdd3+wf5sNiuUcZrGaZzP56vVSlKxpzbZbtk2FhsRERGSJPEisM0LJiltYRlFCHGZJF4EkvhvZVuSbZ4FKgDYts2L7JrT1/A8btm4hQeopQA33nAjL9TO9s7O9g4v2GKxsP3gWx7MC/aIhz2C+x3bOcYLtrmxubmxyf12tne47KEPfgiX3XjDjbwAtnnRGAvZ5vmxHZKNhcC2bUmSACAzI8K2bUmSWmuSIoL/ASRlZkQAmQkAtZQClFL4H0wS/wNI4kUjBMz6WWYiYQOAAbB9+x23p22n7Y2NTdvjOO7t7z3o5lsW88X5ixemaczMvp8tl0fL5fLkyVN91x0/flyI/ya2Je3u7v7iL//iyRMnW2snT558lVd+FQCod9xx+8XdXa76D2V7Pp//3d//3bFjO87kfgIgIra2tgwh2QYkzfq+77taq6S+67paAVC3c2zWz+b9LCKE+O9jW9L58+f39/cf8fBH3HvvvQcHB1wB9RVe7qX/4Pd/exgGSeaq/xgSreXJE8cf8YhHDsMwm815TidPnOQFO3H8BP/zRATwsIc97GEPexj3a62VUoB684033nzTTUfLJTZX/YcyTOM4n88zEwAMgO2WTYjnZCzE87AtiefHNpdJ4jLbkmxzP0mAbUm2AUnczzYvgCTbgCQeIDMjIjMjQhIA1PUwALUUrvpP0HedbQABiGcqUfgPIon/WqUUoJQCZCYAVElc9Z/GNs9LCPFvZVsS93vGM55x6tSpra0t28vlcr1ed113tDzKlq21Ust11153tDw6PDzcWGy01tK5mC/W63Xf933fP+nJT5r1s5MnTx4eHs7n8/vO3re5sZmZXd/dcP0N9957L3D8+PHZbAasVqu+77ksImxzBVSu+i8nxL+DJC6zLem3fue3Ll68uLGxIam1dsstt+xs7/zVX//Ver0ex3F7a/vYsWOv+iqv+pu//ZsXLlyotW5sbETE6VOn//4f/v6N3vCNLl68+MQnPfH48eOzfnZx9+INN9xwcHDw93//933fP/IRj7zjzju6rpN08sTJqU2llMPDw82NTdsXdy++2GNf7E3e+E0AQIf7F7jqP1lmbmwsfu03fusVX+nVThw/3lrb298D1ut1ay1KKaWEFBGttZYNNOv7YRiuOXPNMAzL1bK1BpRSVutVa21rc6uWurm5Cdx5151PfOITr7nmmtlstrO9s7GxcXBwsFwtu9oN47C5sfkPj/uH13rN1zp79uxytSxRur47ODhYLBZHR0enTp26eOFiqWWapu3t7Yi4ePFiibLYWEzTtL+/f/zY8dV69YxnPOOWW26ptR4eHq7X62uvuXY9rMdhPHPNmdOnTgO/9/u/V7nqv5zt9TCM4zBNE6ApSglJoRinMaKAJa2HtaTW2npYD8MQEV3t1qv1cr1czBe2Ads33nDjjTfcyANsb2/zANdddx1w/fXX8/ycPnWaB7j2mmt5Ho94+COA1Wo1n895gKPlkW1JQOWq/0ICoNZ67ZlrJPGC2ZYEbGxszOfziABsSwIyUxIgybZtSbYlcZltSbYlAZJscz/bkmxLAmwDkiRN0/RzP/9z+wf7pRRJW1tbW5tbT3v60171lV/1tttv+4fH/cN6WNdSH3TLg4xvuvGmV3+1VweAylX/5WxL4oWSxP0iAgAkAUBEcD9JkgBJ3E8SIIn7SeJ+kgBJXCYJADKz1nrdddfpPkk6fuz4hYsXuq5bLBbjNJ46deohD3nIMAyPfcxj5/P5bbfdduLECa6AylX/5STxP1JEAK/yyq/C85OZr/Dyr8D9HvmIR2ZmZkYEULnqv5ABsN1ak8S/m21J/AexLSkzjYW4TJJtSZKGYQAk2ZZUSuEKqFz1X0gASKq18kLZlsQLYJv/BJKAUgovQCmF59RaA4DKVf+FDEBmnjt/rus6KVqbIkopIUkoM4dxqLUeP3b88OjQprVWSkzTlHZIXe1ms1mtlf8EFy5emM/m4zQ6vbGxAUTEarWqtfZ9f8899yAkZebBwUEt9dixY6dPnwaAylX/5dJ58dLFUBw/dnw9rIdhmM3mJUJS1/fL5XI2mwFHy+V6vZqmqet67IuXLm5ubO5sH5NUa+U/VGZGxK//xq/fddddwNHR0YnjJ4ZxOHXq1K233tqyvfVbvvWtz7j1b/7mb/q+v3Tp0k033VRKefSjHv3ar/XaAFC56r+QAChRHvXwR2VmRAC2WzYh26WUE8eOZyZw8vgJQCGngRtvuLG1lpld1/EfLSKA137N156mKTNba0944hM2Nzcf9rCH7e7ullJuvOHGzc3NV3i5VxjHsXa1tTYMw4kTJ7gCKlf9d7AdEbYBoJbKZbaBUortUgpXFADbpZRSim3+E9i+5ppruN+DHvQgLrv+uuu57OEPezjPo2UrUYDKVf8dbGcmIAnITO4nKTMlZSbPlxACbAOSbEvi38G2pKlNmCsk2eZ+kmzzALYjQhIAVK76LydJEv/zBMG/UmsNACpX/RcyANM0nb94wZmllK3NrQu7F5bLZd/34ziViNl81tXu9KnTtiXxP09mRsQf/tEfrtfr13nt1wGAylX/5STVUmaLjfWwXg/r2WyemaWUWT9LZ9/1/M8mCThaHkniCqhc9V9IAJRSTp08BWyxxTOd4nlI4n8kScDrv+7rA621UgpQueq/kAGwnZk8gLEQDyDJNveTxPOwDUiyzX8VSbaBzJQUEQBQueq/kHimUgovlO2I4H62eR6SAEAS/4UiAiilAK01AKhc9V9O0npYC5VSJA3DUErJTEmttczs+77rumEcShQuK6XwP8Z6vV6v1y1bRBzbOQYAlav+CxmAcRzPnT8PgLe3ti/uXry0d2kxX4zTWEstpWxtbl17zbW7u7uI+Wzu9LFjx2xL4n+Ao+XRn/3Zn01talN7izd/CwCoXPVfSADUWk8cPz7rZ+M4tmzXnLnm9KnTtrvatWy2SynAzvZOaw3RL3pAEv8znDh+4rGPeex6WNdSuQIqV/2Xk7Sx2ABKKbxg8/mc/6luuukmLmutlVKAylX/hQyA7daaJNsAAvNcJAG2uUySbUk8gG1AEv/JbPOcbNuOiIgAgMpV/4UEgKRaK/9L2JbEC9BaA4DKVf+FDEBr7eLuxcxcrdfgjcUGME1T13VHy6NQ9H2PFNLU2nJ5dGzn2M72ztOf8fTNza0SMU7jrJ9l5tHy6EE3P0gS/2lsS3rik5548eLFhz3sYeMw3nfffdffcP16ta5dXcwXJ06cAIDKVf8dWmZmy0w7F/PFwdHhNE2ZCUytxTTt7Owsl8tszfY4jZL6vp+mcXP7mHFrbZqmiLAtif80mVlKuf3225/8lCc/47Zn3HzTzX/8J3+8v79/7bXXXrh44aVe4qXe7E3fDAAqV/0XEgCllGvPXMMDbG5u8jw2NzZ5gFtuuoXLdtjhv0opBXjN13jNV3yFV9zc3ARe4iVe4u/+7u9e9mVfFhMRtiUBlav+y9m2DdgGJAG2JdnmMklcZhuQZBsJWxKX2QYk8Z+s67q+720D21vbr/oqr8r9MlMSULnqv4MkQJKQMRAKY0lCiMyUBEgCJNkWIrBtG5AESLLNfxpJklprXGbbdkRwmSQAqFz1X07S1KYSxXZzC4WkKadSCmbKyemu61prkgDb6aylTjnZ7moniQeQxH+m3d3d48eP8/y01gCgctV/IQMwjuPZ8+fGcVitVi2zltL3s8Ojw43Fxmq9KqWcPnnq5ImTF3YvDMMwDONsNmut7V7a3dzYPH7s2Hw239jY4D+fbUkXL178/h/8/oc97GGr1aq1tlqtaq3Hjh07Ojo6c/rMa73mawFA5ar/crXW7c0tY8C27Yg4dfKkbdsRsbHYADYWG7N+Jsm2pO2tLUmllL7v+S8hCZgv5i/9Ui9da10ul621crLs7OysVquNjY1TJ09xBVSu+i8kACRtb2/zL9nc2OR/gMV88Rqv/hq8AK21UgpQueq/kAGw3VrjOUkCbEvi+bGNJJ6DbUn8J8tMSba5zDYgSVJEAEDlqv9CAkBSrZX/PUopvAAtGwBUrvovZABsX9y9OJvNhmG0s5QiaWd7h/8lnvLUp0i66cabLl26dM011wBA5ar/QgJAUmZeuHhhuVxmJtJ8Ntve2pbE/wZ///d/f+78uYODg4c//OFv/qZvDgCVq/47nD51umULhW3bgCT+l3it13otp5fL5c7Ojm1JQOWq/3K2gRLFdkRwmW3+N7B94vgJ7peZkoDKVf8dbNsGbHM/25J4AWzzAJJsA5Js819FUmsNyMyIkAQAlav+y0kCAEnptB0KICKAzIwI27YjAmitRURE8D9JKQVorQFA5ar/QgZgatPTb3163/er1WqxWEQUbNs33nDjcrXa398bpzEUtat7e3uZefrU6VLK8WPHbUviv1tmRsSf/OmfrFar13rN1wKAylX/5YRuvP7GYRw2NjYW80Uo1sPaNlBrmc1ms9kMkHTyxMlpmrquLxGAJP4nEMClS5ckcQVUrvovJABKKRsbGxtscL+NjQ0um/WzWT/jf7ZQAG/4Bm8ItNZKKUDlqv9CBsB2ZvKiMRbiBbAtyTYgifvZ5jJJtiXZ5gohZJvnRxKQzlDY5n6SANuSbAOZGRERAQCVq/4LiWeKCP6DSOIFsy2J55SZpRResELhOdmWxPNorQFA5ar/cpIA25L4d2utPeMZz9jY2Dhz5gz3u/OuO9vUjh0/dvLEybvvufvE8RP33ntv7ep6tT556uTxY8fvuuuuWutsNtu9tFtKaa0dO3bs4ODg1MlTrbVbn3Hrwx/28LvvubuWOp/P+74/duzY0dHRhYsXzpw+c/c9d5cotjc2Nk6fPg0Alav+m0ji38e2pLvvvvvP/+LPx2m88847jx07NgzD67z26zzu8Y/b29t7tVd9taPDo+/87u98szd9s9/7/d/r+35jY+PFX+zFH/7whz/xSU+89757T586/dd/89dbW1uHB4ev/Mqv/Bd/+Rdd1736q7363/7d3y6Xy1/79V975CMe+Q+P+4fXfq3XfsmXfMnz58//2Z//2au/6qv//C/8/Gq1OloevcSLv8TbvNXbAIAO9y9w1X+yzNzYWPzab/zWK77Sq504fjwz77r7LiRJtZT5fHFsZ4d/q8x8+q1P77t+b39vNptN03TNmWvm8/mdd955+vTpnZ2d22+/fbla7mzvZObGxsbGxsZisTg4PLjtGbd1fbe5uZktM/PYsWMHhwfr9frUqVOHh4d7l/Zm89nx48ePjo42NzaPHz9+8eLFu+6+S9J8Pq+1jsO4c2znzOkzwO/9/u9Vrvov17J1fb9cHq2HYT6bl1IA25L414uIhz30YTyPRzziEVz24Ac/mOdke2tz67GPfSzP6dixYwBwbOfYDdffwGUnjp8AbJ84ceLEiRM8p8yMCKBy1X8hAdDV7toz1/CcJPFvlZmSbEuyLQmwLUmSbR5AkiTbPD/GQlxmWxKXSbKdmaWUn/7Zn+67fr1e33jjja/4Cq8IAMFV/x2M+Y8TEZIiQlJESJIUEZIASZIkSZLEZZIkSZIkSZIkSaGQJElSREiSJAmQJAm47trrzl84/4QnPmFjscEVULnqv4MQ/wtFhO1XfqVXfuVXeuX9/f3t7e3MjAigctV/IQNgu7UmiX+JMUYSL4BtSfwnsw1I4rLMjIjt7e3WmiQAqFz1X0gASKq18gC2JfEisy1kzH8mSbYl8ZxKKQBQSslMAKhc9V/IAGTm+Qvn+34WodZa3/UbGxsXLl7Y3NjMzGEcpABn5jRNmTmbzba2tg4PD0HTNG5tbvV9Dwjxn0zS0dHRfffd1/XddddeZ/vg8GCxWMz6WWbajggAqFz1X661tlqvDw4PZv1M0mq12tjYOHfh/PbW9qW9S3v7e/P5fJqabWC5POq6fhzH3Uu7EWVq02K+4L+EbUm7l3a/9uu/djafXXftdX3f11J3L+1ec+aau+6+66Ve6qXe9I3fFAB0uH+Bq/6TZebGxuLXfuO3XumVXu348eO2JXG/zIyI1lopBbCdmZJsl1Js227ZutplpnEoJPFfZZqmu+6+S9IwDKWUvuuffuvTt7a2NhYbx08cP3P6DPB7v/97lav+O9iWhEFEhO1Sim1JkkopAGBbkqSIACICAGzzX6XWesvNt/AAN9xwA/drrZVSgMpV/x0yk/8ItiXx72abBxKYZ7FtG5DEZbaBiIgIAKhc9V9OUinFWIj/5VprAFC56r+QAWit3Xv2Xin6vp/3s3EaD48Ob7z+xtvvvGN7aysiLu1d6rouW7bW0l6ujrra3XDdDbuXdlvmMAynTp48tnPMtiT+fTIzIv7qr/9quVyu1+thGObz+U033VRLvbh78a677+q7/uEPe/jv/+Hv33TjTZIuXbp0/PjxzDw4OHjIQx7yYo99MQCoXPVfSABERN/1EZGZ62GdmbN+BnRdXcwX6ayl1lIzUtJsNpv1/ThNy9WylCKJvq+lAoj/KNM0/c3f/o2krnZ930fE0dHRufPnIqK1tr29feLEif39/dlsds0115w7d26aprvuvmtzc/PFHvtiAFC56r+cpNOnTvM8rrvmOgBYXLfgRSDEv1tEAC/3si/3Mi/9MrVWAJimqbVWSqm1juPYdR2QTkxETNNUSsnMUkpmRgRQueq/nO3WmiReAGMhXihJtgFJtvn3kVRKaa1Jsl1KqbXazsxa6zRNtkspQGstImxLykyugMpV/x1qrTwP24AkLrPNCyUJACTxHyEiAEmAbUCS7VorkJmSJEkCANu2AaBy1X+H5WophBAyjgjbs35mexgGY0l91/M/gKS77rrr2LFjm5ubXDYMgyRJtdbMBIDKVf+FDMA0TfedvW+9XmfmyRMnV+vV3v7eYr542EMedv7C+bvvuXs2m83n85tvvFkS/wP87u/97tmzZ4+fOP5yL/tyv/brv2b7hutvuO322176pV769V/v9QGgctV/uVLKTTfc1LJN0yRpe3v7zOkzmWn72M6xxXyhkJAk/md4qZd8qcxU6Nprrn3FV3jFxWJx5vSZh9/38JMnT3IFVK76LyQAIgIopfRdz3Pquq7rOv4nsf2YxzyG+73KqVfhshtvvBForZVSgMpV/4UMgO2WDYTNs0jYACDJtiTAtiReANuSuJ9t25IQmBeFbUmAbUncz7YkAMhMAJBkG5BkOyIiAgAqV/0XEgCSaqn8R7Mtif9arTUAqFz1X8gAtNYu7F5s0yRJEiApIo6WS0nHjx3b3Ni8+567+75vrY3TKDSfz0+dPGVbEs+PbUl///d/b3zy5MljO8cuXLxQorTW5vP54eHharW65pprxnG8tHfp5MmTw3qwPU7j/v7+Qx/y0LPnzh4eHh4/dnxzc/Pg8ODE8RN33X1XiXLixIlhGNIpFBGSpjZhEJcuXZrP5w958EMAoHLVfwdn2m6tlVIMQAVwa5mZmTm1KaZomdM09V2/sbEBSOIFsC1puVr+0R//EfCar/Gaf//3f/+0W5/2oJsfdPbc2f39/a2trePHj7/iK7zin/zpnxw7duzee+/d3t7e398/Ojo6ceLE1ubW/sH+3t7ezs5O3/Wv+qqv+n0/8H2v97qv98d/+sdnz54dhmF7ezsilsvl0dHRNE1d1z3oQQ96yIMf8pAHPwQAdLh/gav+k2Xmxsbi137jt17plV7t+PHj/KfJTNvTNHVdN03Ter3e3t7+27/72+PHjt94442ttcw8OjpabCwws9lstVrZNi5RSim2h3GY9bO+71erVd/3z7jtGWdOn5EkyXZE3Hvfvfv7+y/22BdbrVYt2/bWNvB7v/97lav+y9m2zX8QSbYBQFJElFJs933f973tl3yJl+SyUgown8+5zPbGxgbPaTabAbbn87nthzz4ITynBz/owVy2sbEBZGZEAJWr/jtI4gWwzf0kCQHGtgFJtrmfbZ7TNE22I8K2bUmZKSkiMrOUYtu2sRAgKZ1CgG1JgKTMjIjMlGRbEpfZti1JUkRwBVSu+i8naZomIEpgbAPpLFFsR4QkABjHMTMNfddJAmxLksTz01qrtfIClFJsRwTPqVB4HqUUoJTCC5aZkgCgctV/IQMwTdO9Z+8dxzHTpQQoQrV2l/YuSbr2zDWbG5v7B/t7+3t934/D2DKHcai1zvvZcrW85sw1x3aO2ZbE/TIzIn7/D37/zjvvPHHixGMe/ZinPPUpR8ujrnabm5vnL5xfrVY3XH/Dtdde+9SnPvXUqVO7u7uShnG4dOnSox75qN3d3YsXL84X8zOnzuwf7j/6kY/+nd/7nQfd8qDt7e3z588P4zDrZ6WUzBzHUdJqvQrF9ddf/3Iv+3IAULnqv1yUsrN9DGwTkjEGsbW52VrOZ7Naaynl1MlTs342TVNmGmOMjx07NpvNAEk8gCTgQQ960OHR4XpYpzMizp87/7CHPexv/vZvhG688cbDw8Na6zAMR0dHh0eHJ46fODw8rKU+47ZnnDxxcmdnZ29v78677tze3q61ttZOnz79D4/7h9Zaa21zYxNYrVcXL148PDy85eZbrrnmmtlsxhWgw/0LXPWfLDM3Nha/9hu/9Uqv9GrHjx/nP4exEM/j4OBgc3NTEv96wzD0fc8DTNM0DMPGxgZg23ZE/N7v/17lqv9CBsB2a40XRAjZ5gWQxP1sS+J+tm1LAgDbwNbWVmZO0yRJEmCbB8hMSVxmW5Ik20CtdRxH7me7lLJYLIZhiAhJkgCgctV/IQEgqdbKfxXbkrqu4/mxXWvlBYsInkff91yWmQBQueq/kAHIzMOjw8yMCMC2FOBpahIbi41Sy+7ubt/3rTXbXdfZjohxHLe3t0sU/jUk8QLYlvQ3f/s3fdc/5CEPmabp3LlzJ0+dDEVr7ejoaHNzs+/7aZqmaQIQtdTd3d2trS3EfD6f9TMAqFz1Xy4z9/b3p2lsrdVSEaCu6/b39wzXnrlmY2Pj7Plzx3eOLVfLaWobG4vDo6P5bD4M643FRukL/0FsS8qWf/xXf/zbv/vbks6fPz+fzzc3N1/xFV7xl375lxaLxaMe+aidnZ0/+MM/2FhszGazs+fOSprNZsBLveRLvcHrvwEAVK76LyQAaq3XXXMtIAmwDdi+7ppr0ykUEY9+xKOmaZIkyXZEZGZESOI/TkQAL/mSL/mwhz1sGIbW2mw2m9pke2tr68EPerDtiNjc3Hz4wx6+ubW5v7//uMc/7uVf9uVtZ2btKldA5ar/crZLKYBtICK4zHaJYts2UGvlfrZLKbZt8x+tlLKzs8PzWMwX3O/6668HdrZ3brzhRh6gtVZKASpX/XfITECSbduSANu2uZ9tSbYBSZkpybYk27a5TJJt/q0kZSZgjJFkG5AE2JYE2JYE2AYk2ZYkCQAqV/13yMwoZWpNEBHjNAJd7SQBmQlkZjq72gHDMHRdN01TKaW1FhGlFP7dbAOSeABJgG3ANkJIkm2ek6TMBIDKVf+FDIDx7XfeHhGHR4d91yP1XV9rqaV2XTe1duHC+WEcTx4/sVwtb7n5lvV6fcddd07TtLFYzOfz5XJ5/Njx06dO25bEv4ltSZJ4ASQBkrifJJ6HMQBUrvovJACErjl9DeKaM9eEIjONMZlpXGu98YYbMzMitre3S5SNxcYjHvrwo+WRpIjY2d6ptQKS+DexLekpT33Kbbfddu211y4Wi9lstlwuDw8Pb7zhxqPl0ROf+MQocXhwuLGxERHjOL7aq77aM257xqVLl264/oYoERG3PeO2G2684cEPejAAVK76LydpNp9N0wSkMyIiQlKtlRdsZ3uH/yC2JV24cOFJT3rSU5/6VMTBwcFNN9105513Hj9+/OVe9uX6Wb+/v99a+5u//ZtpmnZ2dq6/7vrf/f3fXa/Xp0+fPnv27M0337y3t5fOBz/owQBQueq/XGZevHhR0v7B/jiO0zRtb233s9mpkydrqbZ5AElcZhuQZFsS/w4RAbzUS77Uiz32xTY2NjKztZaZpRTAdmb2fR8RtjNztVrN5/NHPOIRpZSu68ZxtD2Oo22ugMpV/+UiYntru+u6E8dPRMQ0TeM0SqqlApJ4fiRxmST+I8xms9lsBpRSSik8D9uSSimbm5vAYrHgsr7vgdlsBrTWSilA5ar/crbn87ltLuu6rus6wDb/GrYBSfyb2OZfYpsXShIAVK7679Bak8RlmcllkvhXss1/MkmZaZv7SbJtOyIkAUDlqv9ykkopLVsoJHE/24AkXoDMjAggMyVJ4j/f1KZaKi9Aaw0AKlf9FzIArbWnPO0pXdf3fQ+2feL4id1Ll7pa1+t17eo0tdVq+ciHP/Kee+9ZrVe11nEcQRuLxTRNQN/34zS21m6+8Wb+c9iWdHR09KM/9qPXX3/9Qx78kIPDg93d3b39vfVqff311x8cHtx8080v8eIvAQCVq/7LSTpx/ISkiGitKTQMQ9/3W5ubfT/LbF3NjcUC6PseKLXWUre3d7pa9w72u1r7vj88PNw4tsF/GklARBw7dsz2ar26dOnSX/31X910402bm5v33XcfME0TV0Dlqv9CAiAirjlzDc/PxmKDBzh54iTP6fTJU1y2mC/4zzefz9/mrd+G+73Gq79GrZUHaK2VUoDKVf+FDIDt1pokAzYgybYkwDYgCbANSLItCbDN/STxX8I2AJRSWmu2AUCSJACoXPVfSDxTrZXnYVsSl9mWxAtlm/8StiVxWUTwALYBoHLVfzlJ5y+c39zcHMdxtVoBkmyfOX3m4ODg4PBgc2Nze3t799Jua63WulgsMEfLI0BSazlNYynl1MlT/JeQBGRmRNiWBAC2uQIqV/0XMgCZeWH34npYCw3DEBFbW1uX9i6d4cxqvdrdu9R1HbBcLqc22R6GQRHZ2jRNCmXL1XplOHXyFP8l9vb2tre3IwKQxP0kZSYAVK76LyQAJD3ioQ/nAWwfP3YcOHXy1OlTp9MGrrv2Oi7LTECSJNuSJPFf6Fd/7Vf39vfOnD7zmMc85o//5I+HYTh9+vS999774i/24q/yyq8CAJWr/jvcfucdXddhr9drxGK+uObMNYAkICRAEpeVUrifJP4L2ZZ08803L5fLiFjMFxsbG2fOnLnpxptqqRsbG1wBlav+CxkA27XWkJBqVyNie2ub/5EkAa/0iq/E/d72xrflshd77IsBrbVSClC56r+QAIiI66+9jv89bNuWJCkzAUm2JUkCgMpV/4UMgO3WGg8giX8T25L4L2Gb+9nmgaBy1X8h8Uy1Vp6HbUlcZlsSz8O2JC6zDUiyzX8aSbYBSbZ5AEmZCQCVq/7LSbrv7H1bW1vjOC6XSyBKydauu/a6vf29vf297a3tYzvHzp0/ZxiGdYnSdZ2kYRiuu/a6/YP9vf29jcXGieMnAEAS/5kkAekMhW1JAGCbKyC46r+QAcjMg8ODS5cuLZfLcRozc9b1wzgA4zgul8upNWA9rJfLo2EYgL7vh3EcxgGYpmm5XE3TBNjmP9+5c+fGcQwFIMm2bUCSbQCoXPVfSABIeuiDH8pzOnbsGHDq5KlTJ0/ZBm68/kYeYGtzSxJw4viJE8dPcJkk/vP9xm/9xsWLF0+dPPWSL/mSv/t7vzuO43XXXnfnXXe+5Eu+5Gu9xmsBQOWq/0IGwPa9993bMmd9P4zDfDY/eeIkDyCJ5yGJ/3K2JT3yEY8cx1HS8WPHH3TLgzY2Nq677rpTp05de821XAGVq/4LCQBJQEi2hSQBtiXxP4wk4GVe+mW43xu+wRty2cMf9nCgtVZKASpX/ZeTdN211/GcJPE/lW3bkiRlJiDJtiRJAFC56r+QAbDdWgMQGEk8D9uSuJ8xRhLPybYk/kvY5n62eSCoXPVfSABIqrXyv0RmSpLEZbYBSVyWmQBQueq/kAGwfe9999auOzo8rLVGhEIlSt/3Xe3SuXvpUmvTxmJjPayvOX0N4p577wWXUrY2t1pr62Hou+7kiZP854sIHkASzwuCq/47ZOZ6vVIoIjJTyLBarw6PDg8PD7O1aZpaNtuINrVpmqZpmqbpaLlcr9cRGqeJ/3y277zrznEcuV9m7u/v81ygctV/IQEg6Ybrb+BF1tXuIQ96MP+1bEs6ODj40R/70VMnTz3iEY+4ePHibbffNo4jcOL4ib39vRd77Iu91mu+FgBUrvovZABaa09+2lM25otxGvu+77oe+7prr+N+tgFJ3M82Qoj/KpKAxcbitV/rtRfzxfHjx0+fPr1arx50y4M2NzePDo+6rjt16hRXQOWq/w4nj59omV3XLRaLvu8PDg5sSwIASTwnSfx3qKW+zEu/DJddx3WPePgjeE6ZGRFA5ar/QgKglHLNmWt4gI3FBv9TZaYk7meb+0niCqhc9V/IANhurXE/SbYBSYBtSYBtQBJgWxLPw7Yk/pO11iTxPCRJAoDKVf+FBICkWiv/e5RSeAFaawBQueq/kAHIzIPDg1Csh/U4TbUUSbXWYzvHDo8Oj46OFovF1ubW2XNnI6KrnUKZubHY6LqO/w5/+Vd/ubW1dd2113Vdd3R0tL+/X2vNzFOnTm1sbABA5ar/cpl5eHi4HtbjNDlzY7GxWq8yc3tre7lcnj1/9prT12xtbl3cvVhK2VhsSDo8OtzZ3jlz+gz/HZ7ylKfcdfddi8XiVV/lVX/6Z3667/uHPuShT3zSE1/6pV/6zd/0zQGgctV/IQFQa73mzDURIQlo2UoU25JOnjx58sRJLnvkwx+ZmcZCklpr/Dd5vdd9vb7vJfV9/yEf/CFd7RaLxXK57LqOK6By1X8526UU7leiAJKAUCCeJSK4X62V/yanTp3ifqdPneayvu+Blq1EASpX/ZeTxP8qtgFAkm1Akm1ACAAqV/1vYCzEC5aZrbVSiiRJgG1JPKdhGCJCUillHMcoITSOY6mlRGmt1Vp5HpK4nyQukwTYBoDKVf+D2ZZ0cXf3rnvu3N7a7rpuHMf1em17Z2fnmtPXPOVpT93Z2Tl98tSTnvKkra2t1tpNN960Xg+L+fzes/et1+uuq+M4njxxcjFfPOP2Z/R9b7O9tXXyxMn7zt53/uKF+Xy+sVi01sZx3NrcOnP6TCmFfy2oXPVfyPzrSAIWi8WN199Ya7Vtm8tqrZKuveaaEqXUcstNtyBCUUuNeZRSjh87PgzriMjMxWIjIq6/7vrFfHG0POq6TtKJ4ye2t7drqX3fr9YrmwhFBP8GULnqv4aRxGWZyb/GrO/nsxnPIzOP7RwDMnNra4vLMjMiMnNjsdhYLADANrC1uWV7e2vbdmZubGxwme2tzS0uy0zbvMgyMyIkVa76L6HQNE0lChAR/EeICACICO4XEYAkHkASl0kCJEnifpK4X0TwrxERwDhNlav+80lqLR/64Af97u/99s033zJNE/9XSGqt3XvPnTrcv8BV//ls931/7733Pu3pT7fN/yERccvNN+tw/wJX/ZfIzK2tLaLHI/+3HOzvV676L2F7Nps9+SlPOXfufKkFm/8rpHj4wx6qw/0LXPWfzPZ8Nnv8E5945933PeyhDx/GQRL/JwhNbXrSk55Queo/n21F3HHnXa/xGq+7ubnB/zkXL16sXPVfw46IYVhvbm5kNogIZypC/CfLTATmP0Nm1lqBylX/NYRtJEBRxPTkP/rwR7zKN/3iL//aerX/Gq/+mkdHR4hQHB0d3XvfvS//ci//a7/+a9vb24959GPW67XtftZP0wSE4unPePo1Z6659pprf/8Pfv8RD3/E1tbWOI6LjcXe3t7dd9/9Mi/9MrfdftvjHv+4+Wz+qq/yqqdOnbKtEP95oHLVfyFxv7s+7+hp38LDTy/Xr/nkJz7+d3/v9zY2NmqtCk3j1Pf93t7eg2550J//xZ//zu/+zubm5s7Ozu23315rnc/ni/nipptu+sM//MOXfqmXHsfx53/x58+fP/+Ihz/iHx7/D8ePHT86Ovrrv/nrF3+xF7/99ts3NzfPXzh/6tQp25L4zwM63L/AVf/JMnNjY/Frv/Fbr/RKr3b8+HGAiz89rs7W/gQn3y4zz507d3h4GBEnTpxYLBa2bXddByyXy1rrbDa76+67WmvXXXud7dlsdnh4OJ/PDw4OgNrVWT87OjpSCNP3/W2333bD9TfcddddZ86cOX78uG1J/CfIzIj4vd//vcpV//VsTrx1xzOVUq699lpegK2tLS678YYbeYDNzU3g2LFj3G9nZ4f7PeLhjwAe8YhHALYl8Z8KKlf9F7IBkHAzFjKBwNiWxP0kZaYknh9JmSmJB7DNZZJ4AEm2JfGfBypX/RcqJbhCRQCIy4QknlNE8IJFBM9JEi+AJP5TQXDVfw0j6Wi5BGyP4ziO4ziN62ENtNZW6xWQmeM42rZ96zNuvbh78fDwkMtsc9mlvUu2z507d3BwANjmsou7F++7776nPf1ptoHd3V0gM20fHBxM05SZtvnPAJWr/ku0zK2tra/86q98m7d661d55Vd5ytOeslwttza3MvPaa649e+7s3v7ewx7ysGmazp0/d+MNN25ubP7CL/5CRBwdHR0/fvzChQubm5sv/VIvfe+99976jFtf+7Ve+xd+6RfOnD4jqbW2sbHh9MHhwXq9Bh720Iddf/31P/tzP/tij32xxzzmMb/3+79nu7W2s7PTd72k8+fPf+AHfODGxoZtSfz7gQ73L3DVf7LM3FgsfuO3f+fBD3nEwx760Ii4tHdJku2IWMwXwzBMbdpYbLTWDo8ONzY25rP5M57xDEChv//7vz9z5sy111w7m81aNsxiY3H+3PnFxuIZz3jG5ubmyZMnh/XQ972k+Xy+XC4XG4sL5y8sNhYnTpy4cP5CrfXo6GhjYyMzDw4P+q5/0IMeVErh3y0zI+L3fv/3Klf91xCZef3110eE7WM7x3iAWiuX1VpnsxmXPehBD+KyW26+hedx4vgJ4MYbbuQFOH3qNJdtbW7xnw0qV/3X0TAMbG4C0zRxP0m2AUmAbUlAa02SJMA2IIn7pTMUtgFJAGBbkrGQbUkIzAPZBiKCfzdJXAGVq/6rCEICJNVauZ9tSYBtSdyvlALYlsT9bAOSANuSANsAIIn72ZZkG5BkW5JtSYBtQJJtSYBtSfwrZSYABFf9VzHmMtuZmZmZOU2TJNstmyTbLZtt4J577gEktdaWyyWXSZIEnD17VtLh4eE4jpIkSZqmCbB9eHgoCZAkCZAESAIODg8kSQIk2V4Pa0n8m0Hlqv8SreX29vaXfsWXvdVbvOUrveIrPfHJT1ytV5ubW5l57Zlrzp47OwzDLTffsl6v77rnruuuue70qdM/8VM/cf3114/DuLe/t1wuu9ptbW/t7++/3Mu+3G233VZrzcwnP+XJx48fXywWwzDMZrPl0bKf9RcvXtzc3Nze2l4P61d4+Vf40z/7U0kv/VIvff78+TvvulPS/v7+8ePHIyIiLl26lC0f/vCHv/7rvX5mRgT/BqDD/Qtc9Z8sMxeLxW/9zu+ePnPdox/16Pl8fv7CeQAUoc3NzdVqtR6Gna3tlm29Xm9vbZdSnvb0p91+++3Hjx/fWGyM02h7e3v7woUL1193/aVLl86cOXPX3Xe11haLRa11b29vsVjMZrMLFy7UWuez+Wq92tjYOH78+F133bWxsbGzs3Pp0qXdi7snTp6wvb+/X2tdLBZ7e3snTpzYWGxcd911tiXxr5GZEfF7v/97Oty/wFX/yTJzY2Pxa7/xW6/xmq+7sVjYlsT/CZkZEb/3+79Xueq/iqTVcrmxWADTNHE/SbYBScYYSUBrTRIPIMm2JNs8gCTbXGZbEmAsScg2IMk2gMAAgCTbkgBJ/CtJ4gqoXPVfxXYpBZBUa+VfUkrhediWxL+DbUn8B8lMAAiu+i80jCNge5qmqU3TNI3jCGTmOI5A2sMwZKbtO+64Y29vb7lc8gCSDg8PgYu7F4+OjniAvb298+fP33b7bVy2v78P2AaWy6VtLpPEfzioXPVforXc3t7+8q/88rd+y7d6lVd+lSc/9cmr9WpzYzMzr7v2uvvOnr20t/uQBz0k7dvvuO3mm24+ffL0z/zcz5RSlsvliRMnLly4sLGx8dIv9dL33nvv057+tNd57df5xV/6xdOnT5dSpmnaWGzY3j/YX61Wth/5iEded911P/fzP/fYxz720Y969B/84R9kZmbu7Ox0XVeinDt37gPe/wMWi4VtSfz7gQ73L3DVf7LMXCwWv/nbv3PTzQ95xMMfXmvdvbTLZba3t7ZX6xWwsdhYrpaZubHYKKU87WlPM5b093//92fOnLn2mmvni3lrzfbm5uZ99923ubF56zNu3dzcPHny5LAe+lkvaTFfHC2PNjc3z549u7GxcfrU6bNnz9ZaD48ONzc203lwcNB13cMf9vBSCv9umRkRv/f7v1e56r+ERGbecvMttVbbx48d5wG26haXbW5scpnthz70oVz20Ic8lOdx6uQp4JZbbuEFuObMNVy2vb3NfzaoXPVfR+thvbm5wYtAEi9AZkqyLck2IMlYiAewLYn72ZYE2JYkif9AULnqv45DAiStVqu9vb2I4EVgLARk5qlTp0optiMCkMRlQjwnSTyAJC6TxH84qFz1X8g2cGnv0u/+3u8eP3a8tSaJ52RbEs/JtiTb6/X6DV7/DSKC/1GgctV/IQNw991333TjTS/z0i/Dv95v/fZvXbx48dSpU/yPApWr/svVUm0Dd95159bmVkRExDAOmxubfd/fc8898/l8c3MzIjKTyy7tXdrZ3un7HogI/qeBylX/5YxtA3/4R394cHAAvNzLvtxTn/bUO++88xVe/hXuvPPOa665Zn9//6lPe+p8Pg+F7XTecsstb/QGb2TbmP9poHLVfzkhScCbvvGbTtNkvLW59bCHPWy9Wndd97Iv87KttXQ++tGPzsyudseOHZOUmUBECPE/DVSu+i/XsjkNbG5ucr9a6+bGJgB0XQc85MEP4XlM02Sb/2mgctV/IUnAzTfd/Du/+zu//hu/bpsHMBYCjAHMFZIAIDP7vj958iSX2UZgJPHfCypX/RcSABsbG2/8Rm98tDwKBfeTZNu2pIgAMtN2RNgGANsbGxvcTxKA+O8Hlav+y9mWtLHYACQZC62HdVf7EmH78PCwZS4W877rDw4PNjc20wkqEethCKnrutV6NQxDRGD6vu/73jbQWpvaVKLYXg/rvu9rqZnZdV1mArZtT9NUSum6rrU2TuN8NrfdsmEASbYlAa21Uko6hSJiapMQUGuVxBVQueq/yYWLFw6PjvYP9vquz8ytzS3EfDZfLDZuvf1WoWvOXHPm9Jn9g/177r1nY2Ozq/Xw6BAAbrj+hoODg3Pnz/V9L8XJEyeAqTWJu+6+y3Bse2e1XkVEpler5dbW9vXXXveM22+zcxzHzc3NaWrjNN54/Q3DMNx5910333hTrfW+s/dlZkQJqWWLCFApMQwDUEqZpqmUOp/NjpZHZ06f2d7atg0AOty/wFX/yTJzY2Pxa7/xW6/0Sq92/Phx7peZ6/UaUWutpU5tCkVEZGYpZZqmWivQWiulAFObsmUppZTSsgnZBiJCEpfZth0RmRkR4zjWWiUBtm1P09T3PWAbsJ2ZESGptSZJUmZKsg3YlhQRQGams5YqCZCUmRHxe7//e5Wr/vtExGKx4H5d7QCglALUWrmslAIAtVQKwHK1BNk5DMOsn3VdZ3u5WrbWZrPZfD4/e+5s1/Xg48eO7x/sL1dLp+fzed/162E9tTYMg8TW5lYpJSIAoNYKABHB8xMRPF9Quep/FduSLl26tLOzMwzjer0+Ojra3t6WdP7C+b7rSynDejhaLvtpyszt7e3zF85vbm6Vqt3d3Vpr13WHR4fTNAmVKFtbW7Yl8e8Blav+q0iyDdiWxL+JJOC6a68DNhbAMe63tbnF/R508y3c78G3PJjLTp08xfMjiX8nqFz1X8Nkuu97QBL/V0gCaq2Vq/5LKGI+65/6tKe+5Eu85Ho9SOL/BONa6h133K7D/Qtc9Z9PUmvtz/78Ly5c3AUQmP/1BGD7+muv0eH+Ba76rzKbzY6ODodhFP9HGEIyVK76L2G7lDKOY2tZa+X/CtulxGKxUbnqP5+hlHJ4ePhHf/pnJSrY/B8haZqmkyeOVa76z+fM2WLxB3/0Ry/+4i/94Ac9iP9zfuEXf6Fy1X8JZ05TO3XyJGBbEk4kEJCZEWFbEpCZEQG01kopQGYCkvgfJjNLKSdOnKhc9V9DSJqmCbD9W3/99IPVuL0xf+SZbmNjceL4iXEcu65bLpd7+3vXXnPtNE2SSimttfvuu+/6668HbEvifxJJQGutctV/FdtIQMv83b9+6nzWR6nP+Jun3nP3nY969GPuuOP2rc2thz/84T/50z/5+q/3+rfffvvBwcFLveRLXdy9+MQnPvGmm256vdd9vVtuvsW2JP6ngcpV/+VqKd10eN/5e685eewVX/UV7r3n5nEaX/ZlXtb2jTfe+K7v/K4XL158+Zd9+cOjw83NzUc+4pEPftCD77zzzq7r+B8LKlf9FxIAkj7m3d/k4Gi5sZhtbSwe++jH8AAPefBDeE4PetCDeAUA25L4HwgqV/2Xs72xmG0sZkBm2kYIAZJs8wCSbAOSJPFfxbYk7mdbEg9gLMQVULnqv5wk7hcRPCdJPCdJ/JeTBGQmIEkSz0mIZ4HKVf/lbK+HtRDQsjnddd0wDBsbG5JaZrbW9z3/fdbr9TiOs9ms6zouG8ex67rlchkRtoGIiIhSCgBUrvovZABatic/9SmL+byr3TAOfdcfHB70ff+Ihz3i0t6l/YP9Wup1115nWxL/tTIzIv7mb//m7//h71/pFV7pvrP33Xf2vsV8ce999z78YQ8/ceLEn/zpnxw/fnxjY+Pxj3/8y73sy73e674eAFSu+i9Xojz8oQ9vber7PhTDMFx7zbVTm4D5fB4RXdcDkvgvJwl45CMeefbs2Z1jO/fce89ivtje3q613nzTzXv7ey/22Berta7X61d8hVc8c+YMV0Dlqv9CAkDSYj7nfrVW7jfrZ7N+xn8fSbaPHz/+Zm/6ZsDNN93MC9VaK6UAlav+CxkA2601nockwDYgiX8r25L4d8jMzCyl2LbNZZIA21xmOyJKKQBQueq/kACQVGvlfyrjUgovmtYaAFSu+i9kADJzb39vvV5LqrUiObPWbrk8OnniZESM07hcLk+eOMl/OduSnvSkJ936jFsf+5jHHjt27Gh5NI3TfWfvO33qNHDHnXcsFouu686dO3fzTTc/9KEPBYDKVf/lJF26dEkh2xElQvPZfL1eLVfLiFgP60t7l5zmBP/1bEtarVe/9du/tbm5+ZSnPuWee+45efLkpUuXXvqlXno+n//9P/z99tZ2KeX2O25fLpcPfehDAUCH+xe46j9ZZm5sLH7tN37rlV7p1Y4fP85ltiUBmRkRmSlJEtBaiwhJ/DexfXR01Pf9ar0SiohpmjY2Nvb29mazGbAe1ov5IiL6vpf0e7//e5Wr/svZti3JNiApMyUBtoGIAGzzb2JbEv9WtiVtbm4CXdfxACdPnuSyzc1NLstMSUDlqv8mtnkA2/wHsc2/j+3M5H4RMU2TQk5zmSTbkiICACpX/ZeTJCkzIwLIzIjIzIjgf6RpmrquAyg8l9YaAFSu+i9kADLzrnvu7mqdpkmSJENmu+G6GyKC/zHSGYqnPu2pv/t7v3vLzbc89CEPvfe+e8+ePTubz44Oj9bD+rGPeexLvPhLAEDlqv9ykuaz2ebG5mq9kmLW90fLo43FRkTwP4kQsJgvjh07lk7jS5cu7R/sA9vb25fuvHR4eMgVULnqv5AAkHT61GlgsVgAwGKx4H8eSbZvuOGGt33rtwWAhz7koTyn1lopBahc9V9Fks0D2UYSGAvxP48kwDYA2AYkcT9JAFC56r+GsV1rAWzzLLYBMOZ/PEk8J9tArbVy1X+JiJB09ty57e1tSfxfUUoB7rvvPh3uX+Cq/2SGEnF4ePgnf/bn49SwQfzfILK1zY2FDvcvcNV/Ptu1Vknnzp2bphHE/w12lLJYLHS4f4Gr/kvYBkoptvk/xHZmVq76ryIJyEz+z4mI4Kqr/v0guOqqfz8Irrrq3w+Cq67694Pgqqv+/aDiBIFR8Cw2z0XCRuKqq54XVGYbABLjgBNJElHApInAxrZTUTyNXHXV84IaT/lbBK35ulsaWj/jKWSb9i4yTWX7mLq+He0rirre07j1Cq/tYY3EVVc9EFRKRYCQIKLvPU31xGmgHjs5XThbto5hq+vBZHLVVc8LdLA6bNkiQtOYrdWub5lRCtCmqXSdpDZNzoxS1EYQz09mRgTPIzMjgvtlJiBJEmDbdkTwIrOdmZIigvvZ5n6SuOq/GGh1uDvb2KGtxmnqZhuH+7ub29vTekDUfmtc7Y/juLF9DISn/b09SZJscz/btdbFYnFwcGA7IiTZbq11XbeYz/cPDwWA7Y2NjYiYpmm1WgHz+bxEHBwellJsAxHRWosISbYzMyJ4gFrrbLFDrg8ODiQBtvu+FyhimqZxHEsprTVJEdFakxQRXPWfB8qHffiHfPf3fPdytW6Zv/mbv/HYxzz2F37xl8ZpunDx4vf/wPffcMP1m5ubP/4TP/7nf/Hnt992+0u+1MuGqKXMN7e6Wmfzea11vrG1v3fpT//8zx/5iEfMFpvC0zTNZrONreMH+5f+7M///JGPelQ/m/VdN1ts/vVf/9XTn37rMA433HjzbL7xtKc95Rm33f6Qhz4qlPP5vO/71trm9k6IcRzns9licwtn33c2fd9LunDhwnd/73ctl8tHPupR2VpX63w+v/Ouu85fuHDfffd1tZ44dd16dbR97FgtZZqmrZ2TXY1xHCVx1X8SKEer5fHjx++8686//bu//9qv/4Y3fIPX/4RP+dT77jv7F3/1VydPnPj9P/jD13/d1/mLv/7r7/m+73+9132dx/3D30/TtH9w8Kd/9qfnzp1/8lOefOHChb/9u7/d3t7+gz/8w/ls9ru/97uL+eK6a6996tOe9vt/8HvAX//t3wb81V//9W233753affee+/7lV/7tcPDQ5FPf9rTVqvlE5/0pIODS7u7u09+ylNvfcYzTp448Qu/+EullBuuu+7pz3jG7/zu7xw/duyOO++MiKc9/ek33XzLp33GZ5w+derXfuM3u1pOnjhx+513zmaz7/n+74+Iv/nbv/2lX/nVxaw+5CEP+YVf/MXDw8Nrr7nme7/ve9fr1c0339xak8RV/xmgvPhLvNi7vNM73nb77SWidt16WNdaxnG69pozn/SJn3b9taePHz/+0Ic85Pz581tbW9/wLd/89Kff+ju/9/u11l//zd8Kxb333vu93/8DXd8dHhz+wi/90jhOv/N7v/fGb/KW3/v93/PTP/dzN1x//W233f77f/AHj3/iE//u7//+yU95ysHBwXq9Pn7i+N/+3d//+E/+5IkTJ259xjN++3d+ZxjH7/re7338459w2+13/Nwv/MKZ06df8qVe/ld/7Vd+4Id+6Bm33/6Upzz1oQ95yPd83/e/4Ru+/g/88A9/8Rd92e7F89/+nd/5Ui/5En/3D//wfT/4g0992tPvvOuu8+cv3HLzzY9/4hN+5ud+/rd++3f+4XGP+53f/b2NjY2LF3cf+YiHd13HVf9JILa3tn7sJ37il37lV5/ytKc99CEP+Zmf+/njx46fOX3q/PkLX/hFn/ed3/09s8Xi/Pnz589fuLS3t7HYeMQjHr61ufmmb/zG11177Wu8+qv91d/87cbmxl//9d9c3N3d3t5+z3d/t9V67ba6+aabNxYbv/f7f7C/v3/69OlXf9VXefmXfdnrrr3uzjvvyswnPenJT7/1Vkl//Td/s7e/9+Iv9mKv9iqv0lo+9CEPeciDH3T9ddf+/h/+IUx/+Md/PJvNbr/9jkt7l37wR35kvV5Df+rEya/5mq/4+8f9w2u/1mv94i//8p/92Z8v5ovW2oNuuaXUOoyDFMbz+fyRj3jEYrGwzVX/2UB333nrb/3O7zzolls2Nzc3NzaecdttN9xww6yfTW367d/5nTd94ze+7rrr9vf3n37rrY99zGN+6Vd+5UG33LKxsXH82LGz587dcP31T3jik9bDej6bbW5uga+/7ro777rrxR/72Fuf8Yy/+bu/e7HHPnaaJkmz2SxbpnMcR9uLxeL2O+7o+17o+PFjmfnYRz/6t3/v9yS95Iu/+G//7u894uEPe6mXfMm/+uu/vu++s9dccwZ4+q23PuqRj3zUIx85DMObvtVbv81bvdVHf9TH/sxP/8RiY/HyL/dyf/wnf3Li+PEbbrjhj//kT44dO/ZGr//6P/eLv3jm9JmXfqmX/MEf+ZHHPOpRr/DyLz8MgySu+s8AWh1dmi22yLG1lpld30/jaFtS7TeH1f44jhExm81Wq9XG1nZOY2ZO09R13TgMs/lcEditNWAcx77vl8vlbDar/Wwa1pKw0wYkSQLsrLXjstYasFqtNre2gPVqNVtstnG9XC43Njai1pwmIGrfxvXR0dHm5ubdd999tFw+6JZb+vkcWB0dzTc23No0jt18A7fDg4PN7R23ablcbmwdd1sfHR1J4qr/JKC9S+ecKVAUhZwGcILSLiWQMMYhtTYpCjYIIclpYwAEluR0RNiZ6VKUaQmQeSZDQNpAIMAgYVtSREytCWqtrTXbEcW2nREhKe1ZP4vQar12GhGKzJSQlGlESC0zJEW01gSlFC4zLzLbtiQusw1I4n7mCmMABIB5XgZAPA+BMYhnMwgMAoN4JtuSbEuSxGW2Syn8t7KdmZrW+yBHjKujNk2SotRuNge3ccSOWrO1bGkUpcs2dH0HmsYBp4QkSZJQSIAAgWE1eDHvMh0hObM1pCqPlJCwBzdF9CJKt1yubAMR0XV1WK8VAR6HodbOija1vq9tGqdpEooIhG2uMAgMuHazzNZaEyii6/v1aiUJECAuE89knk0CwLiUWmo3DIMk27O+t7O1ZgtQICSJyyTZ5pkUIUncTwKweaC0Mx2hEmEbMAhJGMQz2RgDEWpTllrGcZymSZKkUsrh4SFgm/tJ4r+K7VLKxsaGfvcPfvfHfvQn9u++4xGv8Opbp6+dpmn/3jvuePzftqgbZ66bzTdWu+d2jp+YnTi2qG3/7K07px/+9KfePqwPH/yIR6nbWo9uzev1er1aTcOqtbG1Ke1pahuzePEH93/1N7duHu8P96ajbrvbOt6Nyzti4zG6dLAeTLl54+Rw6fCpw/gar/RSH/De72QjaRrHn/vlX73jzvt2L+yVErc88pF33H7rvB2cPn36qU+769TNDz52/Pg0TeOwHsdxsbEJCCQZLCLKrU983Klrrjl+8syU7Wh/747bnvHYl3ipYT1kpm3btm3bRpKEbTtCmTlli6iCWVdf51Vf7lGPePhqtV7MZ49/0pN+5pd+9Wh51HWBcxjaOLXMKTMxLVupIUCM0zSsp+VyAAtay8w0rrVgcAK1xnxWj+0sDg7Wu3tHpRSJEoxTtpaC1jKKMF1X+r6bWjs8WB8/sfHYRz/63d/x3be2Nltrkv78L/9yf/8gM2utCAximppEKIz5zyQE2D558kT93C/8ijJNR0994uKah734w1++q91v/+pvjk958uaND3nYa7+Ky+ziPXfVrn/wo3odPePiud6L67trThRzLjcOLq739/aXy8P1uB7GdeY0TuMwjsN6WGzOzpxaHLt3/Xd/9ld7B5ce/BIv/5BXe42W3UbXP+1JT/7r3/vFa07fcv11j60nTpy7Y//Pzu/+0m9/z0u9+CNe89VeNbP9+d8+/hd+7x9e8VEPedjDbrjrrrtveMhLnN09/JPf+vNHv/Qr/f2tZ9/0pV7joS/2YkeHR62NoK7rkEIhMU1NJbquz7LxO7/3J2/5Nq984vhOm8Yn3b67iuMPeswty6MjpDZNkgAbRCiilIjIzJYN++joyJlE+a0//MuH3HJjrd0wDD/3a796YVj3sznddHS0OlwPy9WqZSrIcby0e7R5rKt97F86Gobx3Pn95eFg3M8ip3a4t54tZAuoxZneXHS1E2h/f7W/txrHvOXU8alMB8M6rM2t2XK5bmOOw9Tsje0IcenCdPL01i//1m9ubRx///d932G1fOKTnjSbzV/zNV8PmMZlZgKG2WwT7Bwl8Z8sM6PMfuVXfrEeu/6ht1xz7PfufNrP/Mz3/+Kv/Hjfz8+fO7vVd2/8xm+7e/beHFbRzw7vfcZfPuXvr3vYi/U3vvkde5emjuVyeXD2nv0L51ZHB5rNyryfhrWZ1sOqjWMh9y4evPnbv+HT/vL2/tRDlkdPfa+3epuXe7U3+ut7zh+sZg9BJ17zo3Yv5uMed1vdWV245/zs8Cm5d/fZs+dUS4zt4v5ydvy6w4Pdn/7ZH33KU584/4FvAs5duPCMe86+5/t/2HU3XDuslqFMGoRwtpaSwJlBDOMwn/Wv/7qvfnx7Y1wtZ/P+ZV/+5Z/4xKc94uEPZj4vtUSEFOD1arU8OhxWh6vV6tLe7sHu7t7uxYsXzr7Ey77i6Wuvr12319p6PWxuz1fr9e6l3Y3NY4//23/427/60+XRspTScipRHv2SL3HdjTf0tS4W8ynXU2v7l1bbG/M+ujblYqsO66lmt7lVa+3Ww9jaWLtozpY5jlnK7Jprt5ykbaLvIqxCufH6k8NydXC0Xq6HrqevXdsaxsGt5YWL54GIWC6XGxub4E/6lE/82Z//+RIREa21l3mZl/nar/zKY8eOTdMkif9MmTlf9IvFvE75hEM/7Il33/2KL/+yD3nQg8+eve/4K77c3/3DP/zC93ztKzzqMRcvnD127fU3P3zjyU88P1z/iK5fHbajo6PD5XI5rFdTKbG5ZXJ5eJRtymlow7rl5GyHlw4e99dPea03fOnbnvjUT3+/1z5aTp/5BV98UbM3fYPXu6ijB3U7T7v38bc+40l33XlPcbvxmjM333RqsZjTbNSpbW2f+I3f/L6/+/u/fNM3fpOIuO/s2ZecP/a3f/s318uDre1jR4f7igJRS7FTyDYSkDaKneOnFJGZSKvl+rprTt94w/X7e3vn7rtnb/fCpd2LFy+c371wfvfihYODg2EYVqtVyzabzWfzReDHvOTLllKmaXJaEgY0n/cHh0e/8+u/+uAH3fQ6r/Galy5dOjg8uPeee//8D//4Dd/mzY6d3hjbdOnSUWZbbHUbiz5ZtqNptRyzZanRJmonJyoxTh7Wk51T5slj8/1L6/UwLha1KNo0jelaZ0dHw2q9Xq1H23K/WmW2LCEgIgCw7c3Nzd/93d/60i//8rd967c+duzYPffeM5/Nf/Knf+olX/zFP/ETPmUY9mqt/GeSBLTMurGfZVguSjk62Lv9tmes12uy7e/vdjsnVzvH5ieuPXb62jrfv/lVXnPj5lv2zt+zXC739vamYWjjOI3DNA5dXwqtTcN6uWyttTZmy35e/+g3/+rVX/+lb3rU9Xfedu5Hfu7nn/Tnf71z3Y3jnX+92NhYvtRL33j9Le/5Lg9dbJ582INuOnFs+/Y7blu7pFMS9ub21sax0zjvvPOO1prt/b1L62GMUto0tZZd7af1+t677rjxlgcpQsg2IMn21vZOZg7DgEQpzuwXiz/749/7ke/61gc9/BGl1I3Nza2trcfe9JI7x46dPHlia2Nx+szpzY2NM6dP3vq0pz/lzotpb2xslVJsI4BMulnd3tlcrdZ33HHHer2OEuM4zmazcWxn79tTyUxH1I1NHe6t1ssxQrbn8y5XWapsWk6tpZsFEWW+mJ08eeLMyX5Ycebkzph5bvfCcrna3Ni4tHexTZlpZxweDsN6WHS9cC0SVwjIzO3t7fl8fu999547f34cR2lvmtrJkycBSfxXkKDe/vT+7BabZ178rt1LF5d7UcrfPPXJJ6K86mu+cX/d6f1z99TF9u3P2L35dR+xHg6Wh3vL5VEbx5ymzGannaujYRrXw3o9tQkD6mb9bDG7cN/q137mj97ozV/hKz/um09ulA/94Pd8/dd+xYc/5MHzxabErI++EopxnOY9mtaOBQCm1JXLa7/RW9784Af9+R//fqldhKY2fdDHfPpLvPQrHh3tG0op+6ujP/6d33izt3+Xjc2tzMy0nTZAm6apNUsGsOWo5Wi5er03ftNP+PiPauO4WMxKrSUiQpkZocychmFjY+PO254RpbRxesLT/nb/7O21VqcjdLi32ji2+eqv9bp/9Rd/9tRnPL2lh2HsZ/2jXualj5ajp5zaROQ0NONhNQSl60NofTQsSnfNqdMbW/PMrP1sPl+UWvuun803IurxE6fOXHPDYnMHxXI9LpfLs/fdd2H30mp9eN9dd1w6f8e0Xi5XhwerI9zW68k8U0QcHBy8zMu8wjd87df+xE/+ZCklShmG4bM+7dPe6z3eYxqXpRT+a0C9Z7O/5cUfNP7F8mEPfuVrH/KQNnL67ntxm/buOXNs4+QtD7nz1qdMx850x4+3g3sycxwGZ0Jmm1pr6bTSodJ1p687fd1Np6Zx9DgOq9W0Ovj7P/m7S3ffPduYv/t7vt27veVr7l46HIb1uF6B2+iyNZ9ajmMbxmm5HpgvABA5ndzsQ8N7f/DHvscHflSmD/YutdZq1x8dHUUUYBzGrZ1jb/YO79L3fWaLCIlM7DQIITU3TImQJCnNtdecueHak+fO76rE2NpqHNs02Q4FOFur89m9Z8/2s6277rhtXB31mozAgOXzlw53jp163Td5g8Pl0epoKn0Zx3G1Xh/sH9US4zBtbNdaGYZ0MozrYe2uLw972IPf4DVf9yE3Xf+Mu+7dPxpLv0grVdIxTC26vnbzey4e7N161zSN2RoA9rS64+m3nr944Wj/wupov5t30zR1tbRR2cwzSRL4fd/nA973fT6AB5jGpW3+y0Bdr3zfnfvHrznzjKc97fySxbGTi64OFy+evbR+1C1+pdd4pS/63d96yTd9x+XqaHmwHMdEECqlq30gQ1t0HF68cP6uc8O5S/cd3DOsPQ1EmW31O8c2Tg4H3rn2kT/5e087fXzxco++ZbkaA5cSbZruPdyHSKvv56thms0BVOrR3sUf/ZqvuOba63/r5356vpjf+KCHvOKrv+bOsZ1h1TCgzIzInLLWDgRIAkCZLSIkFSEqEZJaa5k5jZNns5m67ePH1+t1rtchpVRKwWQ2ShgUtY1t58SJzWtPP/2vnyZJUqa3t+bVlqdLe/uHh0dHh8NsVgxtGiO8Xq3bNB3sTsS0XrUTJ05fe+31Z05ec9111z7i4Y94yI3X3HjN8ew27j63e7iaxvWwXK+K3M02z567ULv+4n13rsdURI0SgaTFfOPmG69dr9fz+UPuu+eJR0eHJcqwbpiQeE5HR3shSeIy26UU/itB7fs6JMeOn7Zb7t3TL/f6o6MbFovh0vkbHv5a11577MaHPPz4gx5y7p571nvL4ra5iFZiGpbKxtQilfvL4dxBaTXHDc+ObR/f7ru+dGVnZ6OveXDpQLPjB+du/fXHHV17au+6ExurYRrH0XamS1VIEUQIsI3UpumuO27LaWzTdHBw8KCHPuxlXuEV/vxPHn/t9Tdef+ONdrZpdOmEm3NYD6VE7bqIAGyXWkspwPLoKDNni8V8c7G1tTXru+PHtv76cY+79fbbXvIlX/LY8eMHBweSAOOIKBHZ8uLu7mznhnEalod74zghAZntxIlTe/ec3dhs/QZ5yW1sa7f5ooSy68s0ZWaujlYPefjDXuIlXubMtTdtbW+ZUHLr7XefP3/+7lM7T7rj7H27R9OU45TTMDiHl3v5lzt/bncaVlbpaunnC9m1RMgRce31N5VSn/K028+ceeili7cOY/adDw96hXhOJSIi+G8E9eVuve3c7Pi90+GJCxe2jtY7i8FluvSEv9Vq/49/+Od/4cd+ujz4QXHfbdx1272P//vjJ09tHz+zsXEsN08OY4IkDeN07FpLkjSNq2lYYfWb25R+lXFANy1bLYv9dfe7Txnf/mVb33UtWmbLhtNWkm5TdlgStiKuv+nBj3m5V8jMg91LT/n7v/mYj/iYS4fjK73SK33SJ3/EOIwR6isJtcw0S2A2m0Up62Gq3azQxvXR/t7eb/7KL8362fGTJ7ZPnBom717YvXjfvX/6Z391uHf+Hd7x7V7pVV75+InjoZIth2kMkZlGAmcDyHGYJkmA7dr108j5ew/mixKaut5R1Pfl2LHj954938bB+FVe/bUe++Iv5W6+snb3Vt28v3T73avD/e2trTvvvThlYoRrMZqGNiwPL83ns4sXd2vXL/d2j23OWmbQZLVxPFznxubmtae2nnH7webmdb501+Z8vpjNhPifBurf7N9++onjYxan1sN6WVZHe+u9c/fU+ezY9s6T/uaPHvqO73nNwx+xe8fdw8Hyxoc+Zuf0DeO4bpl2drOiUnPKWVfHKUtd5OFZlUV/7NqptfU0DetxGlf7+3u1q9q8Yf/8vb9z7vzp/rrXf+lrIOb9rE1tmlpLd7VsLvqGADJnG5uLE2fWw9AvNvqtrWEcL13aLxvH/uIfnvjkZ9z1aq/0MocHh2q5u3eRulKUhL9/wuPSvvmWBz/jaU/7q8c/dW81rQ72L+0fOrr1+s7di7uIOusO77vnjV7vFW848/BhHH/1V3713d/zPb72K75mGoaP+PiP/YSP/bhZ33/6Z37K7sHqhlOzp/zVH/V51M02nLZdSrn3vvtclyePjT7q+hLdTtnc7q85fmaYuttve/qpk8de4qVe49obH3RIrfN5kJvz9Djk+nCjj1Bzto5EkcUSk2NnY7vzuDEru26bs353GMf10fGTJ3OaMrNNtHRrvuaaa47Wyzvvacx37tvbPaBG7cD8jwJ1tji2uZ72zz/x0rTfujgY8tQt12xef2p9cX/nJR99+pYz64t33v2Ux5XFFv3Gav/Ssese1HV9dIvSzVtqnCZNrcYUeEitxjYtz+U0TdPUpnGahsNLe7XrD3fP3XB651Ve7qajKf/or5/6oOtPHR6thmGYWo6t2XHHXbe93Cu8MkCJ5eHBvXffffrUsWm1XK/XXV83goeeOHHt8VNP++mfPXzC321dd13b3ho3yo9/z08d25i95CNu+vXf/aO+jQ957Es+ea+/uJpOHa/rvcN77rivuWXLYbm6/sbTWbw83Iuq/fX6937/99cHh4961KPe+h3eZr0acH7kR3/UYj5fHq1qN+v7eu+952Y+vPnmG8CAFBoPX+7h17zyy774H/7xXY9/8t2bx3S0N+3PLt137vyLv/hDH/PYVxu9OS36E4s5Oe7vXkwP7Wi1e/aOflZvuvHmWjtsRexf2k84d/ae1Wq5tdHNj9+w6MvWZl9uvuFpT33q6mjvmuturLXUEHTp9FRf/JrrrsvO+8e2yj3XX7j3RCNB/E8Clf1z96zWxbno+vVy9EbvjX7//G535oaT19+U6+nYTY+Yn35QnS3KbGM9tuHoaHNza7VajaujaRrbOLZpmsbhaHm0Wg3TOEzTehrH1sY2TAlnz1188Ufe/B5v+5qv8gqPiuJ77t39gZ/+i9//yz/e3b+UybphVUV/z713v9hLvXxIGJluI/766U89Otiv03DmzJlXe903O3/7xZd42uPmp2aLB137sFtuGlRvu+vu136VV6DOWV16q7d4q394/JOfdLDojvXX7AzH+nzybbs5jdnavCNL3nXbXbUwUz7jCX9/5oYbu5MPi7xw+zOe8Zqv9mpHwziO7aEPe3hX40lPeFwpdRrHl3+VVxsu3JrZgAitp3zsg4+9+stuEXsPP9O/5mNuuDAcXri4HC8eXX/sls3Nhxwc+PRDj03jcPHc7XuX9u6+47Y6K5fuuXTvHfeUyu7Z+649ffLFHvmQ9TjdeeGeqN2x7c3rrj1144Mf+fgnPfXJT/i7ra3N5XI5X5yY71xbZttSADJL5yvc/YxXfspdzXm4Ohpj+2+Wz2jTBML8DwJ1b1huZETE3no1mp2N7aP9/WMPfvgNr/y6bpx42EurX5RxPQ7jar1eHx219fLCwaXl0dFqvRrX62EYMqciWUqi9rPZ5s5isbm5uTWsh7/541+77danfsZHvPWrvcpL/NXfPP6+i0c333y929HfPuW+a0709+yOfY0IzxYFFe434t27z7+JNh47+sWvfdDxQ9/727/394f7hx0v/u4f9fCXfLFpvR7G8cLZCw+95Zbf/O3fvv7a6554+51PPdqcLeTlwdHBXpsVnC/zcg/5iz97ytai3nh649Le0cWDI6+ng4PVzde/yt3n2kkd7B8c3nvubD+b2To8XC8Wi/V6rF03tba9vb1cLrrZvLUGiLL2fXfu3ru3V9b2zY9kfqE/de2ste2zF7rbn/H0Z9z5jEfFdOnshTOnT53cOrHzsK1SSnczs1frF4v51mJ++uSxRz3kxrPnLz3s0S+2XA0HR8uDVXvCE570l3/2hxcvXsiGxGJ+9513PmO1WoZ04403njx2YizxxIvnX2y1v3ffnbeuDxcnTj+ty2vkgCb+Y9gGARL/ZlBnKi3H/UxDdN25+87OX/aVHvqG77x16rqDC/cNUzu6eMe4XK/Wy2G9dmtTy7T7fr55/HS/2JptbO3snJxvHiNmowuqLbUa2uFq2pxv1Sc97fjG0+++NPzsb/5dHz5+8sysn994oi9Hz3jZl3vMr/3VyqmkTW2axon7zaWPuu5B76GTDzlx3ZNu3vmpX/2JX54OItvrv+QrPfWeu37nd3/vkS/2mN2LF554631/8+d/sty/8LKv8ppPumtFlL17jw7392eFw7ZazOulO9rpeT7o1HzRl+O1Xy8PDoblvXedu+nWP71pO/YOV7/9u7e/3Eu/2Eu/9Isf7O8VKM0Hly7MurrZeb0e5n3Z3NnM1iSJ0fHQ2fYjdmZaDsRqPcyGfvP005922/bJwzrb+uu//ouHPeiRt1z/4Plstl4tDw+PWlse7F9arg6nccpp3Jp3D77xzJ13n33GnfcNbZrG6dKlvbPnzrZ0RJFUiw7322q9tqlR7r7z1lpLjfhTlWuP9HJdefBsY7lee6Nf9xVs/gPYVildRJM8DEj820Ad3SBHOUpdj8tXfMWXf7tP/rg7L9U7brs9Hft3311KdLP5ieOnFps7GzvHZxvb883tUue4TMl6mNartloPy6GtxpxSjlK6ze3NWCxmG/Pu2i1fe+bU6TOnag733XtvLndvODmL8WBar1/qEZt/9LijrY0up9amBiAStoi2t/+zG+PW+vDo15/+/Xc/Sa/3RntPfOK9v/1br/6QW9br5ZMe9/dHq3UOPOxhD3nMi7/VvXff9Zav8qD1MA3jAC6lXrhw/ux9Z0+cONU/aH5p/+Ceey/sHQw7s8X2tdccXrr4xq/38g952EN+/qd/4R/+4R9+5Wd/Yp6Xlqv1YrGYzWa7995+jIPNYb9roY3u0sVzRICmNp05ef3O9s2/9Nt/ds/Z3cOjo2kaD/f3Lu1eatmOjg4vXrzwsz/9Y4vFbJqaVGazbr1eHx0uu67rutrVur21+dRbb1stVy29Htc72zvX3vSgWx7xEsePbZeIxcZWZibVBJAtx3G9PLx0/p7bn/LUf/iOuX+3zlYRh8Xt+uvfZGNBJv9uzuz6ru3vXTw4mGeW624otvk3gTqIIqqqp+HUqdNf/8PfdMNDrt2/784/esL2nz318LqHPGK+c0rRK7pMxjFXw7RcTcvDaT0NU2KXUruymB3b9E1zdXno5cXh0l33PeEfzq/z6M6/eciDbzl5fPvo0vlK2790oS87W8dO9LPNJ92292qvdPNd54Y7z7fFvBhzWdj7XTzjpW6882h40m23R9+45UGLg71rH/OIUh9x311Pe9rT71hN9WVf4RXPXHu6X2wcHa1mi4377ru3FtdSNrZPJpw+fer4zuaxE6fvufdcKB7zyAdtbWycO3/uGbc+7eTxrXP33L26dHbeDkpb93131133rldD19flam2z6OswZNdFV2Z33XNOCjAmpH944pNXzF/yZV6x1BLirrvv+aWf/fE777htNp9jjdPUWpMkaZwGp2fzrqs1IiiM2dYH+9M0pj2uh5d87Td+xIu9wrheD+sjpjFqrFbrYWwtHShC0zCsNzd2NrYPD3bvuucZv+/VZjffnM9P9KVG8O/mzJgvzt951zf94d/9w8Me+y5f+dmv/97vFq//xiz3KYV/LaiWihXyvbTrH3LzzvHuwn0Xtza2N3XPNaeO3fLIh+3t53qdY5MzWxJRNuba7MW0zNUlL/cu3X3X7r237Z2/e31w7u677rrzjjvvO3v2wt7RK77R20zrvWuue/T5c+f2zt9z8syZ62+4qbXpt37/T8Yp77h39aTbjl71xTd/7g/2p5Z2AiDb89ode9DN11x7zU3rl2tia7GYlYA8cXxnf9kecdfFIf3Exz/u7tufvrV94uSZa6bMc/edLSW62bzsrUsUw8HB/t1//veLxfyhD7rhYO/Sk574+LP33Fm7+kqv+ApPf9IT55W7zx9MlKffft/+wfr4iROLxfzaM8e3NxfgiGgtZ31fuw4bQLTWFH7aE/7y9qf8w3oYhmE8d+Hi0fJg+9hMEsTUikQoMEIGcCmGSQoztBzTmZnHT27fefsT/+rPf2+1XraptZZAtkxbJp2llNZGtzaNU6ll1nUboioXNQJs8+9k0/c1p/Hrv/rBT7z9YS/50i9x9m794s9Pr//GnWT+9aBG5hofzOb7Y72wd2m9f76b99NYj82np/71H/fbZ5YX723TtD7cWx3sHe1fPLx04dKF87sXz126cH730t7Zs2cv7R/sLddQSqlCtagrsXPi1Olrrrnw1L86cfzE5qLvTp8q4m//8q9//Xf+5Pazq4ec6KZx+WeP27v5mlOv9NjF7/3dKtM8i9jZ3DyxuTX2U4SaM6RhPRy//sF/devxJy9vH1cH+1sbMV/efXTwxMdfHIZlTjkNh9P6vtrXaWoXz91zbHvj1V/pxW++8Zrf/dPHLQ8ubpbxJV78JZZj3nnnXS//mJue8JTbnnjrvQ+6+dq/+tsnJyLKcjW8y1u/zuu86sscHBwBreXh0dE4TZIwQmmfveuev/rTPxwmRxTLtQtbi80qEqi2DZngNGCJTDtdSh3X69Ym261l5nj2ntvOnz9v53oYp7GBM8EWikKppXY107UvG7NuNSLScqOthlwPIxL/Zra6brrv7N992ifP/+QP3/Efntb/zI896VEPuZd28/rQEfwbQD2odVkXjWQ62L90cf/8OeZzRbnh5muv3Xzc7/zCj//t7/2KpsNL+0fL5XoYpv3VCkUtRXW2XK8ffOPN15y65RFbm+ePLvzxbXf2pUKMw6qlT544nuP61MmdNo1/8Wd/9ad/9ndPePq5oT927amdaTybkw6Pxj97/P4bvMLxey62P/zrJnGFUNfPZosFsZ6mCSutxcbm6uhw5/jNr/x6bxCK0WVcLYfV0bQ+mlYHZTrYu7R39933/M1v/FAenv/ID3qXl3ull58o12/r+sXq53//CUdr33nPfffec/ejHnTNX/3dE59y+9lrT+087u8fd8NNDypRHEXS5sZGotUwSBFRbLeWCMAY2NjajuhvuuHUYjG/cOnwaHkgtWmYQsW2nWnAmDSSSxGZ2LLbiG1wy8nN1IjQwcFwcHAkqSsFYppam6bMpuDYse2dY1stW2Ps++KGYGptgHTw72BbUX3h/Nc84+7hYS/xWY96sXP2Z6z1+jdd94nSGoJ/PajLrhuWR9HW/aw/GLS3f/Sg607fdd9Fdf2p4/O452jr+oc/7g9/+fQ112x3/WoYX+2lX+6Wa65fnDh26pAn3f70N37Qgy8eHf3GE/62X69DAkxKnLzmum7cC+Uv/9Kvn937pafedTFj89jO8Zu3OBbnjparwzFmJ/Opdxw9+kHzl3vUxhOfUqbJCCcSwSS3Wd93XT+OwziOXdcPLf7ip7/uhutO7Jw4feK6B23uXLM4fmpze3t765ozW5Hd1j88/ul/9lNf/v4f/P5v8rZvd/7eu+45fzB1bPXlj/707zdPnNnultee3PzzP//zLJsv9VIvdtttd5y7sH/89BTVUpbQmVPHWmubm5s2mZ4msjXAIJSt3XT9tfPZ7KEPPnPjTdc+9Wl3PO6Jy6mNEZw6sd3VcvHSpWGcnLIdRgph25IEyYRs27RxWtdiMof1uLnYOH7sWO3mraXA5NHh0f7+pYP9o1lXu1k4HSEkiYh2uH+nPSDxb6WIXB1tPPbFP+Gbv2Fcrx/6Yi95C3zhn/3x9Tfd5K7TMCDxrwWV4TBy7Oab840dU3/5D5/8vg990A3XnlbpXus1X/Y3/+gHNk9et7FzcnNzszUNHJyJXgdHZ2I+HO2dWB/8+lP+KqTVeDSma9g5Ysb1ct5rOjy7Wi4ff9vupaHf3D55fJ6nF4cPe8hDLf3ab//BfHNnDmPmnz/h6K1fY/PlHzWXwIAlzWvtq4ZhLGXmWiNivVqfv+u+veW0fNw/7Bw71f7h72azsrWY5eTF5ubGxiK7rb/5uydszvSSr/hKt91629H+xc2tjXa02+67dTbTgsNcr++5a3//YPmQh92wf3B08WB95vqbxpYFxnG48YYzN1x7qrW0HRGZbTbrNzYWTktIGsfxpuvOnDyxdfz4iYc89KEhPeWpdwclqpbL5dJ2WibdnDhpbrXUTBMkmTlJSArJbZqmaGmkE8d3bCKX157eXq+n85fG7e2t+bw/e/bs0Wp1bLZRglLIdIiiqBJp/n0UMayXj3r4w0DDcl/Sy7/CK5HjMAyS+DeAqijdfGO+sbVYbKT9m3/0pK1rH8Hq3HWnFo9+5INPLrx3uD55/S33PuPx/XyxHobffvLfXrd17DcOD84uj1bTkM3NFspkVgoURZm8vub0mbm4eLA68ZAbNw4vHKsHPWNou+5cNx2eH1v2xqavcft9y8fdenjNiTrrZFuS7USmDtNYPZVS+r4/f/78r//Z321t7fjo3tPL6WB/9ajrr71nffTkw0unT53Z7LuD9f5f/+kfvsZrvNLuuXtyWF5/3Q0nrz11rG09ZbY5HB0ctfU0rE6eOnn9DTccLYdLy3N919mM06Tox9a2Nxa/8Bt/0tXyOq/2cnYbxzHTaSMwCi2PlrR28w3X3XPv2VsuXnfzgx78iIfe+bgnPnVjvrGxsXnm1Km+q0JpXzo4HMZpPuvPnb1vnKadY8emaWzTNIxDm9roKad0Zk5t3ndtGF7sMde/xVu/1rd8/U++1Ms86GGPeNBP/PgfHbkcP3Zsb/8SdohQJilJcgkU4t9N0nq1AqIUYL06lCSJfxuo/Xyrm23OZvOu6w17uxduv/O+xfFr/+rPb/vBX/i7u299+i0333TTzQ96+uP++paTp2b9fJyGZxxeGsapNSo9VYElAYlzGtu0btPq9PGds2fPHx4O10x7O/2R2zRMtqeDg/3dC5dKKfP53LSpuYv6D09fv8xDMkIAGElRnUSUKCVAsLm5ub01Z9w7iHK3V/PjsTseHhwe7BzbmNW44+57nvb0O6aj3dd/4ze+4dpr5bZ7ae/ev77nL/7qb//4d/+6Ezm1WuPBD3+UPPz5n/3l4tip+WyuKJlMU2b69V7z5R/ziAev16vMCSSVNk2tNSHAZtYTWr3b273pr//un5w7t9vPtrO1Ng0lts7fd++5e+6utUbRrO9LqYQ0LfqqxXzjxPZmRCmlIDndWh6uVsP6aHW0HtZH15zZnhX+7C+e9KZv/SYnT5S/+cu/m1dKqdNUuloj6nw2K6VCKKLvqiciCjb/bhHB/SKCfw+os8XmbL7V9V0tZd73F3b3//R3fvX6m24u82Pd5rF7D8rqCU945dd54zM3POjw4OLYnK1lkm2S3VrL1qZpaq1NmSZq121t7TziQY989KMf9au/8BNRNO6fn89jTIlcrVd1Piu1bm5unThxap2OGhHaO8q/e9rqzQMbSU5jopSuVgGSzM7O9v69Tz95/cP7+bKfd5R6V1fqzsluPWabDo6WFy6en81md91x5x//yV/dfvsd99xz9uLu/mr37uMb9LPalTA6cepMjqs2TbXUiOi6ArFeD9dfc/LFH/2Q9XqQFFEAySlKKcYAqIhpHDcWs0c/7Oaf+qXfu3hp+bSn37p36dJ6vV6v1lIA0ICWBmyXWkIhUBCldKV0tdSum836G66/4cSJ47uX9o8d23jxl3+5aaqPfuSJ1Wq44cZH3nTTg2+//e7f+YO/m/Xl+LGTJ45vl9LZSK6lTMOEzX+rzJRkWxJXQJ3NF/PFZinUiKR7pUfX1VSK/JS/+YOxScvhtgv3PfLuWx/+qMf8+i/81KmTx+20g5BUF4vNru8Xi42t7e1j21snj+3s7GzNZnUa13/+x7991z33ltofW8TJxTi0OFpPWWaPfKlX+8Uf+55jx04drMbVuNzZOa7IWrjt3nG5doSciRBhoESRVqt113cbG4ud7Y27b3vKmWuumWwv1zsxH8dcLBa4bW4sLl04+6BHvVjsXPv43/mzvQsXVgd7vVfq3Pfzcfeolj5UTh5b7F1qqh1RbI9jq52mzFOnjm1uLMZhvLC7e+rkyfliPgzjfDarpWIAicN17u4P4zRee+2Zt3/z13r8k57y0i/2yIs333S0GqJGldaroWVmej0OrU2ttTa1aZrGNk3T1KZ2NK4zndky8+57zkYEeH9/tbNR//bvn37LDceuveb0+Z2jvf2jEyc3uogJA4eHR6vlUa1dKQXYP1imQfy3sB0Rs/kWHlABrZaHAFC7ru+6rk3j4Hi1x8bx7fJHj1u93M07mzsn7rvn7mN97tXyd3/9F6/xBm/+Ph/0wVWexkEI2dkEZGvTuFweHe7v33f3rU954u7+/v5yte66brnKEmU5+mxqs2dedfFg+L6v/8LWvHXi5CMedGaxsXj8U247GLrj3SxtA2AQKiW6WqehDa11tdZS+75/+EMe/Bd//jPTau9lX+lVF7PZwdHRweFhOo+fOHHhqU9br4eL9979Y9/8lQd7l5zt1V715feP2j/8/V6tZT7rS1C7WUvOnz/XL7ZxmgKESmvjQx5048HBwZOe9ozFxuZTnn77sZ2Nm2+80WCeyXZfy+kTx9bjNEzT9ubmwx/6IAE5dGVYHh7cc2F18bCth/HwaLW3v9w/PNw/PFwth9U4jsPYpmGcRrec2tham6ZxtR5Wq7Vr3nf2wl/+1a3Hju3sXrz013/9xFOnjv/BH/z9jTfeAGnn2bNnH/ygB8/7jWfcfts4Tddde52ik4T5r2e71jqO4x/98W+t1utM33TjDS/22MeCgYrUklT3mi/Zndyqv/G34PqEJz7lmjMny/Ls4To3+9g/XP7er/7crJ8jWpps4zSNwzi1aRinbM1uJRSlRK21lI2NDYhhWi3mC2A1at00jjFa/WzjxIljn/eZH/sGr/d6pdTHP+FxH/8ZX/SMe5e1Fi6TlM71sOpqnbJZqiEyV6v1S7zYo26/9zX/4s//8tzZe685fWpnc+O+e+560uOfeOz4sbNnzyPWRwchJPWz2XU33Fh2l2BFRFW2VkpJ6+zZ+6LWrusiale7TGqJG05vPeOu82//ju950403Hh4e/vzP/+zTb7v9YQ++JbMBxqF+NT5hf3muDddJJeoGSWuH15+8vu826pntG2/QvbvDMLaWicHsHy7/4K+euL05P7a12N8/PDha7R8t9w+O1sM4jeMwrMdpXC1Xh4f7f/Znf/32b/MGMnfdvfdqr/JS21ubP/nTv1lrjOP4wR/wYe/yzu8yn8/vuvOuL/2KL7n1tmdsbW1I/LeIiNamX/qVX33kIx/96Ec9ehiG3/v937u0t/eqr/IamVkjStcvXvPFtb3gN/6GUkIousUbvfGb/tj337t36dzGxuZqtVwP097B+WzTZuflVEpo1tGVOLboDsfZzsy1OODCkY+GNh6uD5br9eSTp6+xx1BE6aKfbS82L+5e+tAPfLc3feM3ufOuu6dperHHvviXfPYnvdeHf+Y4BpfZDkWp0do4q8US8mTGYdzc3Hj7N3+dRaezFy49Y7k8dnxnf3/v3nvv3d/fX09j33WlFKCNw9Zmf/LGB9+7+0SckhJqlNamrRPXrkaXKKV0fd+t11M63/ed3/j0qZNv+3bvcvrUqXvvvef48ePv/M7v+q3f+o0HBwdd1xmDpdhfXvy7pz9pfbQz7/voTE4z9ecu3rix2NzoN7puc1ZPK3pKGVtCd2y7vt6rvHQRXVWEFF6P43KVB4er/cOjg6P1pUsHB0dHl/b3b33GM773B37mxhtvfPBDHvqDP/xrd9x++zANly5deqs3f9v3fe/3vXDxwtmzZ2+++eZP/9TP+PhP+rjVsIoI/stl5my+9Qd/8DuPetRjH/PoR+/u7i4Wizd4/Tf4+V/4uf298/1sVkuJ13nJurnI3/gbiNL3AVovV3/zF38239zu+91Sisn9/SObrXmdd0xDmRXjaRynVbaDpff3PU45jNN6zDaZiL6fHTu+PZ/PSvS1zh1laj44XNnTq7zSK+0fHP7N3/51a6219shHPvJBN13zV//wDElcJmmxuVm7mq1FaBjHoogqMiW/9Zu+9u133vOEJ9963/ndcWjDetV1XYS62dw2YHsYpr//2yfe/oyn9n29uD903dZGx8Hh4Z//0e+s1uuNjU3g0t7hSzzmIe/+9m/80Fuuue3u3dOnTv3D4/7+9ttv39rcevVXf42HPewRd932pK5UACQ5x43Q8Xk3b6Om8SikMXWwf2vdWnbqXMYT9fTO8Wu7bhbTfLDl44vZsVBfSjdmQO1L1221Y9uL0EmcacDDsN49eKXb77z7CU966l1337F/eFS7brG1bdVXe9VXB/7qr/9qtVzt7e29+Iu9+KMf9ZjHPfHxtXbY/NeSBOPe/sErv/Kr33vvvX/393/Xdd1rveZrPfjBD7n77nv6rquv+ti6vVV+7a+IUmtBkqTlerr77MHDHvrQccp77rn3WN+ts7/n7nt3c9XSwqiMw4CMokapXd/V2fbO9um+q13fzWa19khTy7H58HA5jkNrjtq3lgcHB1tbm9ddd/3R0dGZM9esV6vlch0RYJ7JVQpFU7NTilojpxzHgWAcOX3q+Gtd8zJ7+4e333HvtdecfOKTbl2t120ax/UKXGs5XA6/8Ys/3fVdnW1OjmMbdVwdLQ8Pnvj3f7d58rrVcnXy2M67vcvrvcUbvhoRFy7uTuMI3HLTzZcuXbrxhhuBg4ODUkqOyf1sHe0myax225tnNmezey9e2prttHJBbbaIOMq93bPncek072tQcn601Zd5lEXX7ajOKYuZrqF1kxURU6LI2SzO9Mevv+bEK7/cSwzjOIzT4dF6zHzq026bphF48IMefPc9d99y8y22x5ZnrrkuIrDFfynbUErE0XJ57bXX3nHnHcePHQeWy+XW6RO26+E6fv9xWKVWZZJTjtM060tX/NiH3njDmROPe8oznvq020/p6JqTx50tsy1XA7iWAkSRHbYNtqfWhqktV+MwLaeppbOlS5RSaulns/n8cFm+5wd/9BVf4RVe5qVfurWsJb7r+37yrrN7m5sLmysM0zSBsyWilHDakrEsSev1OrPN+vrSL/bwxzziljtf5rFPeOptT3rabRcv7mXm1CactZuFYhiGo6OD/YPD/YNlalZnW/P5/HVf/rFv/Sav9YgH37R/cHjp4HDWdevV/p/86Z+80iu+0qu+yqsBZ8+e/fu//+trThy7uH9UIjDINRfzfrPvNiJGz4bzy2XLaYp6cD6Ob29tH9fFo8PFuFmDSYfzWbdmud8uldVWp2319+Y0Ys2OH5uybpSthU8cm92UxNjWeMi2Ca7BfJYnNrcc/YOuPfG7f/q4Cxde5WEPfdjDHvow4A/+4PevPblxy41nShTbSPwXkgR+yEMe/Ed/9Idv+AZv+HIv+3LAarV6xjNufYWXf9lbn/GM+g+3a7El0w5WrS/lulM7j3notS/2sBtvuuZ4m8Zrjs0fev3x1Ss85g//6gk/8xt/srWYZ2tIaQ/jOpOpTS2ztWxpwAiMVCJq15daI4qiRKnR1RJ1a/vYr/zuX37sp3zmO7z1m/V9/4d/8uff82O/dOLkmb1LF0FcJiillFJqqS0bxmAopWQyjkOJCoCO1kMt5eYbr33EQ25arV/hGXfc/fTb73nGHXffc++5vf3D/YOjw6PlahgVZWNr55ozp175ZV/8NV/pJR724JtU69FqlfZiPi9RHvKgW/78T3730u7FG268aX9/7y//4k8e+4iHXtrb293djSjGTrF5sHH9pfVyGA5m4+40OUtWx3DmzGaY3QuHA4042ii9ujwchnk3HzKji17zVXfYzWddxN7y7sOj1d7UK2fb9e6d7tqhv3O2sXHtziMP1nvziHawHrdPqDuhmL/Miz3kV37pJx/56JeZLzbuuvMZF+57yhu/9sufv3Dh1rsOWlriAcR/MknDevWIRzxyb2/v13/j12644aZpHG6/47ZXfeVXhJKZdbVa9fPx9PHNB1934sUffsPN153YnM+Ed3cvppl1JVvb6Hn1l3nY7/353z7hqXdFKLMBBhtBlGITEZJKrRAINSuaUhEmXCq1uesYG3W2+eO/8ic/8Uu/X0t16Y8dP360Xu8fHmFzmc2wHg4ODiS1Nk5TS9tu2LYhULY2lRKYtRQllqvlrOse+dCbX+IxD2utHRwu9w8Oj1ZDmvU4RCk7mxunThw7dXz7YP/w7Nlz860NZa6nVkqJKOMw3nz9Nffc8aQn/MNf9F13w5kzRTpz4sTu6f2pTTN1oThY7992/uleby66+fw4Ouyb5+ePDqey1U87s0VfMsg6tRyUpWi9Ui3l7PKe01HdDtdtFZqXaNvFXfa1WxxwV+m06Dem9cG9Z/96cu6JTW3ee/efbcxO9LPNxWL7pR+zdd+9v3xh5OTONY94yZuXhxdXh7t2SALzTAbzn09iWC9f7uVe/sL5s3fedfds1r/B671OrRUypPr2b/Y6r/vqr3Ly2MZi1rVsU3NmltDJzFBEaL1elxJFfMOXvNiv/sHf3nP2UhSclpRpgAjboZAAAUiSpLCQIqKUUkARoVKQ+q5HYTuitJz62ey+e+7puooNlBI3P+jBN9108zSNrU0glNkciqQJKSLbNLWpq12UkIRxJtDVWkrpai2l1FqiFkmr9QAGLY+Odk4Eop/PsA+PlhHRz/r10Xqcppse9PDZbOaWwzAYz/r+3P4yM0PRcn1q65GPffhLr9eNOrScwv28W8xm83FcxjgrM1q2RT9zrKdBdZZ2w3FiaPO6qDGOzXO2pzEVlXLQd92QQ4ku6gbTsF5N2zGLWij12P61i0U/L/3ah9R48CNO9nVjpu02aXsx7xbb5w7P2hkSoCgQETVC/JcYh/HkyTMnT10HtGkYp2lWQor6Dm//Ni/3cq/Ai+aVXvtN+c9x8eL5v/mbv2yZQNfPXvN1X/X0qVP8d7vnwv40jhFlHJePeNhrv+bLvy7/3TZOrp90669lZtQKLqUHSu2lAHOZJMAGzLMJLMk2CCEAbCRs82ySeEEKALaBUntFBUrt68HhEgCDeBYbiecnM23zryAeSDwX27WU/YMjG4EBPKzXgG1JvGC2JfGiyUxJvGgys5SSOUlgJLU2AHZKwb+VsyHxrydkkNSmESyexUBEACAeQALEcxAgiQeQACTxryGJB7BdJYCzZ8/93h/8Xpta7eqFCxce/rCH33LzLRcuXrj5ppuPlkdCfd+fPXt2Y3PjwQ96cK2V/zi2gYjgAQzAE574hL/4i784fvz4wcFBKeW6667b3Nx86lOfGhHTNK3Wq1d55Vd54hOfOF/MX/qlXnp/b7/v+8w8e+7swx76sHvvu/f3/+D3X/1VX/3JT3nyfWfve9mXftmXfumXzsyI4EUgCQAZEMYgYLVe//qv//pqvepqd3H34rXXXPviL/bi99x7zy233DKsh5ZtsVicO3eulPLQhzz09//g98+ePbu5ublcLUuUxz72sY959GMyMyL41xMAkngA28Djn/D4f3jcP9gOxe6l3Vd4+Ve4cOHChYsXXuPVX+Ng/6DWGhH33HvPjTfcmM5f+MVfePVXe/Xd3d3lcvnqr/bqP/NzP/Mqr/Qqf/bnf2oDtGz7e/tv+ZZvefrUaduSeFFABYCDw4O//uu/Xq/X6/W6lHLdtdcdHB789M/89OHR4cMe+rCd7Z2//pu/Pnbs2Obm5tu+9ds+5CEPycyI4D+PDTztaU97ylOfct111508efLv/v7vosTGwcaf/tmfAqvV6pprrnm5l325m2666cd/8sd/8zd/81GPetSl3UvPuO0ZJ0+efPjDH37Lzbf89V//dShuuOGGhz/s4Zf2LvHvZWBYD3//D3+/u7s7jEO2fIVXeIX1sP6t3/6tu+6668EPfvA111zzD4/7B6Hjx4+/xqu/xpOf8uSLFy9ef/31ofiLv/qLjY2Nxzz6Mbb5j2MbOHfu3J//xZ+3qa2H9fbW9mMf89ibbrrp9//g9//oj/7okY98ZCnlb/7mb46fOH7zjTe/7Mu+7JOe9KRhGDJzZ3vnT//sT2+99dZHP+rRf/8P/7C9vX361OmW7Rm3P2O1WvGvAvrd3/vd13j117B91913LRYLodrV3d3dm2+6eXd3d2rT9tY2cPHixa7rtra2IqLrOv7j2JZ0x513PvlJj3utV381w+/83u89+jEvecP11997772llHEcr7/++jvvunMxX2xubp49e3Z7ezsilsujruuOHTu+t7dnvL21vVwu9w/2t7a25rP5NE2Hh4er9WpzY/PkyZPDMPR9z4ssMyPiV3/tV17yxR995vSZs+fO/u3fP+EN3+CNgHvvvTdK1FL7WX/+3Pmbbrrp6OhouVxubW3VWi9evAgcO3YsnRcuXJjP5rZPnz69Xq9tz+dz/n0ODw9/93d/8/Vf57VLrX/xl3+5sXX8xR77YsMw3Hvfvdvb20KttXEcr7nmmv39/Wmatre3p2m6ePHiYrHY3NzMzP39/XEax3Hc2dnZWGycPXf2+LHj+/v7UWJ7a1uh3Yu71157bUTwIsjMiPi93/+9CgDOvPGGG7nf9tY29vHjx7nfddddx38hAXDttdcCAPaNN9zIZTfddBOXbW9vc9nx48e5bHt7e3t7m8v6vt/Y2OB+fd/zHyEzr732Wu63ecsm9tbW1tbWFpddc8013O/GG27kfrPZjP80XdfdfNPNPFDmzs4Ol3Vdt1gsuN98PucBbrrxJmBra4v7La5f8K8FlStK4blI3M8295PEfxWDwCCJF8Q2AJJsA4AkY8wVkviPYnOZQVwm8ZwM2JJsA4Ak25L4z2FbkkHcL4LnZBtJYJv7SbLN85DEvwpUAMijw4u//4vzGx+yvveO+Y0PWd76xJ2Xe41p/9K5n/u+mz/88xTBfy3bwOrWJ+392W+deYv32PurPyib2+3gUtncaUcHsdjcfOzL3fH1n37du35kf93NspEASdxPCPEfLko5evLf5epo68Vf8fwv//DiES+xuu0p85seunrGkzdf7OXc2tmf+o6bPvRzVDuwJO4nif80irj42z+784qvC+z/1e93J85Mu+fb8rAeP7Xzcq95+9d9+uk3eZfFw18MJwpJPIAk/v0gsIHh7F27v/9L9/zIN0Y/v/dHv9njcPj4vxzuuf3SH//aeOE+AJv/etLh4/9yvHh2+fQn3P39XzOcu/fSH//68umPX9916/qOp+79xe8tb30iYCf/Vdqwvu/Hv+3g7/708Al/Bdz3E98uxX0/9Z1tdXj0xL8Z7n7G7h/92njuHgCb/wKZwMHf/cl9P/Wdw923Xfytn7nwqz928Ld/fPF3f2HvT35j9fQnjBfP7v/F7x4+6W8B2/wngQoAdfvY5qNfpj9z/bR79vhrvul47p7ZDS9r5/zmh6vr+W9goB3ubT7yJevOif7M9Sde883U9YuHv7iHVWxs99fdPL/lEWWxCQjxX+jE67xl29+d3fDgw3/48+Ov9kbTxXPHX/UNh3N399fdHIvN+c0PUz8DQPwXkID++gedfJ23cpu2XvKVPU11+5j6WXf6umn3Qtncnj/k0XVrBwDxnwQqEtCdvOa6d/0InsfDPv+71M2wkfgvJAWw9diX23rsywEn3+DteR4P/exvi9kcIIL/KtHNjr3y63PZNW//gTyPh33+90Q/w0biv4ACmJ2+7sxbvw+XzW9+GM/pwZ/8tTGbA4rgPwkEALg1ABtwJoANqJsBSPx3sA1gA9gANuaKmM35L2cnTmxsABtwJveLfgYg8V/EQLaGE9tOMgHbtgFMzOb8Z4PKFYppHNMtJKANrZSC5MzMjAjbUbpaa2tTaxO2JNtI2FLYCRgEEbV2XWa2aQSnLUDCBlB0XS+JF8EwrCVCyszMLKXYzkxJAKjrZ5LGccBpW5JtAElg2yAAajeLCP59JLXWWk4h2W6ZtRQkmltrisBW1K7rMnOahpCATNeujwj+kyjGacQpKTMNpRRBy7QtMHRdH1H4TwIVAKZpbNNqtV6tVmtJx48dO3f+fGZ2Xb+1ublcrbvaRZukjWlcL5dHpZZparUWTESs1+tSa61FyLY0ImUbDw/3095YLDIzMyPCOBR2zmYL/iXDsBqH1dHyaBjHjcXG1ubG+fMXSi1bm1vDODpda7VdajcOy9V6NetnwzB0fYdJ5zRNfddHhG1JrbX5Ykvi36O1No7L9Wq1Wq1ms9nm5saFi7vTNJYoO8d2hqOhlBJRJLVpWK2P1uvBzo3FRrrN55v855jG9TiulqvVMAw729sRcf78rs3mxkbf9+M4dl2Xrc0XWxL/KaACQLap1nLfHefuvuee+Xz+Eo997NNufcZ6vT5x/MRDH/Lgv/37fzh18uSjHv7wcRi6rtx79uylvb3NjY1xHA8PD0spi8Wi7/u9/f1QdF197KMfNU1jV3VweHj2/Pm+646WyxLRdd16GB724Advbfe8SDxO45133zMOw/XXXWf71ttvH8fxUY94xMHh4a3PeMaLPebRJ0+cam0CP+kpT91YLCLi6OhonKau67Y2N6dpWq5W2Ddcf/31116X2Uop/DtktlrK3bu7u5cuOf3oRz7ijjvvvLS3N5/PX+LFXuzxT3pSrfUlHvuYaZpqiaOj5W2334704FtuPjlfZGZE8J8gnYj7zp3DPloenTp56olPeaozH/KgB21sbPzD45/wsIc+5Mbrr89spRT+M0AFgNr147C86YYbbrnpJknAy7zkS3JZRLzCy76s7bF5sdhYLQ9vuekm2xHRWkrYjojWsrUpSqmlTM2LxWIcVqdOnjx58iQ2EFHsBJCkyosgovbd7JEPe1itNSIy86Ve/MXTDmlne/u6a66xMdH33bKNL/0SL5F2SK2lBCCptdZadl0HnpJ5X/j3qbUb1tM1Z85cd801EQE85lGP4rJQvNSLv7jtliwW82FYHds59lIvcTwzDbYigv8ctXbZpltuuqnvuswEXvnlXx6QBLzyK74C9tSYd4X/JFABoJRSFlvjONgApYQkm8tcEFBrBeaLzWmaBMZdJ4OETS+EjG1KKRL9bF5qh40AbAsBiogIXgRd10eU1ibbLS3VkEI4jShVoIiSmX2/aG2qku1ZVyVAmVlqChlKKaUU/t0kzRebrU2AbQDEM7kgoJQiMZvNp1LBQkilFP7TlFLniy07bUfhMgFgACRRSuU/D1QAyMxxWNUaSLancZrNNyTx/NRaedGUUvh3mMZxaoMgIkotrbXMForaldZaa1MpgdPGzhLKzFrKOK5n843MbG2opeDMzOYspfDvZltSKZUXQa2V/xK2IwKC/y5QAWAaBymf+vRnDMNQa33Igx40DOvZbA4G8d8kPe3tXbrv7NmdnZ1hGM6cPr2/v79arWqt62F48C233HX33QeHh6WUxXyOlJkhXXPmzLBeRejwYP+ue+6xffrUqdOnTrU2lVK56j8DBFdINhsbi43FYj6bZWZIAIj/PjZdV6+/7to2Ta1N4zjsbG/P5/PVerWYz1tri8UiIuaz2dRattZ33TAMgCKAWuvmxsbGYlFKsS0FV/0ngQoAXTebJq6/9npJtlvS9TP+u3XdbHMDiWM7xyNiag17Y2MzIjJzau3E8ZOnT522bRuwidA0Zd/PbM8XftAt20BrGVEjgv+jJPHfCyoA2Nl1s0yDJfoamcl/FUm8ALWb2wYbSqkIbIOi9KW3MUZIAELgfhaZKanr5nYCtZOkzOQ/Qmby3yQieH4yUxL/HWwDQOV+tpGFADtBgG1J/MexjRCSZNs2/wJLgCTZBhAgAJAM4jnINmAbkMRltnmhjIW4zFiIfw3bkvhXkgTYti3JWIjLbEviX8O2JC6TZJsHsC2JfyvbgCQewDZXQAUASRHBfy1J3E88H5IkcZntiOC/Smby/EiSxH8Q20BE8O8TEZJ4TpL4z2cbACoAHBwe3Hf2vq3NrWEcJW1ubE7TeLRc1lpOHD9x7vy5zOy7fhjHzY2Na85cw4tsvV7fc989W5tbR8ujcZwWi4Wdx3eOHy4Pl8tlKfXE8RMbi4V5DgbgwsULe/t7fd/vbO8cHR1JWq6WtdQoRVJmy8zrrrmu1sq/nm1J9569d/fSpZ3tHcEwDhEFbHPtmWv6vud5DMNw+523b25utqmlc3Nj03BwcFBKHN85fnB4cHh0uLHYGMah7/obrr+B+9mWdM+997RsQGttc2NztVqth3Xf9REhCSilbGxs3Hf2vr6fbSwWpZTdS7td7cZpOn7s2LGdY+b52Nvfszk8POi6ru97YLVaRQTSarXc2txqra2HYXtr69jOMV5ktiXde9+9B4eHGxsbmTlN02zWSwKt16sS5eSJk4vFAggAqLWePnV6PawXi0WtZZyGcRy7WlvLWutivthYbIzjmNn6vudfo5QiablaZWbfddM0ttaMa+0W88U0jeM4ANjiudVaNzY2MEDXdVFKROm6LrMtl0tJmcm/lSRgPpsv5gtsSX3X11pby8yMElwmwIhnknTm9Jlpmrqum/WzaZrW61XXda21UstsNtva3Jpam6ap63oeQBIwn8/HccrMWT8rpczn863NLWPjUovtzLSJiMycpqnW2tWu1ippHEcA8wDCAJIOjw5atr6fHR4ddl1XSomIcRxBNl3XRWgcx8zkRSYJ6Pp+Y7HITEHfdxibNk2hGKeRK6ACwHw231hsHD92nOfnmjPXALYlAXaCeBHYLqXcctMtPI9NAGzb5gphAITAwM72zrGdY7xQttMpxL+e7WM7x47tHON5tNYACQABSACllGM7x47tHOP52VhsALYBSbZ5AOPjx44fP3acf8n21hb329zY5DkYyQBIIICtza2d7R0uO7azI2lzY5PndPzYccC2bV5ktk8eP8ELltkAiQoAEcG/RBKXScGLRhIvlCRJQO26NjVJwNRa1/WAJP4lkoT4N5HEC1BKAVpLG8AmWwKlFP4lkrhMEg8gxL/bbDZr0yQJaK1FBBAR3E8SL5gk/jUk8UJFFMCm3n3XnU968pMjhPlvYbvv+7/7+797+ENvaa0BN95w/Z/92Z+82Iu9+LAeJPFfzlBK7O8fjMP6+PHjq9Xq+PHjw7D+27/9262trZYp/hsY933/lKc+5czp0xExjuONN97453/51/PZfGqTEP8tRKbvuutO3XfP7U9+6lOzpYT5byCUmTfecP3NN988DAPQ9/0zbrvt7rvviQhj/ssJbPq+e/SjHtX3fWutlDIMw+Of+MRxGCXMfwOhzDx18sTDH/7waZps931/3333Pf3WWyUB5r+awCYiHvHwh2l5uNt1FcAYAAECBOYKg8S/kgAB2Lxwgqm1cRwlAba7rislAJsXQhJgm+chYQuQAPFv4fV6DQCGkObzuQQG8d/AILXWVquVJMB213V932MDiP9qBgGs10MtEaV2GBQIMICNQTwnYxCYZ7IBsG2BeSabK2wwEgopAhvEs9jGIEHYPEAppcQMmRCYZxOYZxI5YSiFZzMAhuCZnOMgQPwrKSJaa5IEtg8PD/nvJkkSl0kax3EYBv67SVFvv+OeP/7zP0TjejW1ZkmgUkrtapua0yWUJhSKgoStCIEkRRik0vddS0uSCEkihKQIBGNjHKb16igiMGDA0NVOIdvOfMTDH/pij33sOI7AbDb7i7/6i6ff+tdTiwvnc2OjRHiayMTpCBRK22Zne7vUunfpEshgq9TAUon1epUpoa7vrjlzrZFtMAhswALzbOIBbM9n3Su97Ivv7BybpkkSEBH8DyNJEv/toH79d33OXz7+1q5r+3vrvYtH8835Tbfc0NVudbTqvRERl3YvtnW57qaHdiePX7r3PhmM27S5s/3wl36F2eaJvu/6buf8/rg98+ZMfVENzbpABJr1ZX85HC6nJ/7dE7KNTGPX94v57OKl/Yc87JGz6vV6XUp5wlN+r+/6Rz7yERH66795/Cd95rs/+rHncuz++A+ms2fLqes0tNnB3nR0OJ44vrF1Ynb+/NHe7tFbv/lbPOolH/Md3/Xd/aKujqKfzUu3MZtvqtTXeI03kOaX9i7ddPNDrnnMy43T1LI1G5NJYgjAGLBlA2BjEJLvOTo891t//i5v+dpIXPXCQX3arX9/4sTNd9967713Xern9WB58NRLt24d27jlppuO9SeGYbmezRfbp296sccM07h/930b2xvL/aPS9c52x5P+fvPYyese9LBjZ66/YRFd5KJXxbJDMok1TWwu5tvbXc8r3vm0J4ZHRZAu3ey6664rjMMwdF2/Hqbb7rjjsY95tGp98lMed/edu+LaU8fH4yeHu+4eL9xXu3nZWiyO79Qk+17XX3tmVg+OHdu65eabN/sTxmeu2draXkxtMd+Yvcorvdbbvd37zzdmw0BLDperTGwb0k7bBglk2yBksAFzWWZLlSf9yZMPDw42to5lNq56IaBuLuZTOf+Uf3j6TTfecOrkyYPDwza1e5529mD36FVf5VXHvbaIjcWpM2VrfvufPq5lrlbraRqj77PlmRsffM011/Tzvi7vvfbaaw+Oxr39UW6zroxTK1JBQ5sSla6bbW9HravDw42tY9PYiBaKcT20aULR2iQFQHo+717yQdc/5Rn81V8ePeaRj37Jlyh7e/vjMN51951t8pnrN1Z7Skx4d39vbLmx1U+5rl0sV8Opk6ff8R3e/cVe7BVaGw8P3DJbunabNq21YVjZthNE2mAAbAzGmMQYoJ9vzvqOq14UUG+6+WEPefDmz/7AX910080PftDNFy5e7Gr3t3/3d8+4/faz545OHb9+9+DSyYfcuHfuwsGF3eOnT4/LZe06kM3+weG1Dz197MT2IqbVark577MJaoj10KbEtm3DekpvLE5cd9MdT95bTdo8dmbvYL2ecnPWr0t0te/6XsIg4Rbzo2tPbuzfOd9/iZd4uK3dS5cy26133v6Kj3joo2++5YkX7z67vjRd9Nm7z5eIM9ds33rrXp3p2Imthz3k5td8tVe/9yl/Oz/5oO1rb16vUOHCPX+4nma1P769/eDVeszMzOYEyQaESBsEOBMU0sW7/uTcXX9d6iuBueqFg3rf3U+/6/b60i/90L9/3N/+2Z//6Ww2syHywQ+75dan3V4eNDv+sOvn27PVwd58a3MchvVqdd3ND85pGFarvfP3XLzvrmtPPmZszub5Rjl+fLOE9g+Gkydmh0fDapjIFG7psbXY2D5x6pp77z17371nV+shVme3N2frYaxdd/dd97zYI66XwK5VWcfHPOjkfYfnf+bnfp5013Ut8+HXnX65h994Yr5zx+q+izEthjK1qe86aTZN0+Z8ce2J7bP3Ln/lJ3/kYO/OE6eue523eNezdz1+efT02572+7ffu6Goj3rs6z7qsa86jlM33xjG0W1sabCkTFBkNgdRu4NzTzl/258e7V9SFNtc9cJBveMu7Zyenzy9ybyf9RuqYeLGm89sn5jv38VW3ek2ZrHOh9/8mI2pv/fee3c2dx78kEcdO3n6KU/4m+tuuG5jsx8PLuxe2h9WR7cNQ5BRoqv99s5mN5vHJKNpcsvsMC5JuK0WnXfm3dZmP7ap60utxSSYK1JFdXtj641e5jEX99ahkg6s08c3ul6rtrxpcXq+6O7h/LGTs2EYHvzQG9ervRuvPfF6r/qye/u6++xdx4+fuvvec7/wI9+69H3b27KO9f32/v7wjKc/8c5n/One/vy1XvctNjd3ZoudTGqEjZ2tTYqN4mlYnb/jrr+YVsPWwjYSNle9MFAPDy+9+usc273wmD/83b84e7hXqzaPbfSLmKYxPTtYHu7+5b2LxWbf97WrW/PFYrGZw3DxrjtmsH/u3MG58/fe+oxay7haLtdr6kat3cbGxuHe+tj2Rl9jPp8t5ltW11qbPF1/0y1djd2zd5ZS5rP5OI2zfla6fmNjQxKGwKZmrg81jbPj3caU2fellDIs27iir+304tjxuO5B29ZmXR6talksD/3Q66+9497JtGUrD7n2ZeZbd124707neFRyXNdHXHPTE492x9Xdt91zcbksP/gDXz/rNl78kY9+udd4s9vP3qVS+sXGk/7sdx55U7nrnvvKcLBa7g8+7Gdhi6v+RVDvvP3Cb/+mXuqlF33Vsb5frvPkie3Dgz1N83NnV6dPn9w5vj2fzaP0ipiy7R/tH91xNE1T1/dlqF3fLza23M9P3vjwM2eumc9mzknoxPHt09v90XLcX6fbcOn8uXP33X1p79Kx4ycVXeln07B/eITTmeN4NN178U70UlxmPDVF0HXRcqq1ADJdKYhMr4f1pJxtbJapzmpdr1b33nvu4ODSDjnrN6/fOXnx0gVfur1r+8s1a+abs2vuPT889Y7zq/X+rNdqym7oX/7Fr32JnfH4X//s0ROevF6vM7pHeTx2OC73/Q/3sHUTs9PLC3fOBeaqfwnUk6eP3XeuhfZNLip0/bSK/aP50eG4vb3Z9VVS8+gputpLMd9YIBRRSi1RZLU2atTh2bva4aUIbFTqvbM+W9pk5rBerY+OsO3cu3A2FFK3WGwdLi9SvLe/HNpw9tK9rU2SANtTc2spRWs2yeQs7rtuam1zY7EcxuW4zpyNg/LW+4ZVPOKhj7z73Hi4nq65bvPYxjWX7nviqeOb191w07n7brv33ruedt9fb26f2aANU7l79+CVXvza13ill330iz3iuus2x4uXbn7xm+7+m6e1g6NZqK2mm3eGl5oPF9rRrXt++p6jgLnqXwB1f/+wn/d/8HsXHnzzmXsvLa/dufFor62Htlj0Jfo2ZqlhNI7D1FqUMmfRWmuZIpFQY5jsyKm1cbDCUmsZtRaIEjY4FZHTJEVO09RW4zjWWq35fXt3r1friDIMaZv7ZcthbF2RIdPC49ic7vruvrZ/39Tf+OCH/t3j/ubS3uHen/75qWtu2Dx2bCjHtXnNwXr+F7/3F+4WEeePHd975Vd97dOndw/rn3F4MTydPLl5tD549KNf6aHXnNy59cn3/cX+1su/eH3wDbfe68OBfta7TTkMhbZQbO4v221/aCcUrnrhoA5Dm3J9/sJdyjMPf9gjnnbrpa7rjx3rhzUy4zrtiDCOUITKej1mtswcCwUUpZaqUg2pErWbzxfL5Wpjc9swP3ajaj9NY2Yud+9rw1FOB/Y4ldmwPlRzN20dLpe1Yxp4oGbSDFNrbYooXa2ttRI6YPytP/+7V3i1N/ybv/ybJz/pCaXEQx7xiIc9+lE3P/oRWzsnotualbjhxhuffu/yUmvHjs2edvbsqWuve+RrvrMPzvvC0/pORX9318XlX/3l0158a7xutee777n4jLvWq+350Wq2fzDVEps7iUZ06/lz952/WGsxV/1LoEYlZn7YNTeeOXnmCU+4S2WxtaglclxHjaaojIToumIr7WG9UhSViIhSSkiRqZxsNWC2M3bHFls3bG3t9EEXUdUiZsvBB3m8LB58cOnchbuecvrBL7E6uOg2dnvnIko3m8ZpFZJBYJiSlipiShVjZymxu1z97VOf/phHveT119/4yz/7C4ut2Wwxv+eu28b0k57+d201nb7mhse+8uvPxA07sbzn8OLZe0/f3J0/d+/u2Xuvueb0zsNeOS/eub//Z7/3q7/xZ1U/t735oS9+8pZLk0NnL+yff+oz7rnz7jOPfXTZGO++7a6H3HxmGIabbjzTWqs1zFUvFFRSD735lg94zw/ZmG//zV//3V/85eN2Dy6cP8+0rq25DlPX9bWbTS27rmiKWkupApDUGlKp0XfzrZ3j21s7wsMwbMxmZzbHzUXZPzharXNrXs9sV3a2al8uLLbvylO33Hh8HLdOHt84fWxx6dLFpzz5KX3diijYEOk8Wq0vHS1DTiglikpMGXtH19z00GPHTu7t7r7aa77qwdHB0dF6mlZd39fN4099+t/PZyeO7lvtR2mH977Eox/110+a/uoP/3bz2PHNzY07b7uz6zdP7sy2rn1ot9h5lcdcE+v93Q1funP/xV77Qetf/N0/fcbR4bFjF26/tMH55eHhHz31ca/4sg99iUc+aD1MXdfb5qoXAmqtes2XeZW+LhYbx9/0Ld76VV75Fb7kK756Njv9sJd42Ob21nw2T+fhcjUlaSvU96W1aT6bHT++s5j3J09ec+a6G7a3tzc3F6YItqq3utxcdIv5/PzuweFqmqacWlsuVxfP71a1WupDTk7X33BdRByuRsfWoivPuPXufKWXRMIQ7B8b6/HV0XTQ1XkUAbN5DFPZ2jw2TsP6/D0bi83rr7u+n81LV1froZvNX/phD9+7dLh37xMPD5d33H3uphuueeWXetSZE8ef/LRbz9931/Fjx695yEOu2d659lGPPnHyRPF6q2/ZxsMLd//DP+zuvNS1b/fYo/XR/uF6N2aLaSrz7qb1eHTPXZdqrdhc9cJB3eg3tnfO3HPP2bvuvPvMmZsX81mJ+Zu+xTu83Cu/5mp9tJj1crNbFEWRFGC7dYVaO9u1hp1tatN6aG2ydcG+VEqwwntGKMaphdTPj61z/w/+5K+D4ZVf5sGPe/IdF85dOFgNY+Dde8b1UhIYQB7ne2Vno58Ea2WtXc1kj8bR0Wx+7MVe4iV///f/+MLFi9tb24vFhmq3MeWxY9s3XHdqNusvXdp/zGMetrWYFbWXeNQtD7rhzPmLl45WKxinYfmMpzzlyWOLUqPrS5Su72ezGze2HrK9IA8unr39tjuf+MSptY1F1zKrxhoyV/1LoPZ919ZLbx2L2cb+waVLB3W9Wj7uGRfLTb6wu+50tNG7qNXwxiy6Qgn6LooMTfbUMu2QAyGVEkBrky3bNmkL97X2/ezSwXD3nbddc2rxhKfde899lxZ9N+/r9nZ3NN/M1moNG8mhOuOaGE/0rYzro4ieqe+6blze+w9P+fvaz4+mmaLb2ztM6pBl+9jG0eBp96jv1ov5bGNzcer45ulTi4uXLt11x+0bmxuLLuZ11lrz+tJMQcvlykeroXSlFlar1XI1lcWp6x/zGi/zyg/L/Xv/4nF3Lea5Wo+nthWBuepfAjUiN2ddujs6XHtTi8XGYnPzztue9PKvfHZnuvea08dO7XSzvhvTijJMHA452lLUElNjkptdpL4ScokoAfS2yZxahnI+q4L5bHbr03eH5f7pUzdsbm5cc8ZdVzSNxzYWy3uO9g+OsqUk7FL6hz7kNeTV9rFT+3vnd8/eMwzTsWMnaz2/2Dz+kEc8+tzZs60NB/t705RHh8v9/YP5fLGxsTmfz5eraf9wOHthvz79jo2N2Yu95MuodPv7y4PD5bgeVsul2yRljXJ8Ua9bXLrxxV5hneX8ffc+5Sm3Hb/vD/7ybx9/ENs3XHcCchzbog5pCpirXiioswXjNBxe2r3r3nMPedDNx7bPPPKRj/qLv33KE//6d/7sd3/u1MmTp07szGfdxmLez/pSa9/3pfbGoQ7VkAfXvbHzuO76/uRmJIQUIdvpbNPo1sb1+viZ687ed2F7a/GQh9w8rQ+n5aW7b79wYXf/lutObqwuDet1yxQAdh4e7O1fuvv82btKCZWWbXnfxactp0sPe/RLPebFXuwv//RPjw72WrJer1qbxmlaLpeHB/vz2Ww2m3Vdt9jY2Nvb62e9XRYbixMnTpw8dnx27amWunSwvHBx/95zu73WD+0ubMfR3np24tjillP17B1/8Q9PvfeRj3iMpMOD5Xo9lK2QuOpfBnVcx6lrb3nYNQ8+efruO++40zp37XU33fsrv37y9HXHTl3frEtH7B6sSh2X63Xfz2azGaKrXYi+RrNKrbPZLELDIQcXJkrU2qVdJGVGhM3FvUuzrVP33Xv3qRObznbr0596fGfLOUUplpulEpIMklqbbr/jb645c2ocx72jw2kYjlZHq/VqeTBdf51Lv3Hs+PHDw9WxzeMhC7dplOTMo6OjYb3u+n69Wh0tj6bd/IM/+KP1ejh18tSxY9tnTh2/6cbrH/7ox95w8vTDrnnQwTTlbY/j7OP3xwcVhhOnT5+9++5rTm7edsdti2OnASeYq14kUM9s3fLHf/7Xb/bmD7r5pptbi7293ePHj3VVf/snv9P3i5BPnTheodRoEKWOuIRWw1AjNrc2e2uqkVPr+55as7VeJdRKrbJaS4UyPY7jwe59+5d2H/mIWw4PD6PE2QuXjp849eCHnbzx+uvP33NPqX9WSthWRLZ27x3npmWulpNdIsI5r9pclOHWpzzxJV/qZWstu+dub6mdE6dn841ZP5svNiMI0pkRMYzDsF5f2ts/2N8/c91N0c1299eX9u/7q7990rHf/6P3evs3fujOse3t2Z/e3T/p4OLO9TsHh8uQzu0uz13Y2zp9y+HB6nDvQrM2Z3Mhm6v+BVC3N7d+5Md/6jd+9w/f+R3e8eVf8ZUOjk5jbrrp+ttvv/Wa62962tP+YffUqa6r21vbG7P5ALdMOauR8/n2NadO1/k/rA9vaiVr9dFh2KXv7lOM6SnWlNJajuN0sH8wXyzWwzRN47ET27O+OjduueXakyeP7e8f/P3f/cNf/PXjFrM+IngmkXOxudiIEBG0TFtdzsZh/Us/+xMh48xsR/vnDy6dr/28ny3mG5sbG1vzeV+6Mp/Ph/VqeXR04uSp7c3Fdddd25J7771v59gtd91x+6/89p+86su+xCR29w/vuufcdVMd1E/DmENmxji2/UvnM3OcsrUOcdW/DGqpZd4vnvrUZ3zl13z9Ix/xyy//Cq/0mq/xmtdcc+2f/fnfvcRLvfTB3rWLjY1MH62Gg8OjWei6rZ0/P9h/5c3Zzt6l4+vzr3D9dbr3LH33tKPV044ON2fdnoKotZQoYWctdb1aPvjhD7p437muxkMfdPN8sTkO497epb/4s7944lPv3F9qXC8XsxoK22BJN97yoOPHju3uXnS21lrt+nGcaq2KIlO7bufEqeMnT0qxXq33Ll042NvbPXfpQtL1842t7dls4WZFzGt9+Vd65TYst44dO3/unlAeO378vnMX9w+XjmjpzDx725O6ze3V4d5yaNM4cem+WVemJilqDQziqn8B1BJ0M9Xa7Rw/tdg+/ZSn3/OHf/I1y/37Dpervd3zirjm1Om+VgURlJAjX2JarKf12ak9ta8PvnDfHV09Vroyj1vm2/OeKhOqtZaomRklDpbLKMtzZ+/r++7Ou+7evXhw591nL1xaLqdS+p0TO75w/mh7sSnxTFKUkmZYr9NebGxGRJTOmRVNUyulzBfzbFMtdRpXw2q1sbl50y0P2t/bP9jf27947sI0HTtxpjWfPLZ95vSpS0frja3N13z9N7zztmf89Z//Vba2u7+/vb09DONqGLr5YvPEtUcHB+O4PloOi2MbB3u7fd+X2kUUgwTmqhcG6tZ8fsO115y9cDgO47HjNxw/eZrFjcuLT3/C3/3BpUvnV8vlU5/+lOuuua7rusVi3tX6ZJRG/YbJzfniH0oZhrw3M5Tbi34dXtQOixBRPOWFCxf6WWmr5cH+UZT44z97wmy+GXVr49hOnXI4Wl44e3eoHT92AgQgtWk62Nu7+eZbDg/2hvXa6e3jx7ONhwcHW9vbR4eHpYTchtXhFOX4iRM7x46vVuvtneM7x0/auTxc7l48f/HChWkaWjqnkbaiHJ918/2LF7a2N3cvDnt7B13fL5fLo8PlbL7Y2No+Wg+t5bGTp2ut840t8Go1rFaEZHPVvwBqH/mgGx+yc/LGP/njP/iTP/iFnRPXveKrvumxG1/yaU/6y/vuvfvhj3ixpzzl8avlUS1FpUruaq39rO+6CLq+LxHNCKE4GwpJhEJ2hmJKL4+OHvuYR+xfGJfr1fU3POj0NTes1sN6Pa6PDlf7u+O4VlGBrc1NYwAj2Dl+fL7YXGxsTtN0/OTJa649c+nixWlYz2ez48ePXbxwYVgP28d2jg6PnK3ID7puu+/rbXedP1wOsm2P01DC995z593nLt1w43XLS/cdrtpLvfJr/NyP/mBE3HPhYCybq6nuHa2Ohnsv7f9e6WbqFqjaLBbz1qaWdP3MNuKqfwHUwdHG1bXXXHPjDTc/9SlPGJb7T/zrX7v+xgcrYlovT5/YeEbXvfhjXuzw6KDvemez1LJFKQicpcTUsqXblItuhmjproQpEdrq+tba1mLjCbc9sURE7dar5f7u7u13POPo6FJX4tSZ60+fuu78vXft7Gw7LQBUSt/32abNre1hveqLzt51++HRCjy1tlwuNzY2txb9dacW7VicOTE7ttlH0dPuutiG1fJotVodkW1jPq+lLuw//YPffr03eeszp2/QpfN/9ad/aCPa/uFRmR3N5rOtE9fLk7pyNIzDsNxxHh3t7+wc39rasCkhgwTmqhcGak7eWfR3nL14080333bbrbXrnvzkJ+zuXTpz+vS99961PVfXLW6/655jx46j2s8XXV9rhNVKqSGMx8mA04tZH7JRKdGa+66e373Upmkah4u7e6WUg93zl87fd+ddt7/Gq77sW7/VWyzmi7/4y7/88Z/8hVOnTnelZCYSgH3x/LmTJ09ma+v1cHF3b5imbFOtZZyG2WynlLh04dKlxRz1l+7YffRDrysNqe5szTY2FkfDNpRhGPp+drQ82r148Zd/+oe3j58sJQ72Ls3n8/VyX0zr5cVxXSwtFhvLddveLB/8kR/4mEc/+ty5c9//wz9++50XtrZ3FAYLzFUvFNQ6qye3Tv/d7X937PjJUvvVeh1RlkcHm4v+6Gj9tGfc/e7v8k6/8Zu/u1weXrhwbhjGru+wiai1SNSuRoTSJCoKoqVLLSHVru4frl75ZV9sf/f80XI1m9W6Orj37PnXevWX/+zP+HSbtB/z6EfXWn/1V3/bVmspwK5dd+LUmdlsceH8hfmsAyvHM8ePUaf5VtfXza4vBwdHeyu3aX3xwqVRs2E9kK2Gb7xm++Txk3eeO7rnfDt1+tTGcnHq9OlbHtLO3nvPOIwPe8TDl0fLre2to6PDzDw42M9pPOrn80X3TV/9dS/5Ei85jtOjHvnIl3npl/qoj/+Uu+872JxtgMxV/xKod5+7NJ/tXHPqzLHrH1y7P1mv106P4ziM03wx/4M//JPz588/6JYHXX/m2sViUUKKUJSWOU1T2gcHh/uHq2ObG10tKrWrXe1KiK52UmxubcjTXz7t9mwts66nqU3DW7/Fm4/D9Pt/+Pst24u/2Eu80Ru+4ROf8MQakjAIMlMKRaldvz7crV2/sVjccMOpcxcuVZ1YLOar1VGp5eK5szs7Ow97+MMjh3G1PFwNfVfvuZTnjw7HYb29MR+X+33puo2tWrutra2jw8PVarmxMb/x5psy82B/79x99x0e7l+6dOk1Xu01XvIlXvLv/v4f7rnn7q2trVd55Vd+vdd5jW/+jh+96fpjYIG56oWC+pd/+/fnzp2/uLt/9q//ejbfuLR7qdaaLYf1UGu3Wq+e8MQnP+4JT+i6fj6bLRaLxXy+sVgsFvOtzfmsny1X67HReZCQhJXOTI9TG8ZhtV4fLQdFWa3XETFOrWXr+9641uqJWd+H4tjWVpsmhbhMaGNzc2dn59677tg5eW2t9ey99/zhn/7dTbfcMt/04eG+zfbO8fl8ceH8+cOjZVdC/cZGtzGfzYZh3L90uLOzM9/cmPX9/v7+PbfdNpvN+77v+r6MQ2vtYP/S9s6xY8dPXHPttfv7e0998lOOHT8OzOezlm02mwEbiw1JGMxV/zKo4zReuHRQ+351cG/a8/ncGHm1Xu1sby+PDtdr9bMZ1jhOUzs4ODyKUESRQlFLiVICWwqFQoqIiIgokiR1tTtaHQLTNNoc7h/+/h/+wWMf+9iXePGXGKfpxInjf/QnfzwO4+bGJuaZxHq5PNi/dOzY1rGd7XNnzy3m8+uuveaGWx7yjFufsbG5ubm13dpUIkqthwcH11xzJkqtXR9S5uH29lYtsVwuM9k/OKq1LhYLBM4o5brrb1gulxfOnz92/Ph65Y2NjRd7iZe68+5z9957zyMe/vDNza1Tp04Bf/Knf378+AkwV70ooJy55rrZbNFy2t7eMV6v16vVehymYRiP7WxP07hcDdittWlqmQlISEhRIgCMFKGQQgpJIJCxYRynw+Vye2ORLYdp6rvuL/7qr0+e2HnUox6xmM/+7M///Nd/7dce9qAH333fuetvuOZhD32opCc84Yl/+Kd/1dV604033njTLVvbm21sD370jVs7m/t762kaulqHYR2hWrujo6ONjc3MXK2W0zhsbG5ElK7rM/Pw4KBN4zXXXlNKXa1Xh4cHoZAQdF09Ojzoui5blhJT8z/8w9894mEPOXPmzGq5/M7v/p4/+OO/2tjY7Ctv/AavJQVXvXBQDw8PRbnmmmuHYTg/tZ1jJ2s92N/fWx0enD1/8TVe+41++zd+5cLFi/1s1tVOopRSa40IlShRI0IQERGllGIRCiSFhCK0GoYQ48Z8HKeWgMcpP+2zvui7v/9HFotFtnzj13p1IzvTlgCkWCy2do6duLB7cPbiwa1PecJqudxbrrd3dg4O9ruua21qLe1pNp8dHBxsbGxsbm116iOKc9roYn+5PFweydre2cl0OmezeSlleXR0/tz5cRzOXHNN38/vu/eeEydOCiQ95el3f+pnf8nGvLvnnvvGjAc96JYL5y+sQ5JsrvoXQH3xl3iJa09ff8+992xtb+0d7K9WqxtvuGG+eNhyuTzY3z862H/owx9x9p47p2kyLrUKKxSKEtUhSSUiIqIUSZIUEQoAnC23t7Yf9JBHHuzeV7tRCKnvu43FpiLGSS/56EfNF4vD5TKilAgbCfD21saJE8encbzj9mecOHHiuhd7iWwZJfqum8Zxa2trtVp1XZet3XjDDbXWna0tYBgG5zS1tjGrG5unZ7M+WwZu9jRl9v3mxkIK7GEcTp7c7rs6juOs77rZbGOxECDd8uBHHBzs7V/a29raXvQt06Vgc9ULA/WTP/FjXve1X/f8hQtRAtNas7Pr+1q7bNN6ve76vqtda621FhG2WzYeIBQK8RwkABtKlH42H9YrY0CKkAAJEFBK9H3/tKc//fbbnoqdrW1vb3/+Z33Sgx70oNVyOU1j7bqI4kwk286MKGAkbEm2bdvOzMwmRd/3hswEC0kAhoiQhDHYWaKk3aaplGK7ZRMqtdiMw7BYLH7t13/l6Gh57Nix1hpXvRBQ5/O5QqdPn+I/03zW8UJtbmwIAQZJO9tbXS3d9hb/XTY3gMViYSdX/YugttaAo6OjJz35SV3t+r7f29+fz2abm5t33X3Xq77Kq9purdVaL168uL29XWv9u7//u8wUStuZt9xyy6lTpzJTEv8mklo28ywepwm44447zp47u7HYAHYv7d54w4133333Ndde86BbHjRNU621tba3t3fixIl777v31luf8WKPfewzbnvG6VOn+76/7+x9i8Xi4sWLgM3R0eGLPfbFjh07ZpsXQWaWUjITxFX/IqjGwB133PETP/UTe3t74zCu1+u3fuu3fuQjHvlbv/1bv/brv3bmzJnt7e277757HMfFYvFmb/Jmv/4bv767u3vdtdftXto9Ojp653d851OnTgGS+NezDYB4IBv4/T/4/b/6m786ODhYLVfXXHPNe77He547f+4nf+YnTxw/cerUKeDOu+6U9BIv9hInT578ru/5rrd5q7d5/BMe/9jHPHZ7e/vue+7u+/7P//zPb7755r29vWEYThw/cezYMdsRwb9EEle96KCGArjlllte89Vfc3NzM50b841hHB76kIe+/du9/W2333bTjTctFosnPvGJXdfdcMMNG5sbL/eyL7dYLDY3No8dO/aXf/WXt9xyCyCJ/ziSgFd6pVc6fvz48ePHI2IYhsVi8Zqv8ZrHjh1rrd1yyy2XLl06c+uZ66+//szpM7XW93qP95L08i/38jfccMNDH/rQ3Yu7T3nqU97h7d9hHMdHPPwRy+Vye3sbkMRV/+GgAsBsNnuD138DnoMf9chHPeqRj+KyBz/owdzv5ptu5n433ngjl0niP44k4CEPfshDHvwQntOrvsqrcr+XfImX5H433XQTD3Dttddee+21PCfbkrjqPxxUAMjWolbAEGAQMggyMyKA1lpEALa5TFJmllL4z5GZinBmRPAACQFAa02SJMA2l0mSZNs2l0kCAElc9Z8BKgBErdO5uzVbSDq6+/b+mhuG++6a3/SQo1ufuPmYlz160t/msNp68VfERpLE/Uop/KeJiNXtT53d+JDlU/9BtUeUrWPjuXvmD3rEsLe7fMrfH3uVN8BGAiTxAJIkcdV/DagA0FbLO7/jS06+3ttg7/7BL88f9Iio/cXf/KnumhtisXn+V3502j239eKvyH8VO4H9v/mjsz/9XQ/+pK9uy8NzP/ct/XU3jxfu9TTd8F4ft/cXv3v2Z7935+VfS12PjcRV/40gsIG2d7FsbI1n7+7P3BCzRdu7CMRi09OkUuuxk215CCDxXyiXh9H1bf8SrZ1+83dHdCev6c9cv777GfX4adqY6yVX/U8AFQnor7nh5o/4fI8D0jVv9/7diTPD2bv7625a33Xr/KaHnXy9tznxWm8BYCPxn08K4Ngrv/7Oy72mahcbW2Vzu7/upu746fHC2f6aG6a9i7d8/FeUrWPYSFz13wsqALg1laKuB/prbgRmNzwI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","type":"image/png","originalSize":2024537}}}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"22134a8d-c00c-4010-8672-4759eff375b1","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePd1c5ZMCY1h9xXHXrav","type":"message","role":"assistant","content":[{"type":"thinking","thinking":"","signature":"CAIS+AUKpwEIERgCKkA4YXK21T/oDH2l9wC6450VNcG5fPp5jLfnv1ZsszJqgAhZBHG5oyIiypMnVOwf64wh3qYn74ZdJyiOlx/999A6Mg5jbGF1ZGUtZmFibGUtNTgBQgh0aGlua2luZ1okNmZjYzhmODMtMWY5Yy00ZDMzLWJhMDctNGQ0ZGYzN2Q2N2Y1chAqK78ZzsiVUzI5xDv77u/SiAEBqAGOzLbUBrABAhIMkD1kZYH9f2EPlkx4GgzrY65OpKI4UFEgw4siMHW2P2NGZtpYjwKGYfR3dNugkmaY9uHAoSsd+KDUfYmdo4ubD7nlZjh1/GANf4ZScir9A0ogbYWbhR7o2ZutEu5SOX+gCemdi4ghH46iIOzihp/8kCYK8rXPq4/piP2NK/r3R+NiW0o4yz8GhgRRsLnxqmL9BWs7WsPi6iTvAfOWIo3NkZGcplZNxTtahEZADmKJPij93vJZuEugAwbzj8vKwKofae1krTFZRHBIhJ5n/SYh5Ame14MalmxzE5BrtkB28OSPckdvd1c6Vsh5rNXWzXcIDsl81JPf7nIFCUXHACPetZGkV4wf9iCkBMfFnOiqGN+0ilLzouKMkt8hGDv+grf7BD6FP3A6bnmcIlsMFRan4IZH+KL73lF/5pKp0B2FRq7Vxlh1LNIqPJINkgFOxxp9IelEWSwdkWAtZlx5Jp5TqWbUXl5Z4dl8+Y4sfhdYN1J8URklym7zgLaMGz/MVI+K07jwtDKErkTjOvx437M4Pm/gdQeLSR6lf+ow/yxbnz5L22Kx1Tyoo6DBvWrp5/1sb+p4T8/chF+4SIjSUGXD9DpHDjqYmHNXk7FFp4xAk0+OU3VGfCjUl2GtHuYp+tU3nxjW2ozS2aVtBP4qmk83O8co9XX0cN3F+xsLye/g86/M1OosGB5+uj1W8myFo/R81WX4QXNdseULf0KugtoG9df4mOk9XhwzfrdZY93fU8QuI654JHBFafNlmEvs5g64maIXws8CsYYJyzR+GAE="}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":335,"cache_read_input_tokens":115996,"cache_creation":{"ephemeral_5m_input_tokens":335,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"f368b998-79f5-41ef-a7b9-3507283f52de"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePd1c5ZMCY1h9xXHXrav","type":"message","role":"assistant","content":[{"type":"text","text":"Le desktop est bon. Je vérifie la carte OSM (blanche sur la capture — probablement le timing headless) et le rendu mobile."}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":335,"cache_read_input_tokens":115996,"cache_creation":{"ephemeral_5m_input_tokens":335,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"043622f9-28f9-45f1-83e7-c2cdb89e57de"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePd1c5ZMCY1h9xXHXrav","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01YVqTBYeYCbdMqZ1wudELcq","name":"Bash","input":{"command":"cd ~/auto-ka/frontend && cat > /tmp/check2.mjs << 'EOF'\nimport { chromium } from \"playwright\";\nconst browser = await chromium.launch();\n// carte : attendre le chargement de l'iframe OSM\nconst page = await browser.newPage({ viewport: { width: 1280, height: 900 } });\nawait page.goto(\"http://localhost:8095/vehicule/denisauto:5168959\", { waitUntil: \"networkidle\" });\nawait page.waitForSelector(\".map-embed\");\nawait page.waitForTimeout(4000);\nconst el = await page.locator(\".panel:has(.map-embed)\");\nawait el.screenshot({ path: \"/tmp/autoka-map.png\" });\nawait page.locator(\".vd-head\").screenshot({ path: \"/tmp/autoka-head.png\" });\nawait page.locator(\".panel:has(.scatter)\").screenshot({ path: \"/tmp/autoka-market.png\" });\n// mobile\nconst mob = await browser.newPage({ viewport: { width: 375, height: 800 } });\nawait mob.goto(\"http://localhost:8095/vehicule/denisauto:5168959\", { waitUntil: \"networkidle\" });\nawait mob.waitForSelector(\".vdetail h1\");\nconsole.log(\"scrollY initial:\", await mob.evaluate(() => window.scrollY));\nawait mob.screenshot({ path: \"/tmp/autoka-mobile.png\", fullPage: false });\nawait browser.close();\nconsole.log(\"ok\");\nEOF\ncp /tmp/check2.mjs scripts/_tmp-check2.mjs && node scripts/_tmp-check2.mjs && rm scripts/_tmp-check2.mjs","description":"Screenshot map panel, header, market panel, mobile view","timeout":120000},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":335,"cache_read_input_tokens":115996,"cache_creation":{"ephemeral_5m_input_tokens":335,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"db9262f2-2b1a-42d2-980d-9214ec9c0b0e"}} {"type":"permission_auto","tool":"Bash","key":"tout autoriser","input":{"command":"cd ~/auto-ka/frontend && cat > /tmp/check2.mjs << 'EOF'\nimport { chromium } from \"playwright\";\nconst browser = await chromium.launch();\n// carte : attendre le chargement de l'iframe OSM\nconst page = await browser.newPage({ viewport: { width: 1280, height: 900 } });\nawait page.goto(\"http://localhost:8095/vehicule/denisauto:5168959\", { waitUntil: \"networkidle\" });\nawait page.waitForSelector(\".map-embed\");\nawait page.waitForTimeout(4000);\nconst el = await page.locator(\".panel:has(.map-embed)\");\nawait el.screenshot({ path: \"/tmp/autoka-map.png\" });\nawait page.locator(\".vd-head\").screenshot({ path: \"/tmp/autoka-head.png\" });\nawait page.locator(\".panel:has(.scatter)\").screenshot({ path: \"/tmp/autoka-market.png\" });\n// mobile\nconst mob = await browser.newPage({ viewport: { width: 375, height: 800 } });\nawait mob.goto(\"http://localhost:8095/vehicule/denisauto:5168959\", { waitUntil: \"networkidle\" });\nawait mob.waitForSelector(\".vdetail h1\");\nconsole.log(\"scrollY initial:\", await mob.evaluate(() => window.scrollY));\nawait mob.screenshot({ path: \"/tmp/autoka-mobile.png\", fullPage: false });\nawait browser.close();\nconsole.log(\"ok\");\nEOF\ncp /tmp/check2.mjs scripts/_tmp-check2.mjs && node scripts/_tmp-check2.mjs && rm scripts/_tmp-check2.mjs","timeout":120000,"description":"Screenshot map panel, header, market panel, mobile view"}} {"type":"claude","event":{"type":"system","subtype":"task_started","task_id":"b4cznmwd9","tool_use_id":"toolu_01YVqTBYeYCbdMqZ1wudELcq","description":"Screenshot map panel, header, market panel, mobile view","task_type":"local_bash","uuid":"774eb508-d860-4037-9893-9d8e58d70f6e","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"system","subtype":"task_notification","task_id":"b4cznmwd9","tool_use_id":"toolu_01YVqTBYeYCbdMqZ1wudELcq","status":"completed","output_file":"","summary":"Screenshot map panel, header, market panel, mobile view","uuid":"9cce802f-8a4a-4710-8c96-5f67bef4fbc8","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01YVqTBYeYCbdMqZ1wudELcq","type":"tool_result","content":"scrollY initial: 0\nok","is_error":false}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"355f5a5a-865f-4921-bf5a-d98551a424e6","timestamp":"2026-08-25T14:26:38.698Z","tool_use_result":{"stdout":"scrollY initial: 0\nok","stderr":"","interrupted":false,"isImage":false,"noOutputExpected":false}}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"0b8ae569-e94b-4fbb-a7dd-1e36dbb30132","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePd3LBQARCnJ6pwQUARv","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01Wx8TsuSasHsxSAUxqyHdDU","name":"Read","input":{"file_path":"/tmp/autoka-map.png"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":910,"cache_read_input_tokens":116331,"cache_creation":{"ephemeral_5m_input_tokens":910,"ephemeral_1h_input_tokens":0},"output_tokens":14,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"449e00db-c2c8-4dd6-8561-fce350749f79"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01Wx8TsuSasHsxSAUxqyHdDU","type":"tool_result","content":[{"type":"image","source":{"type":"base64","data":"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","media_type":"image/png"}}]}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"f7a90b03-b283-407f-b5c7-b35bb95fcccb","timestamp":"2026-08-25T14:26:45.364Z","tool_use_result":{"type":"image","file":{"base64":"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","type":"image/png","originalSize":52244,"dimensions":{"originalWidth":771,"originalHeight":397,"displayWidth":771,"displayHeight":397}}}}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePd3LBQARCnJ6pwQUARv","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_012cGBzi7ntst6ybU7xJ8ycK","name":"Read","input":{"file_path":"/tmp/autoka-market.png"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":910,"cache_read_input_tokens":116331,"cache_creation":{"ephemeral_5m_input_tokens":910,"ephemeral_1h_input_tokens":0},"output_tokens":14,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"d6fafd50-9b31-45c4-b880-1bce460219f3"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePd3LBQARCnJ6pwQUARv","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01RfAHnf9AMUHtFyGTooFijt","name":"Read","input":{"file_path":"/tmp/autoka-mobile.png"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":910,"cache_read_input_tokens":116331,"cache_creation":{"ephemeral_5m_input_tokens":910,"ephemeral_1h_input_tokens":0},"output_tokens":14,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"704ebf3b-7a18-4478-a800-5d2d2279f2a3"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_012cGBzi7ntst6ybU7xJ8ycK","type":"tool_result","content":[{"type":"image","source":{"type":"base64","data":"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tigd9LkjFRUVoVhXTBzkZ8VzT9w2ujbTG4T9IVlRTFghTgnzhXATBKdcpjBzVXPOFLsWcoY/rDxncqpVxPm/d/93+ozpv2rO5tfvz/T3dzM546ywawU400y0FGdXS9WcJ02edM999/winHl1IecQSCZnfneEnN1ZU8KfQwUy/fma664Rta+F/gxLf4o/L1++3JT256VLlwoNzc/056uvvTr6JfoNNM3Kc3atn8kZrFzrZ3JetmyZ+Qn+PHHSxPvuvy+Tc7S6+o2fxdlLITMs26J0wMX1sPFjSu7rQw8/1LFLx806b9apSyfsdOxc2MfOuHHjUGDWrFlnnXvWFltv0WKDFjvusuM/bvgHNSTXgzsoSY7S8R0VILcQ7R02v6DACXK4AnrmPcbND29Izirkztt+hTlz0/idIOqy6eh7beOMs7f+59Zd99i11YatNt9q83P+cM6s2bNCzqecfkqzVs1atmn58isvh5yx/eeO/+y2x24QAteCg30367uQ88mnntykRRM43ksvv4SDo74cBeeEZ3bq2sn5amGna6cnn35ScEY3cdO/boKSyAntstsuRx171LAvhv26OJvfhD+/+dabBxx8QPtN2m+02UZHHnPk0KFDqcwPP/xw0Z8u2nrbreEDO/Xc6e///Lvro0txHvTZIHgU/GHfA/bltfd+sfeJp5zYfuP23bfvfunll7pei5RHcIOzm3TapMMmHQ45/JD+A/pnch4xcsRxJxy31757vd337Z679bzx5hspzvhZnBcsWACjtuq+FTwfRqG3hBziPGHihBNOPgEoOmzslSnFGYPQzrvuDCHb7rDtlVdduWTJErJ36tSpCF969OyxYYcNjz7u6Icfedi9nc/V8sXwL444+ggAx9m999/7hd4vZPozZvz/d9H/QfiMGTPQBOf933m4AanA6vdnHHn08Ue7de+G2/n0s053x4EOXoFBBxy23m7rCy66AHhDf8bO3ffevdd+e7Vp36bDph1wORCRQ8LNLr/y8u123K5129Zdu3X969//Cpi4BJ0J6sJI5/65fXQpjz/5uEn7s2O1zXbbgBV87Nzzz539/WyzQv3Gs889Cx9ru1FbOOSxvY79+mv/x2Jnzpzpejang9u5+d83Z3L+3wP/g4vCHChz1TVXIcKjU33f7Xv4UYcDAqrY/6D9Pxv8GW9HTAvhEjgF9wAlmJPp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","media_type":"image/png"}}]}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"45b5e187-e89f-450f-bedb-85dcc41084e2","timestamp":"2026-08-25T14:26:45.779Z","tool_use_result":{"type":"image","file":{"base64":"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tigd9LkjFRUVoVhXTBzkZ8VzT9w2ujbTG4T9IVlRTFghTgnzhXATBKdcpjBzVXPOFLsWcoY/rDxncqpVxPm/d/93+ozpv2rO5tfvz/T3dzM546ywawU400y0FGdXS9WcJ02edM999/winHl1IecQSCZnfneEnN1ZU8KfQwUy/fma664Rta+F/gxLf4o/L1++3JT256VLlwoNzc/056uvvTr6JfoNNM3Kc3atn8kZrFzrZ3JetmyZ+Qn+PHHSxPvuvy+Tc7S6+o2fxdlLITMs26J0wMX1sPFjSu7rQw8/1LFLx806b9apSyfsdOxc2MfOuHHjUGDWrFlnnXvWFltv0WKDFjvusuM/bvgHNSTXgzsoSY7S8R0VILcQ7R02v6DACXK4AnrmPcbND29Izirkztt+hTlz0/idIOqy6eh7beOMs7f+59Zd99i11YatNt9q83P+cM6s2bNCzqecfkqzVs1atmn58isvh5yx/eeO/+y2x24QAteCg30367uQ88mnntykRRM43ksvv4SDo74cBeeEZ3bq2sn5amGna6cnn35ScEY3cdO/boKSyAntstsuRx171LAvhv26OJvfhD+/+dabBxx8QPtN2m+02UZHHnPk0KFDqcwPP/xw0Z8u2nrbreEDO/Xc6e///Lvro0txHvTZIHgU/GHfA/bltfd+sfeJp5zYfuP23bfvfunll7pei5RHcIOzm3TapMMmHQ45/JD+A/pnch4xcsRxJxy31757vd337Z679bzx5hspzvhZnBcsWACjtuq+FTwfRqG3hBziPGHihBNOPgEoOmzslSnFGYPQzrvuDCHb7rDtlVdduWTJErJ36tSpCF969OyxYYcNjz7u6Icfedi9nc/V8sXwL444+ggAx9m999/7hd4vZPozZvz/d9H/QfiMGTPQBOf933m4AanA6vdnHHn08Ue7de+G2/n0s053x4EOXoFBBxy23m7rCy66AHhDf8bO3ffevdd+e7Vp36bDph1wORCRQ8LNLr/y8u123K5129Zdu3X969//Cpi4BJ0J6sJI5/65fXQpjz/5uEn7s2O1zXbbgBV87Nzzz539/WyzQv3Gs889Cx9ru1FbOOSxvY79+mv/x2Jnzpzpejang9u5+d83Z3L+3wP/g4vCHChz1TVXIcKjU33f7Xv4UYcDAqrY/6D9Pxv8GW9HTAvhEjgF9wAlmJPp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","type":"image/png","originalSize":96297,"dimensions":{"originalWidth":771,"originalHeight":540,"displayWidth":771,"displayHeight":540}}}}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01RfAHnf9AMUHtFyGTooFijt","type":"tool_result","content":[{"type":"image","source":{"type":"base64","data":"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53/0J3/0kIc85HVe7/V3TpzMpuVy+ZQnP+3JT3rKtddc8+KPffR115xezLoaFikTQnI6sVBh1iUbe8uVs9FSRlIIY9tpISRsbNvCNiQmbWQbA7LVWptapmVTAo/T1mJx/PgJRT1cDud29+6+976777n3nvvO1vniuhtvKv18DQaEkbjCxomNjQzYIoSRAGwQYNtAYmcCYNtGgABsDAYwCLB5pgQEgIwzraq+76KWUmuETp86WTwWxjYM89n8umtOPfRBN951950VXEpsbm6tu26aptr1tdTFYtaVMk1jZk7TNI5jZpZStra2+r6fz+cbGxuGli2dmdlaG4a1pO3tbUkRdF23Xq2m1gCglBpRJDnSrfV9f/z48W42U5THPOaxO8dPPPXpT7u0t/eoRz76hhuuXyw2hIOc9fXuu+/avXDh+huuPXXyODiEwHbaRVLotmc84zd+49f2Lu2+0Tu+w0u/7MuZSLO7u/93f/8P991335u8yRs96pGPPLazVQvhDATIChQ2IJFFVbRxaOOYjRQ1JBFEhARTpm2by4SVJNhgZANEBFZO2dJQwOG8dOHc8dNbi8XGemwHR8u9g6Nn3HbHnXfefe78xZsf+rDrb75ZpTqbipCQwpINGAwGC9siQJK4QsLYANiZto1ksA0YkTYGEgMYCdsSQk4JDJKEJCeeskUtXd95authWK+Hzbmq4tLepf5EefQjH7m10a/W+xUYx/Ho6Ghvb2+1WkVErTV2JWc/64SMBV3fz9TbZObR0dHBwcFkJLXWMhOotc5ms+PHj21ubkREZobKMI7L5dHe3r59SVJrLVub1TJfzHd2jl177bXX33Dj5vb2nXfflejRj37M6WtOz2azWoogp3buvvvuu/ve666/5sTJE621WouR04WIIk/t4u7FP/iDP3jc4x7/2Mc++tVf/dU3t3em9Ho9PuO225/y1KedOHHiJV78Ja45c6YrRZlgKSScIEmBjbKollIkCJFEaD6bbcznJWLMtr9cDeOEMELCJNi2EwTYSAJay3FqbbKddpPHYbm/tXl6sZgfLdfnL166tH9wtFyfu3hxdF530y2b28eaLQEIYdu2bbDTgMAAzgQIANu2QTyLZLDNFSaxbQCMAGzstJEkcYVMJhGALI+ZKtH13bhcj2O7tLdXY7GxNd/a2trf37/rrntuv/2OZ9z69ApM01BK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","media_type":"image/png"}}]}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"7c29034c-483b-47be-a300-4dba2f76bb67","timestamp":"2026-08-25T14:26:45.819Z","tool_use_result":{"type":"image","file":{"base64":"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53/0J3/0kIc85HVe7/V3TpzMpuVy+ZQnP+3JT3rKtddc8+KPffR115xezLoaFikTQnI6sVBh1iUbe8uVs9FSRlIIY9tpISRsbNvCNiQmbWQbA7LVWptapmVTAo/T1mJx/PgJRT1cDud29+6+976777n3nvvO1vniuhtvKv18DQaEkbjCxomNjQzYIoSRAGwQYNtAYmcCYNtGgABsDAYwCLB5pgQEgIwzraq+76KWUmuETp86WTwWxjYM89n8umtOPfRBN951950VXEpsbm6tu26aptr1tdTFYtaVMk1jZk7TNI5jZpZStra2+r6fz+cbGxuGli2dmdlaG4a1pO3tbUkRdF23Xq2m1gCglBpRJDnSrfV9f/z48W42U5THPOaxO8dPPPXpT7u0t/eoRz76hhuuXyw2hIOc9fXuu+/avXDh+huuPXXyODiEwHbaRVLotmc84zd+49f2Lu2+0Tu+w0u/7MuZSLO7u/93f/8P991335u8yRs96pGPPLazVQvhDATIChQ2IJFFVbRxaOOYjRQ1JBFEhARTpm2by4SVJNhgZANEBFZO2dJQwOG8dOHc8dNbi8XGemwHR8u9g6Nn3HbHnXfefe78xZsf+rDrb75ZpTqbipCQwpINGAwGC9siQJK4QsLYANiZto1ksA0YkTYGEgMYCdsSQk4JDJKEJCeeskUtXd95authWK+Hzbmq4tLepf5EefQjH7m10a/W+xUYx/Ho6Ghvb2+1WkVErTV2JWc/64SMBV3fz9TbZObR0dHBwcFkJLXWMhOotc5ms+PHj21ubkREZobKMI7L5dHe3r59SVJrLVub1TJfzHd2jl177bXX33Dj5vb2nXfflejRj37M6WtOz2azWoogp3buvvvuu/ve666/5sTJE621WouR04WIIk/t4u7FP/iDP3jc4x7/2Mc++tVf/dU3t3em9Ho9PuO225/y1KedOHHiJV78Ja45c6YrRZlgKSScIEmBjbKollIkCJFEaD6bbcznJWLMtr9cDeOEMELCJNi2EwTYSAJay3FqbbKddpPHYbm/tXl6sZgfLdfnL166tH9wtFyfu3hxdF530y2b28eaLQEIYdu2bbDTgMAAzgQIANu2QTyLZLDNFSaxbQCMAGzstJEkcYVMJhGALI+ZKtH13bhcj2O7tLdXY7GxNd/a2trf37/rrntuv/2OZ9z69ApM01BKnc/ns9kMsDPbhOn7ruu6iIgSmNYmO5yutU7T1CsUMU0TIKnWWmu1vVqtJGXmMI5HR0dHR0e2a+3AQC1lczHr+q7UutjYtLh46dLWzs6111y/ubkZRYHCtvPihXN333XX6VOnTp86IyRhExGWMx0E0j/8wz/8zm//1nxWX/u1XvPhD3+4FavVsLd3+MQnPfnuu+5+iZd8yYc9/GGL+RwSWwGSrQhJapmSZSNHLVFqMwld1M2NrVPHjzmnC7t7bs1OkBEYMBjblgAJgZy0lm2yHUmGc324f+3pkw+6+ca0Dw6X9527cPd9967H4cLuxflicf1NN2YpFkIgsOwE7JDNM0lggQGZtJEBG0kyNkgC2zaXOQ1gJzZSREjYCLDT6QRUJClsCFAYHFH63tLY8tzF3Y2ZTuxsbh07fttt//Dnf/ZXd971jLvueka13XX99vZ2ZtrOzKOjw+XRIZnDsI4ILouIiCjR9f1sY2NjsbGRKDOHYZimabVa7u/vTdMEBmqttVaIaZoEs9lsNptLalPLNmba6c3NzX7W21x73XWnTp+ptQpFke3Vcr136cK999175sypa665Pu02ZqkRUSAgbdu+tHvpV37lV257xq1v8Pqv92qv8iqz2Ww5TOthvOvuux//+Cd0Xf8SL/5iZ06dVgROKSRIQJaMiLCwNaYPl8vlep2ZJiy1lkfLo2G9Otw/aFPWKKMNtgW2bQNhIwnApD2OU2ba2Ahfunj+hgdff+b0qWEc9w4Od/cOzp+/ePsdd1w4f/66G6+7/qYbLSUQAmMnwpYAEIJEFtiAucIYA6QJY8DGttPGAAgD7rp+Nptl5tSmNrXMFiVK1Fq7Uut6tWrD4DQhN1MlwFn6Pmpt9sVLex6PZl0c7F76h8c94alPfvLh4d7UVhXUdZ2dbZrSztb6rj++cywKmSlpmibbhmxNQlJmeprSpJ2tZWtdiTKfp9OQmRGRmbZrrbWUElGlUmtDqzYizRcbW9vbp6+55vjJk5tbO7V2EYHdxml3b/feu+9eLo9OnTpx+pprxtaGYSo1FGrNToek0Gq5+ru//du//Iu/uOH6G17ndV7n2utuyGQY28VL+0988lNuu+32hz3s4Y99zGNns5md4JDAgATG2CHbVhyNw73nLly4tN8IpCnb4fJovT5q4zROU1rOUDiNbRsbEADOtI1Qa56m1pqbCdzWq3nVse2NWupqzN39w6P1urXprjvuGIbh5psffOr0NY5oNkZgMBay0yDJkCTGgG0MRpgrhLGxATKdNpe1bP180ZVy3123PfHxf3/7E/9hff7e4eDSeHRQ5xv91vHZyTM3PPLFHvHoF7/hlofYjMsji8waUiSllNp3UWqO43I9Pu3W2++5446nP+MZ+wcH2abNrc0K3HvXvbVWSVEU0sZi49jxndrXcZrGYZhaLpfLcRozUxbev3Ah5vP5fD6vXVdr7WvpyszYUst2tFxmy2EY1svVNE4RqrUu5vO+n2W667vrrrvu2uuvv+b6646fOhWlQhhl+mh//6677jp79r6NjY2Tp689fubU0dRWq0GpuToNjYyuk4ta5jOecesv/uIvjuP02q/9uo969Is1l6F5Obb7zl/8u79/3HqcHvtiL3bjDTd2tUiGNCmEAgDC2G1CY3L20sE9Fy6tmtOyBKymMYwgVRMMWDK2ACCdyNhYUoDGaZomTMlsCtPWN5w5cebkieXU9o7Wu0frg8PD5eHBwaWLi9n8pgc9tJ9tLm1jWQhANtgA2JkGG8AGmcQCg6VAsiUp07YTTKQbsNjevue2p//aj33f3t/+0Utw8I7HymN2Zqe3y+nTZXfYu29951OePvzeX/3Cz+VmfdTLvv47vNdDH/7Yo6PD1iZLEbXU6PpOJaZBh6vxnrvvvu/uO/YODsc29sFN111XJU6cOLGzs7NcLrNNXVdrrWmP09RaQ2zv7Jw4eQqQGNdDmyYpZrO+lApEhCBCNsYJ88UiIqZpGlbr9WrlzL7vNxcLm+Y8fuLELbc8+Jobru8XG2Nmm8baaVyvL5w7d9/dd4/jcOLEyeuuv36xtdXsw+XROE1VEaOc1W4qpUh7e3t/9Cd/8hd//ZePeuSjXv4VXmm+ubOecjlOy9X6nnvuffqtt157zTWPftQjNzYXCtkpQQgLAgtkJ5ZK3dtf3nth92AYG1gg2aTTEgSSjWUQWJAAAmwLBMDU2jROzUZFkW5tXB5tHTu+ubl5af/g0tFwuBrOX7h49513Hh4cnr7mmtPX3tCkKdMFKbjMADZXCMxlUoBtwAJJ2LYkbDBOp53OKLWv8as/8t2P+/kffufNow99iVMP3jlGDdIYbAQSoY9ovudg/R1P+6Pv/Jw/u/G13+rN3/n9VLuchgwc1FkXtbSW+xd39y5cOjpaD9OYTJtb2y/x4i9WJe2cOD7vZ0eHh0fLFUuDEbWvEbFYLDY2up3tnflsJrFer1trXDYM42q1vLR3sFquQqpdV2ottShKKVFK6WdV6rNlm9rBwX6t9Zrrr3vwQx9y400PqrP5/tHycDVE11862D1/7uzq6ODEzvaZ07fMZvPa9baHYRzH1tIqrMeWaZXSpmma/KQnP/m3f/d39w+Xr/Sqr3rdTTcfrUdL62na3z+89elPO7h06RVf9mUe+pBb+r7aRlghCSwUEDhRRhmtc7t75y7uDS0nhyOEjW1spEQB2DZOO21JlrHdrJCF7WkaxzY2Y1zIaVhO49jPZkRdHi4PDo+G1eroYP/ee+9Zj8N1N9107OTJdTpDQoARBkjbRgKwuUKSHWApAacBYxsswIbMWqpb+76v/+LyJ7/4i694w4ufOcnU3LJNKRAgMAZDiOs2uk97mRvec3f93r/x/d/y9Ce/98d+1sbxE6vVUpXa166vzmlcr3MaIe02tXbs+LFHPPKR1fa5s2c3NzZLVzc3N8dxsBM8TtOs70sp2drh0cF6vQxFKaWUUkqxPQyDpH7Wz/q+RIkS4zRNrdmNlrWUrutmXQesjpbr9XDNtdc86pGPuPbGG7r5xtF6XI/T/uFy//D8pUu72aYbr7/m5huvX8y6YRgk5+Q2TDQDLQ3OsUmy697+3h//0Z888UlPvumWBz38MY9tEcN6FVFb+r577n3i459w/Pj2ox/1iO2drQjGNpKohFJAgIRRhgbH7uHq/N7h0TilKipGkmUscNrCaQRubmlDABinsTMlAbQpW7Z0tByLYFqfPnHszDXXDs3DlOMwHh0ero4OL+1e6Gb99Tff0m9ujIElg0AGMIDAtsCZCUgC24ANtm0bhAFMpsGlVrJ995d++ovf+sff9/oPXVSm1RQQoopnE8/idFtNN291v/G6D/2QP/3L7/i8j3u/z/jy/viJYbna6LuNjfkleVyv18vluFq11kJabGx0tauZuX+wv7G5GaVERCllHIf1eukcV8txtTwEIkLSfD6fzxeldKUEl9VSZv1sHNar1RFiPQyr9ZoQ6VrKzvZ2UUzTtFqtjp84+eCHPOTmm2/pFvPROlou77rn3vvO7y5Xw8lTJ0+ePHZse0MlJjfjbE0qtZRxai1by0YU7OWwnrI9/glP/P0//MNuNn/V13ytjePH91arWrqCs0133H77nXfc8bIv+1IPedhDo8bRerlcrRH9bNb381CAM0BMaG813Xnu4sXDVao2ggjAICHbGGMwSpzYIISVzaSCgrHVMqepOcHGZBsZh1PXXnvs+In9w6NhbMN6PHvvvWfvvXtv9+KxkyevvfEG+i4Vk1MQkjHYxshcIVQkZGzbjhCQskHINlfIhtms/96v+cKXesYf/8hrPYSpTaOreOEEVbQpi/imV33Qx/7J077tCz/1/T/ji/ut7Ww5m89qLdCyjeM4QM5ms9r1F/cuVUnb2zvz+cLZsCNK33fHjm0rcDZgGEeg6+psNpPKarVqrZVSopS0M9NIinRGRCllnCa3Nuv71tLy1Fo/m506debaa6/r+j7RwdHR3ffee+7ChVJn191wuutK4rG1oU2l60pXc8JNkiQh2Z5aE5bi/IXzf/zHf3zXXXe/xEu91GNf8iVVu0RDy85tb/fSk5/0ZMPDHvGI46dOLsfp0qW91WoVUTY3vaOudlWhhLQPx/G+3YN7L1zaX42NaIaEkA2kbcCAsW2AEBZgSLAQtgzTmG1qNAs6PC4PNC6PHdueyOU4rac8Ojpa7u9fPHtuvV5ff+P1x0+dbHZibEXYtg22AbBsS8LYNmAbnEIGyxbYxoCcubm586s//n0bf/Lz3/86D2ZqLV3Fi6iINLEev/Llb3r67z3uu77gk9/3M76k29gS7vuu77txHKdxxMxm8xMnTo5TVpsL5y8eHh7WWmezmWDezzY3F8WqtSulSEUhSdOU47je399fr9egbjbr+77ruq6Wza3t+WIewTAM6/V6GAZJOeXBwWGt9brrrrnu+uu3jx0f0xd2L9x+970Hy/V1198QtR9ampycq2ncqVu1m03rsVRFV6FMmdlEZmuTYBzHv/vbv/vLv/iLEydOvuqrvcZ119/Y7GlqtQRTPuWpT3/yU55y7XXX3fLgh1K73cOj3aNVG8euZNSx1vXCLvPewXoYL+wf3X3uwqWjoZlESGmwZZvLLIiExIawDNgYWbYSgDTT1LJZSEmI0tqZkyevv+aa1TAdrdbrcVotl21cH+xd6krccvMtG1tbExgFkgnZ2AaMZWwZWzaXSQIkCaF0GmdrtjOTvu/OPuNpf/1zP/BLL3ttV5hGV/GvEqKZku1bX+HGl/31v/7F7/jat/vwT1YXG9sbi43FOK6HYR2wtbF54uTJsWWVtNiYz2Yz27XWvutqKa1liTKfz0upUUqmx2mcxjaNDTTrZ0hEGccp05m1q12mgVLqxkadz+attfVqLLHa2to+duzkyVOnj1ar+86eu7C/V/rFmWuu7WbzqWVM09DG1lpCOho1ZduhKH2deZbDqExI0mfvu/tP/+RPzp87/7qv9/ov9tgXj1Inu7UW5PJo+aQnPvHg8PDlX+EVrr3hppFyaXW0nLJE7UodW1ut17WUnkg4WI8X9g4uHR6N2YyQJJG2Dba5TBhLtrCdxiClZTA2AUxtGlszcmYYT1MRD7r5+q2tjXvvvPtoPQzDuFotdy9eONi7tL25dcMNN3ZdTasKpxXIabu15kyIUkopJSTh1hIRUQBBmya3UcateWpTa55ycez4j//Mj7z94vAlTp+Y1lMV/wZFTM1nFvEJj732437n1x704Ie/2lu988bO1nxrY8ochmEx67c3dxbzzfXUqu1xHBaLhaSIKLUqAogowzAdHl66dOnS4dFRa62UUmvNzFLK1vbO9rFjXd8JjcP60u7efeuzEZI0TWNIXde1MY+fOL6zc6y1PHfuwp133ztmbh47duzEaSIs9fO+TmMunW5pxonV0Kb1pMyxtJAsdbUWIKcpx7/967/6m7/6q5tuuPHlX+7lt7c3162ZcPPkdu+99z7xSU/a2tx+sZd8qTrf3FuOe8thbN7oO5fSzNRyam25Hsb0hb2j3YPl0LLZxki2LdtGQrKxscHYyLINyGQ2I4MxKsM0TZkCkTXKermONm5vLY6WB0dHB07v7+3dd++9995993J5dMP1Dz518lRHGVuTkRSor11Xq0LYtrpSQoEArdfrtLENOTajUruA6DqbTHddt3vx4u7f/uFHP+YkLYPnUQotwZRKJk5egCKY8n1vnH/n7f0f/drPPerlXvnUddefvPbMbGszz53tSre1fYwoQ8sqsbGxOZ/PbZcSEYpQSMM4LZer9Xodpe7sHJMkKSKGcShRd7aPbW1stsxhGKZxguj7WSlFIiIwtpFq7Y+OVpf2D89d2ptvLB76iEdsbh9TROJSY7boY9J6GqYWiZbDNE2rYb0mWw2VQIq+drO+n4a49bZb//xP/yTb9Cqv8soPe9hDQXJGMFssxmF4+tOedvddd730y7zM9TfetFwPe6vVwdFKUleyKKKqZR4sl16tV2PbPVoeradmrEibTAOSJBsAwrZtMGBjJzhNZhJCYZyZY46Zk7IFJtNtvb256GrZvXgh2xhEuG3M+4c95MEPv/n6hz3sIbfcdFO/fXxlqfZFmob1rIu+6yRla7KnKYdxaK2JCJham6ZJUrbWptGtja1lS9mZ2W1s/tmf/uFjvPfgneuyZYjnYHPpPBs7RHDxPuYbzBbYPD+ClmzN4nVPzb7p7vN/+7u/+jrv+r5nrr/+xgc96Pw9925s79xw4021zhpZgdVqmZl2RqjruojI1trQkGaz2WKx6LrO9jS11Wo1rEcYx3E8e5bWWomoXRcRQASlll6z1to4rE+cPD2fL9bDMI3j4d5+t9io3YwIhZQZQVfDjhIK1NLr9bDKcbVaBQ4SZVfq1mKz1np0ePCnf/LHtz7tqY99zKNe9mVeamd7azQZEaUsFou7d3ef8fSnz2fzRz7ykbXrlqvlar0ep1ZrQTJOa8wcMqfU/mp96Wh5NEwtQWCMQRJGgO1MBKEQTjuz2SlJZMggZxNkS48rtzFMOGXvbMxuuu7U1tYmwXX93I6Tm5sPv+HaRdXWrJsv5nT95FLGKXG2Fk5WY1sP2XKaRpJhHFerZWvNBlgPw3J51Fobh3EY1sOwbtM0TW1Yr6dx7LvZn/zBb7/f8UpRToR4Nptuxlt+AH/yq+xd4J0/hsf/GU/+G7qeTKLg5PnQqx6r33Fve8pf/9lLv8Gbnz597aNf4iWWewderbZ3TqBiUyWdOHF8c3MrIhQKydnW67VUSimSImKapmkaa6kbG/NaS2tNUq21lFJKkTSO4ziOErXUqBwdHc362ebGxnw+nzLbcjlMYzfrVaqCUlRK6boaUlEEMgBTm9braRzGiMAt3bqSEUG2pzzpiX/5Z38277tXfZVXuflBNysoRGnZd53H4Y7bbr3ttmfceNMND3rIg1prIcI5q9H3tYSQhvSULqW2iHXTcsyh5WSQLGwkGdkAGDnBQUBGazgBZwpHWjJSqdWl7HRbtcTGfD4vhTZtzWYnj232tW5vbCya1quhzvqYdX1VV9Sc43LZUq3lNOVqvZbdhmEax3EY1sPQWlstl8vlahyHYRiAYRyPjo6GcRjX49SmcRrHqdk5jdPUpr52RxfPvtSNc9LBA0i0ifmC9/0s/vYPeMeP4uVfl9//ecY1pVI7lof0M56TAPtRW/VYHfb39u566pNOXnvTqeuuf7XXfu0Ld90TfZeSs9RMX7q0u14Ps76bLxazWR8CaNmmNrXW1uv1/v5+wHw2l8LGtu2IiIhpmjKz73uJaSrDejVNU5GuuebacRwPj46W6+FwvXKUjc2t0lVCtdB1fe27UGkyljNNTG0a2zSSBVmyw+n1NB1c2v2TP/2TW5/+tDd5wzd47dd+zeMnT67GNplqzefzixcuPu0pT97fv/TSL/fSx08c7/vaRURIUUotaU9TWw3DNLbS9Y66HNs40VIWIAMCCWTbTiAEaTyJFCkZ1NUyr3XW1ZAD+vlsPt+YzeaZ6Wls08hY5l1RG9bLobUcxzauhpAiNI05jbZ9tFyt1+M0TkdHq8PDw/WwHlbr9Wq1Wq2GYWitrdbrYRimaRqGwThbjuPYWrOddsuc2pR2ttYyS5RhdXh6Ftg8Fwng3tt4x4/kYS/Jp749dzyZV3lT3vGjmC34pe/l136I2QIn95PAnOhU5WGa7nzKE17sVV+3pXdOnprVfjxaehztrBJ9389mHbYwzpZZStRSnJ4mpBkQ0sbGBklmSmRma2lnrSVCi8WilNJ13TSOe3u7EbF78cKUXo9TP19M09Rt9Fs7W6pRirqudF0ppYBIkbiR8phTsy1NTqkoSrq5xB133fk3f/s3115z5nVe57Ue/OBbhpadlQREm/L8hQtPf9rTt7a2HvzgB/ezfmNj3s9mkoRW43i4XK7W42o1HA0Tq2bFMLZmrEguk4JnMQhssgRdxKzra1Eo+tptzGfzrlScwzCuVwXXNnYtbI/jOqbWBbMgJAvjyOZpWK9W63FYjevler1aDwd7h+vlahqGo8Plar0aprFlTuM4jmOmW8uxtWwtMzOzTdOUzemptSKl3VoD0mkb0xhzGo53CwziuWUy3+TV3oJv/XRueyLbx5kt+KvfxuZtP5Q/+kVWh5SKzbPYOzVq5hBxcOH8uB5KRLOaNCZB1BJV0smTJ2az2YULF3YvXmit2Z7NZkhSGNuMw1S7algsZhFFME3T0dHR4eGytQYMw9B1tdau1tL3/f7+/jS17e2dUgqQzsVisbm1GaFaailFIUGaTGcakybTiRNsAgfRRTm8tP8Xf/7nF86efas3fdPHPvbFS6k1sqg01Jr2Ll186pOefM+99z70YQ87feYa24vZfGtrM+3Vej0ejYeHRwdH6+UwjY1GS7dMGyc2ki1sAGFspKihvmij67YW/ca8q6GAQhSR49DW62jTPJjP+vl8Xmo1yq5ka8N6vVoerodx/+hwuVyNq+Fgf391dLQcVoer1Wocp8w2TONyPY1Dm9o4tQmns7U2TmM25+TmbNna1BCttdYa0DJDaq3JgG1HRFe7zLTi4pgPFhjEc4hgdciv/zrv+NE87k956t9x48N48GOZRqaBNoEwz0HanzxBKeVo/9I4jqp1cq7WQ2utwyKqpKrSlXrq5ElnZmatUUvfmqc2TdMUipZZu652FaMQmUCttes6SdhtmgAUlGjpnWMnTpw4dfHixXGa0saxs31sPtsI1ShVUYWQWsvVNAzT2Ehb6WxWkySyZbRWajzxHx7/Z7//hw990INf9dVe7djxE2PLxIrmpmy64/bb//Zv/zbNgx7xyDJbkAopk/XQzl/cP3txd+9wtR7bhBwlbZvEzWkLLJCbkEqZ0jah2JjPe7ItD1pbeuxPXXvmxM5WG9bZstYNzDSNQq3l4dHR/sVLR0fL5dFyuTw6ODg8OjpcD+NqvR7HabVarZbL1trU2jCO63Fs2XJq0zRlm7Ll1DJRc45TtmmynemWrbVG2rbT6eQKO51IQKZtRwygRjk/JAjMA9kA197CF70/wOf/KB/7JrzGW/L0x3HhXl7lTXixV+JPf42NLdJcZiNxfsgB9aUs9/enaepLNyyXbVgpJ1AT1falvb3VeilpsVgsFou+70IlU5k5DOvMzEyVGMdxuVxmZpjWWmZO07RYLLa3t51u2Uqth8ujru9vuflB4zBmGoXTfT87fux413VRCtAyI2omwzgtV8v1NDa7pUMRiilTgeS+xqVz5/7qz/5seXj4ci/7hg952MMHa1iPChKmyavVdPvtd95xxx2nr7nm2ptubpK6mop1y/3l6uLB0d7Ret1yUiQypJ2QOAUgwjmVkERmQiC1zP29w94j68OdEzseh41Sjm8s3NdpGlbr9f7Bwf7BIYpxmu6++97d3d3lcrlarYdhWK/Wy9Vqam2aWmttvV4Pw9imKZ3DOI6ttdamacyWtltrmU4YpzTOzMxsU8tM40AigNambMllzUkAsu00EBErl8cfrl8/SAjuZxPBsOanv4VhzXd8NtPIgx7N134cb/uhXLiH7/tiNnbAPIAB6clH00HGNaKbz6HIeJrkDFIUTAVhlsvlNE2r1arWWmuJqNmQVEqUUkoUK7uu67qK7eZhPaSd2bquk6KUKKUYl9CxEyclnTt3LjMV0TJ3jm2ePHUySqjQ3DJl15Y+XK2Xq/WUaUkhEKZIJVRRmfIZT3/qX/3ln58+ffqRL/GSWfqL+0dRSuL1MLSW+3sHT3jSky/tHT7ixV9qa+eYS0yl7K5WrNb7h0d7y6N1m5pkhSGtlJszAWQJyQ5jgdNIwzCtjpbLvb3NLq45vlVqf9+5s33tSyjH4dLuhd3d3b2Dw/V6SLNcrS5cuHh4eLge1uM4TVMbhnG1Wk1Tay2HaZqmaZqm1lpmTq21NrXWWmvpxKQz7ZZuLYXSmenWpkxHyKZEqRGttWmcFIHdbMuSsEGAQHXxB7sHH9Ec4jkoWC/5rs9jc4cofMMnMN9C8IXvSym0Rq0stsnkOfgPLg7ZzYRnm9ul1ABn2sZOZ0RU8Hq9Gqdxf3/fTkmQdogCzOezzc3N+XzesrXMllNrjWRYD7Zba7XWWT/bmG+qaLVeHj9+fGO+2L24u16vJdI23tra2jm2ExFpIxta5jD6aLlaDWMiIgql4WiWouAu2L1w7s/++I8O9i696mu86s7pM3eduxDR9f18mMbluGqZhxd3n/zUp/XzjZsf9GBFpMrRNC0vXpxaDsO4HMYmpZUCy8LGRiIhLUARzYlRlHFoB3uH+3sH6+XBOjweHly4++7z9919150nzp29qSoPDw6maZym6eDwaLVeHxwcHh4tV+vVOExTa9lyGIf1emiZU2vj2Fpr2VrLNmU6M9OZrbU0iWUyjcGZmZmZIGfabpAmNI2KbK21hiRhQADYUiByys3Z4s/2fNfRdMNGzXTwABLHT9MamBPXkgkw2wAjYZPJ/QwlWA35OxenYxvHx3HaPHai73umITOzpezAxtW2FCeOn9ze2kEpKUK2sllS13WSbNOopZZY2Ba4tZY5Ta1E6fv5ol80Z6n1xIlTXelWqxUgSdB1ZfvYVj/rJINCAVoP0+FyXK3bmHKERWIbQZG6UhiGpz3lyX/zN391w003POYlXnIq9WC5LmHWObU2ueHx3IWL95499+AHPeTU6TOp0pL9oyGdhtY8pVFIIjEGSSoqacsWTiOJ+x0dLfcPlsMwTUOuPI0Hly7dd7eH1ero8GD34rwvdtZaW8uLuxcPj5ar1bBaD+M4TFO2aWqZ0zRN05Rmajm1ltkys7VMNxubzJaZXJa2bTDGdmbaxkYCbDdjp43ABpCQsMFGKSkzq8odbfHddxx+6qOPZ3OI59AmrmgTV5jnq5la44dvP3jSWG6az5ZH0/UPfUzf9ePqMMcJpwEZqWKWy2VmDsNaYr5YbG1uRinT2CIiIrqu29raJFit18vlcr1atdac2VprLWvtIsZVqrltbm5tbm6uVyunJRmwZ/P5zrFjEQEKSVJLr4bxaDUMLYlKYGfa2TInd7UUc9ddd/7Zn/xxur3ES7/M9TffcjQ56aZUmzJNglvedvsdY2s3PfghdbGZKK2pAQLZKRUbYxmQbGOQkIxkYewA0LAejo5W4zBlMrVcLw+H/QvDwaHaQJuO9nbxRDpxmvUwtdbGcVythtZaa9M0TVNrmS1bJprSzkzbzkzbCdhkZmYaADttsCVzWaYzU6JEMWRmZoIk2cY2SCCwhYydOHJ7cezb7rz7fW4er1/U1lzEv1ZCDYahfe0zjna2T2XmbLF546NerA3LaT2Mw0AmkiHJqtDp06dq7Wx3Xdf3fd/3ESGp1hpRFLZzGAbZbRzHYZimqZQCdF2pXZ3NZkVVkzY3Nto4HewfSICMm3NzPtve2Y5akKRI59TG9dhW49RSlGqmBtjpDMvTdHiwfNzf/v0THv/4m2++5SVe+qVnWzuHk5IQSslI9u7FS0976tNOnj513S03u3ZpILAkpe00Fk7xTAFpbGNkApALLmIap+XBYVuvwzlNrQ3j+uhoWC6n9brQDsaVsoW0HobVeu1EUpQytTw6Wk7TaNOmKTONM23nZLDTttM2xgAYbNu2bYwBcErYCNKJaUoAAxiDQWADWBYmhLFtN2Zldp+3Pu7xl37wZU4VkSbEi86AoeoT/2H3qdnfuLk4Ojh4xCu8xslrb8phndOUrclESBK4AhGl67rM7LpuHMfd3d3VapWZISFBprO1tl6va607OzunTp2azWbDMHCZiKPDVbaMiPV6HRGlFLCdLXNja2uxsaFSLYEyGcdpPU5TOhUJY7plC9vpwEqfu+fev/vrv87MR7/4S1x7y4PGVFJS4jKJaD5/77333HXnS7zUSx0/dSojQDgAG2wb2zaSAGyQQNgIYSwIrHSul8PhHuuxTC7TyPqgLQ8Zh2wjbtmmWV9LqcPh0d7ewTQ1cEQxDOOYLdPOTGcaMhNsMNi2bRuwARtsc5nTAAIbbCMBstNpkBSCtAEJwE6EQTiRjWykKfP45qkfPz/c9ITdL32xEzFlM0W8KNIgoo+vetLet92bN11zepymbrHxEq/75iFCtHF0awVJwjauNuM4zufziJimqbUWERsbG5JsT9PU2uQ2dl03m836vt/c3Nzc3FwsFq01ScA4Tuv1BNMwDK211lpzpt3Slo6fONH185RAaY9TW4/TepyasWiZrTkTsKBEDEfLv/vbv37CEx7/4Ic86GVe4ZXKbHE0kWAwhgx7dbB3z+3PGFbLBz/0wbONjSERwhKkbROKxCYTEAYbCxuDBRakneHGsOraehE5rxpbG3K9buuc1rRpamNma23CHB4eHR4up2lqrRkEE0gCMhMA2waDuMy2bduAbQDMAzgBANuZlgBsA2DAtm1JANhpSQZIpIIyDTlaJzZOf/3t94iLX/Lo4yWYmosQL5ChmVqE+PIn7n3+M1bXnzqjUtf7l17y9d/q2gc9PFeHIWWbnI0Qlm3TKvjg4CAibI9jKyUiIiK6WtO2sTOyKJCUmUdHR0dHRxEREYvFxnw2Pzg4PDzcn8/m4zRky2lqxombM7q6tbMTfZeJgnGc1uO4HqapZUPpzJTTGCQyJd995+1//md/Wrr6Ei/zMtfccMMqsSRjp7DTynZ48cLtT3va5sbi5MlTzS2trlRMOsGINBZW2DZKZ3MajBzI2A4iaKePHzt27en14UEXNTOPDld33L649WnT7bddWE3DOI1T2tlWR8uDg4NhHMdxyrRxa2mIEiAwCDudgogAMIBtY2wM4jIZC5AEkgxgG9uAbUDYEhhsI2Hbtm2FBGGMsW0u0+bimq+87b6nHJ3/ikcfe/B2pbklgEDiChsDUIJadfaofeqT9r7/nvHG06f7fnZ4sH/TY17q5d7sHaZh1eE2jc4mEDgtKe0qaWdne2Njo7UWMY3jOE1t1pdaatQynwNIUtDalJm2AUm1lr6fhaJNUymldlUiSqhly8TY3tzY2treQTG1xB7GcRzb2DzhhOZMCxDhbF2U9dHB3/3t395z7z0Pf8QjHvliLz4SEzISkhO5yHI7f/a+SxcvPPQRD5svFiaN7MSkEwlsnGBIBZAiBYCEnXaECvIwndzZevGHPYhhWVGg9XrcffjNtz3kht/4rfHvH/eE5bhO1VK6qe2vh/XUWmZmc0Jz2pmWLdsSEjYCtxQA5lmMARAgwABGcgDYtg3mfmkLbAAwSIoI7AQEAsBIMsh2Eic2rvnF8/f9yR+f/dAHbX3IzRsn5gVBAmAjCQgwR0N+1zOOvvrWw9uW7dTGPCKWh/vHr7nu1d/p/Ws/y2FQ0bga3KYihDJBNlkBKTLdWrbWjo6Ww7AuESVK7Urtat/38/m8n/W19hFM47RaradpUsRqOQzrYblabW1v9bMZ2OlQ2K1lqtTT11wz39hA0TxNY07pKZ0EYDKdRqGQQwJPtz/jtr/727/ZWMxf6mVf7tS1149EIpuwkW3LORwd3XHbM2rtHvmox3R9nxIKt8kGIYXBOAFk25IVYNt2Kh1ypLrQer06f/ddq2uObc+7kg5RZ9q+7tS1J7c3FnW5PPjLv/2Hoa0zWR4dTtOYrRkS2wgbbOzEBmGwLTUZ8ywSNmCDLGQAI2FLKTAA5jnJ5pkkY2ywAdsAksAggyXhidjevPZwffGzn3zwfXcuX+/U7HVO9Q9blFN9nOji0tgujPn0ZfudC8NvnB8ef9AWtRzv6tjy6GD/YS/+0q/2ju83P3FqHNadZHsch8wWIBsJCbtmend3d3t7J6J2XXfmzGmb1qac2npYAREBOB0l7DTMZrPZbC5pvVqtVitE1NqyyWSzJLDtUuuJUycVpaWbPbWcnJNpVop0GosIFFFouTpa/u3f/vWdd97+6Ec/9pGPfnT0izGNBGlZFqRb271w4c477jp2/OR1N9ykKDlNUoS6WotDCVO2bIRJALKlTVhOgAhkitzRbr/jtjsed/ZBp7eOP/TBQQoB2VrX6SVe/NFHR2+0XK3++u//4WD/aD0MwrZN2gYJbCQkIRWwLWRAYQy2DQIsMCCEJBuEMdi2FDybeSbbCEAStjGNlKSQAAMGbIMNlsCjQ7OTx0p393DwLbcvv/PO1U5RH/TBaIZkf/Iq2SzleN8ZN7uN00Me8xJv8/4fOc02D9ZDdD1kZpvG0dkEEiDbma6C5XIJERHz+fzkyZOl1HEcZSOaJ+Dw8HA9rLOlpMwmBRARbZpaaydPn+pns3G1LhElarZsLSNK3/ez2dwwTGPLzHRLp52QYAwGY5yZLS9euPiEJzy+77qXfpmXPnHq1JA24bTAbqBQyTbee/e9B4eHL/ZiL77YPh7drMtBiq52s/kcabla57rJDgQYZMsKy05BkWTL7d47b/u7v/jT9cH5l330wx507WlnSgUhKYTtxzzy4W/zFm9cgz/+879cr6dxahgjCduZKUuKkI2wJBkkDJJAEoBtIQQgAZIA7AQkJGxLALYAAUbIWGCDAQICgcC2QRIKpQUGA3bLpMVWzOYnukPaenIOaTckCTaqtqDZzQlq1KnrFieuHdcrShdRUinhqU3TgFMKI2faxq6llld5lVfZ2t6ZpqmWOp/P027jKGhumTlO03pYT60JIkq2JmitrdfrCxcuHOztz2fzvus8ZSgE4zg6s9SyWCxq3zk02WPaUia2eAABNCdMw9//zV/fdcedL/Zij33kYx6r2mWCHVjCxrbwuFree/fdpZabH/Kg+eai6/t5PyOz6/p+tmjpaRyW2exmwshJUcgeVsv18ghn33V9KQcXz/3FH/7uUx7/91uL2d/83d+XCLI5p2maMrNNbRjW89ls59ix13q1Vzl9+vRv/8EfPeMZdwzDaENIihoykrGNicAGCcC2JInLJNkGgUEAAiNxmUAAGJAEJhFCSCFIE0IAIcl2a2m3iJAqIAFAABJphBXdWE6otsh1yTWecIITNYejpLpUhRzWq7tuu+3CfWevedgxNTtTJTBYQk6btI3tzFpKeflXeoUTJ06O4xgRQqTBkEY2zc60QpIkZUucARcv7P7t3/ztHXfc3nczCKSIQkunMx2wsblZuz5xmjQtM01CGpsgkpaZnYpzuHju7j/7g98tipd8mZfdPnV6BJM1VEVLT0RXS1sv9y6cvfvu27ePbV97w/W1antjttFX5VhLjRLLMZ0NmuTmNEVItjKP9naf+Pi/r0WPeNjDqN0T/+4vn/g3f7lerR7y8EcsTlzzR3/1t+fueAbTehjWLbM1j+PkbJubWy/9Mi/98i/zMjfdeMtf/fVfP/FJTzp/7sLRajWM4zS2BCGFkGQh2SQoFBFOGxMBtgWyiRAonQhUlJYQTtmWJCATBYABGQROEJJTOCIwrdltMpRSkDIBVErLrBHNaVshq2bpxJZzAltgMkFyZsh2k3Vw6WB/9+L1IbIhObMNWVxwiZIB2XKaxjAVVEqttWIUEoSFQDbYQkpLYJzZ1EUtGlfDwf7BwcHBYr6IUsZpyiSd2VraLbO1NlssZrNZJi2d6TblBGlJEm1qaUsicxqODv7qT//k4vn7XvzFX/IRj3qUVbPRhWZ96Ussh6amrpRla3ffcfv+pYsv+bIve+zYTimxmPVb83lRc8v1mKvlehymFM0QgcFZpGzDxfvuuu/2p8+6es3O5jQOtz71SfPF/MVf+uUf/bKvcNMtNy/HdvHg8e3oklubxmlKJOG2t7d/8eLFW299xsu+7Mu/1Vu8aZS32Lu0d+vTb/3bv/+H++47u7e/v1ytMz05c8pxmlpLi0TYqTQGA2BDOtWEhC0RBCQJIgAkglCRJNmZBslpIEKBAwlLdKWMY5umhkdsqQgrQhjAWSRKAM60DZJKhDAph+xsUxtVSonSah1X60sXdz2NYYUyrGkYyOxqFOw2OSfalJkVrCQsEoFNI4HMJokodhqBATtRTpMvXDj/jNuefnR00NU+pFrKpLHl1FqzjNxaA4EyM5vTJJcJpy2hQroolNPdd93113/1133fv/KrvMq11153ODrEvK/bWxtqicfFrC+h5e503z339H3/oAc/pHZdV/vZfGO2mEdOy8PDw+X60tHycGyTaJbtQAVYr57++H/449/9jYtn764R99729GmaVsPwyMe8+Cu+1htsn7leEWdufPD2ySedOzqU5KCUIBPTdXF4uP+Xf/HnT3nKUx71qEe+5Eu91KMf9ejHPPoN3uhN3vDoaHnu3Pm9vb2Dw8P9w8PDg6P9/f2Dw8PVcrVaDcvVcrVatWlqmdM0TW2axmkYh2lsdhpJBqVtk06njTPdWjNWRMuUUyhJCxnSEZJUivqu62tM0zi1zDQeA3CQrUQxqBQbSZQCGLAlARWlJhSVHhlb6WlYTcujyBbNJUqnGnhyqk3DsLRbCXUFRVSbo6OD+byfphYRAkARtiQpLJRYNqEQSg/jeM8995w7d66UUkqJiGyj7LQTj84ps4lxmto0RRTZGGyDM51YiJCcU7bl8slPfPxdd9/xki/1Eo96zKP7frbOoS9lYzHf7Ge0VqNLlWG1vHT+wvlz50+cOHH69BkUtZuVrp/MuFrvHx5dOlwth2lCSY2q1pqnVsztT3vKX/3x71+8+/Yc15N0OK6b49qbHvTYl375rTPXrV0i2Txxqt/YWU85KwUlxna2Jtx1dZqms/fdc9fdd/z5X/zZzTfdfMstt9x4402nzpzZ3to6eWLnQbfcXLvOtiRB2k631jLT9jS1YRgycxyG9bAe1sPUmu3W2jRNwzgeLVdHq+V6vR6HYbVer1ercZym1g6Ojg4PDlfr1TAM2bJlm8aRbLYFpUQGo4KcRo9uBlomhCJsSu1MGEkhIWHbJiShIAUmQ6ESAzku1we7F7xezro+LY2ro/1L7fCwkiXYOba9s721tdjYmC/qNI2/9Is/t7W1DSqlSCoKRZFqKbWUkIQoEVGilAhFy3bvvfcOw7C1uTVN2aZm207LTZ6yTaSitGmahrErFSNLslBRpNycCaES+I477vy7v/qrWsvrv/7rX3/99cvRXbR532/0XXHO+q7v4uBwebR/6bZbb7144cJLvNRLLhYbmR7atH94pGxH+3vLo+XhMI0UJGPsoijBxXvuftzf/vV9t9/GuJ7XSMvmxImTj32Jl7rpwQ+Z0JgZYqufn7nuhrue/mQPy4iS0yiIiGlYp6dSou/7XOXFCxcvnLvwd3/7t13fz+fzxWKxvb21s3N8NpvPZrNjx3aOHTu2ubm1ubkxm883NzY3NzYWi/nx7Y3Nzc3FfF5qiShdV7vaKQQCWuYwja21dE7TNKyHaZqm1tar9Wo9rNarYT2s1qthtV6tV8MwtNaG9TBN4zCu16v10fLo6HA5jGNruV6vh2laD8M4tLRa5jRNLTNbttYys7Vm7JattQjZSOpKXRSmaZzXYL2qzmHMMBtyv7Wxueh3jm2fPHV8PusXfT+vXR3H8Yd/+EdqBCIUICct3dIRJQIbSEFEzOfzrut2jh178EMecsstDyq1tpywp7EZLBlTymI229zaPn7seF/7QC0znEWy04SwkIyyqU1P/Lu/vfv2217+FV/mpV/2pWtX22pZUSdmRX0tfdfH1GjjuFrdffddzb7pllu62Wxs7eBoOUyJc71ctjY1gghIMmmtRET6yY9//NOe9OSQFpvbw7gGzTZ3HvGYl3j0i72kur7ZkiQy88EPecjdT3vinc94eh8FpnTaWMWgcBSHqnO0AY3rcVgNe5f2777rbmciOTNtMBBRSimldvNZt7GxubO9fWxnZ3Nraz6fz+fzjY2Nrc3N+WK+mC/mG4va1VrrbDZbzOez+Xw2m/Vd33Xdxs5W7fuu7+b9vOu7vuu7rpZSSikRYRKUrQ3jMAzD1JxTW63Xq2F9cHi0Xq6HcRyGYT2M4zQOw7BeD22aluv1OAxtnFbrlSTSy9Vq1vezvpvGkVmvaT3v++PbG5uzjWObmxvzWYhSiCI7C9mGdbV9uH8QIEUpxSbTLTOdksB22imAkJjN5rPZfLHY6LvZ1Jw2GKEoXa3zza1rNjdPnDh54sTJne1js8VmZpZpWk/jmJltalBUmzCitTtvv/2Jj/v749tbr/Fqr7qxmO8fHY3DOO/m866blTLvO0VMrTmnvUu7uxcvnDx16tQ116rUbG7TNCHsyY6oEJLCAkeIabz7tjtue/rTtnd2brnhkX1fnnbr05bD+KCHPvJRL/1ys+2doaUFoRLRpnG+2Dh28tTZe+4JN1tkOps1ZU60JtFyJQKwucxCEYIEqFUAWEKAMjlaDkfL9dmz5yRJUkhIUikCSil939daulq6rpvN51tbW1tbW4v5vOv7xWIxm83ni8X21tZ8Y76YLRaLea1d33Ubi0U36xeLRd/3Xa39bFa7PqIsFrOtrY1TJ0+VCIXsTGdEUQgkxTRNmc3NLZtMtjZlk33+/IXb77hjd39/a+f4zQ968NbWdiTjesAZgQrdrOu66ql5mP4R3zDUKePpxWMAAAAASUVORK5CYII=","type":"image/png","originalSize":249421}}}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"e606b5b1-bb17-4e5b-ae52-a7e1dc40e5c6","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePd3qvZJmNAAWqah6CWq","type":"message","role":"assistant","content":[{"type":"thinking","thinking":"","signature":"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"}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":1751,"cache_read_input_tokens":117241,"cache_creation":{"ephemeral_5m_input_tokens":1751,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"b8fb86b5-e4cb-405d-be1e-a2ba16d35670"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePd3qvZJmNAAWqah6CWq","type":"message","role":"assistant","content":[{"type":"text","text":"La carte, l'analyse de marché et le mobile sont tous conformes (ordre visuel : titre → prix → badge → galerie, scroll initial à 0, aucun réordonnancement CSS). Je committe et pousse."}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":1751,"cache_read_input_tokens":117241,"cache_creation":{"ephemeral_5m_input_tokens":1751,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"8af30592-cc19-4adc-8c72-0c3330191297"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePd3qvZJmNAAWqah6CWq","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01VAWdFNH2VX1xDvQNdMBmji","name":"TodoWrite","input":{"todos":[{"content":"Créer autoka/vindecode.py (décodage VIN NHTSA + cache DB)","status":"completed","activeForm":"Création du module vindecode.py"},{"content":"Enrichir l'endpoint détail : marché, KA Score, VIN, autres offres","status":"completed","activeForm":"Enrichissement de l'endpoint détail"},{"content":"Frontend : lightbox galerie + badge marché","status":"completed","activeForm":"Ajout lightbox et badge marché"},{"content":"Frontend : refonte Vehicle.tsx (analyse marché, autres offres, rappels, fiche VIN, KA Score, carte, sparkline prix)","status":"completed","activeForm":"Refonte de Vehicle.tsx"},{"content":"CSS des nouvelles sections","status":"completed","activeForm":"Ajout du CSS"},{"content":"Build frontend + tests locaux","status":"completed","activeForm":"Build et tests"},{"content":"pm2 restart + healthcheck + commit + push","status":"in_progress","activeForm":"Déploiement et push"}]},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":1751,"cache_read_input_tokens":117241,"cache_creation":{"ephemeral_5m_input_tokens":1751,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"7ef82e2c-94a1-4f72-913e-9f8749415c0e"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01VAWdFNH2VX1xDvQNdMBmji","type":"tool_result","content":"Todos have been modified successfully. Ensure that you continue to use the todo list to track your progress. Please proceed with the current tasks if applicable"}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"9d485589-591e-4f95-85fd-b6942de10588","timestamp":"2026-08-25T14:27:05.659Z","tool_use_result":{"oldTodos":[{"content":"Créer autoka/vindecode.py (décodage VIN NHTSA + cache DB)","status":"completed","activeForm":"Création du module vindecode.py"},{"content":"Enrichir l'endpoint détail : marché, KA Score, VIN, autres offres","status":"completed","activeForm":"Enrichissement de l'endpoint détail"},{"content":"Frontend : lightbox galerie + badge marché","status":"completed","activeForm":"Ajout lightbox et badge marché"},{"content":"Frontend : refonte Vehicle.tsx (analyse marché, autres offres, rappels, fiche VIN, KA Score, carte, sparkline prix)","status":"completed","activeForm":"Refonte de Vehicle.tsx"},{"content":"CSS des nouvelles sections","status":"completed","activeForm":"Ajout du CSS"},{"content":"Build frontend + tests locaux","status":"in_progress","activeForm":"Build et tests"},{"content":"pm2 restart + healthcheck + commit + push","status":"pending","activeForm":"Déploiement et push"}],"newTodos":[{"content":"Créer autoka/vindecode.py (décodage VIN NHTSA + cache DB)","status":"completed","activeForm":"Création du module vindecode.py"},{"content":"Enrichir l'endpoint détail : marché, KA Score, VIN, autres offres","status":"completed","activeForm":"Enrichissement de l'endpoint détail"},{"content":"Frontend : lightbox galerie + badge marché","status":"completed","activeForm":"Ajout lightbox et badge marché"},{"content":"Frontend : refonte Vehicle.tsx (analyse marché, autres offres, rappels, fiche VIN, KA Score, carte, sparkline prix)","status":"completed","activeForm":"Refonte de Vehicle.tsx"},{"content":"CSS des nouvelles sections","status":"completed","activeForm":"Ajout du CSS"},{"content":"Build frontend + tests locaux","status":"completed","activeForm":"Build et tests"},{"content":"pm2 restart + healthcheck + commit + push","status":"in_progress","activeForm":"Déploiement et push"}],"verificationNudgeNeeded":false}}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePd3qvZJmNAAWqah6CWq","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01BubQfEQbnsmcNc6dHP7dQc","name":"Bash","input":{"command":"cd ~/auto-ka && git status --short && git log --oneline -3","description":"Show working tree status"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":1751,"cache_read_input_tokens":117241,"cache_creation":{"ephemeral_5m_input_tokens":1751,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"4ab62e1a-6900-47ed-a9a3-358b1133ba83"}} {"type":"permission_auto","tool":"Bash","key":"tout autoriser","input":{"command":"cd ~/auto-ka && git status --short && git log --oneline -3","description":"Show working tree status"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01BubQfEQbnsmcNc6dHP7dQc","type":"tool_result","content":" M autoka/web.py\n M frontend/package-lock.json\n M frontend/package.json\n M frontend/src/api.ts\n M frontend/src/pages/Vehicle.tsx\n M frontend/src/styles.css\n?? autoka/vindecode.py\n?? frontend/scripts/\n?? frontend/src/components/Lightbox.tsx\n31464bd footer: ajout Ka·Stats (www.ka-stats.com) à l'écosystème\n98ef53c docs: README v3 — chiffres live vérifiés, pastilles dynamiques, sections complètes\n6fda049 docs: README v2 — galerie multi-pages, style du site, documentation, contact","is_error":false}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"13836fe3-aeee-4338-aaca-5f4f4abb3ef7","timestamp":"2026-08-25T14:27:05.874Z","tool_use_result":{"stdout":" M autoka/web.py\n M frontend/package-lock.json\n M frontend/package.json\n M frontend/src/api.ts\n M frontend/src/pages/Vehicle.tsx\n M frontend/src/styles.css\n?? autoka/vindecode.py\n?? frontend/scripts/\n?? frontend/src/components/Lightbox.tsx\n31464bd footer: ajout Ka·Stats (www.ka-stats.com) à l'écosystème\n98ef53c docs: README v3 — chiffres live vérifiés, pastilles dynamiques, sections complètes\n6fda049 docs: README v2 — galerie multi-pages, style du site, documentation, contact","stderr":"","interrupted":false,"isImage":false,"noOutputExpected":false}}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"b3474ab0-13c3-4135-8bc5-71235b54ae95","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePd5L6FDowQCpvcxy41j","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01ErTYbgNJbZ9KQLp6hfU2G9","name":"Bash","input":{"command":"cd ~/auto-ka && git add autoka/vindecode.py autoka/web.py frontend/package.json frontend/package-lock.json frontend/src/api.ts frontend/src/pages/Vehicle.tsx frontend/src/styles.css frontend/src/components/Lightbox.tsx frontend/scripts/check-vehicle.mjs && git commit -m \"$(cat <<'EOF'\nfeat: fiche véhicule v2 — analyse marché, KA Score, fiche VIN (NHTSA), lightbox\n\nEnrichissement des données servies pour chaque annonce, toutes sources\nconfondues, plutôt que connecteur par connecteur :\n- vindecode.py : fiche constructeur décodée du NIV via l'API vPIC (NHTSA),\n gratuite, cache SQLite, libellés/valeurs traduits en français\n- endpoint détail : analyse du marché (médiane, quartiles, percentile,\n badge de prix, nuage de comparables), KA Score composite (prix, km/âge,\n qualité de fiche, fraîcheur), historique de prix élargi à 30 points\n\nPage détail refondue (Vehicle.tsx) :\n- badge « Bon prix / Prix du marché / … » sous le prix, avec écart à la médiane\n- lightbox plein écran (clavier, gestes tactiles, compteur, préchargement)\n- analyse du marché : barre de positionnement + nuage prix/km SVG\n- « Le même véhicule ailleurs » : autres offres du même NIV (dédup) avec écarts\n- fiche constructeur (22 champs usine), rappels Transports Canada repliables\n (endpoint existant enfin affiché), courbe d'historique de prix, carte OSM\n- vérifié Playwright (frontend/scripts/check-vehicle.mjs) : desktop + mobile,\n ordre DOM = ordre visuel, aucun order: CSS, zéro erreur JS\n\nCo-Authored-By: Claude Opus 4.7 \nEOF\n)\" && git push origin main && git status --short","description":"Commit and push to spbgit origin main"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":1550,"cache_read_input_tokens":118992,"cache_creation":{"ephemeral_5m_input_tokens":1550,"ephemeral_1h_input_tokens":0},"output_tokens":20,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"ce9e073c-f174-492a-acea-0e2c1e56eb32"}} {"type":"permission_auto","tool":"Bash","key":"tout autoriser","input":{"command":"cd ~/auto-ka && git add autoka/vindecode.py autoka/web.py frontend/package.json frontend/package-lock.json frontend/src/api.ts frontend/src/pages/Vehicle.tsx frontend/src/styles.css frontend/src/components/Lightbox.tsx frontend/scripts/check-vehicle.mjs && git commit -m \"$(cat <<'EOF'\nfeat: fiche véhicule v2 — analyse marché, KA Score, fiche VIN (NHTSA), lightbox\n\nEnrichissement des données servies pour chaque annonce, toutes sources\nconfondues, plutôt que connecteur par connecteur :\n- vindecode.py : fiche constructeur décodée du NIV via l'API vPIC (NHTSA),\n gratuite, cache SQLite, libellés/valeurs traduits en français\n- endpoint détail : analyse du marché (médiane, quartiles, percentile,\n badge de prix, nuage de comparables), KA Score composite (prix, km/âge,\n qualité de fiche, fraîcheur), historique de prix élargi à 30 points\n\nPage détail refondue (Vehicle.tsx) :\n- badge « Bon prix / Prix du marché / … » sous le prix, avec écart à la médiane\n- lightbox plein écran (clavier, gestes tactiles, compteur, préchargement)\n- analyse du marché : barre de positionnement + nuage prix/km SVG\n- « Le même véhicule ailleurs » : autres offres du même NIV (dédup) avec écarts\n- fiche constructeur (22 champs usine), rappels Transports Canada repliables\n (endpoint existant enfin affiché), courbe d'historique de prix, carte OSM\n- vérifié Playwright (frontend/scripts/check-vehicle.mjs) : desktop + mobile,\n ordre DOM = ordre visuel, aucun order: CSS, zéro erreur JS\n\nCo-Authored-By: Claude Opus 4.7 \nEOF\n)\" && git push origin main && git status --short","description":"Commit and push to spbgit origin main"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01ErTYbgNJbZ9KQLp6hfU2G9","type":"tool_result","content":"[main fb1f6d6] feat: fiche véhicule v2 — analyse marché, KA Score, fiche VIN (NHTSA), lightbox\n 9 files changed, 876 insertions(+), 9 deletions(-)\n create mode 100644 autoka/vindecode.py\n create mode 100644 frontend/scripts/check-vehicle.mjs\n create mode 100644 frontend/src/components/Lightbox.tsx\nTo gitsrv:srv/git/auto-ka.git\n 31464bd..fb1f6d6 main -> main","is_error":false}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"914a5009-2bc5-4fbf-b986-e232c4b8ba80","timestamp":"2026-08-25T14:27:30.037Z","tool_use_result":{"stdout":"[main fb1f6d6] feat: fiche véhicule v2 — analyse marché, KA Score, fiche VIN (NHTSA), lightbox\n 9 files changed, 876 insertions(+), 9 deletions(-)\n create mode 100644 autoka/vindecode.py\n create mode 100644 frontend/scripts/check-vehicle.mjs\n create mode 100644 frontend/src/components/Lightbox.tsx\nTo gitsrv:srv/git/auto-ka.git\n 31464bd..fb1f6d6 main -> main","stderr":"","interrupted":false,"isImage":false,"noOutputExpected":false}}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"0569e012-e978-41b5-b5df-690c2970cf1b","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePd774UcXjcGawLWg94Z","type":"message","role":"assistant","content":[{"type":"thinking","thinking":"","signature":"CAISgQQKpwEIERgCKkDDI0EDjp2Vw8oeTPS+3FeISsNQVnoKZMTx/3aem4Q7UqpSVLIDSxPRW/Nf31/8SAoAMU41SoXcyS0t7XAkp7QwMg5jbGF1ZGUtZmFibGUtNTgBQgh0aGlua2luZ1okNmZjYzhmODMtMWY5Yy00ZDMzLWJhMDctNGQ0ZGYzN2Q2N2Y1chAqK78ZzsiVUzI5xDv77u/SiAEBqAHYzLbUBrABAhIMqkkaww0/q+wNqvd8Ggzbcu5HAm4DnlFP5q0iMCS+Ldv2Ay/wYECppHM53JQr2qmFEcJ/0HRdhJFWul07pA7rh0OuSnn9npoW+hmnHyqGAg33O/5uQSuZ3biKd/7WtgAljUZ9K/T1IGAEGWJ0jLui44DDkU/9lSwrdQPKMWO+0i8w3oBkk6zmfbY1Chw2FKgalo9iP+MKBv/gWZ7Tv0Up9YomIbedO7CQAtCqwvge/DK59aHHBMh1bFQrLCeM6Z/17pPA9XHgeGbcouCKC62qQL8rsRxAZzXDlSBtPMb4TRQvU0u+uAaor142+9tRpciGL5nmwKURuAin0yBSM/8KLOwW6aLQV1kDasP/qLKPwMnvGHig9clFp1N16WZfETIdYGXvUmBkpYy0wl35hSaiEOt2sQDxbJHGR+PMzjHXk0HMOIzGuRe3y7LIdPFYxBzmfkg4IVkYAQ=="}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":988,"cache_read_input_tokens":120542,"cache_creation":{"ephemeral_5m_input_tokens":988,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"63b1ff71-5b5b-4aca-a0ec-bd4d3b9008c4"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePd774UcXjcGawLWg94Z","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01Gep9MFiYqLa82rPNAbE7R4","name":"Bash","input":{"command":"curl -s -o /dev/null -w \"www.auto-ka.com → %{http_code}\\n\" -m 15 https://www.auto-ka.com/api/stats","description":"Verify public site health via ngrok"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":988,"cache_read_input_tokens":120542,"cache_creation":{"ephemeral_5m_input_tokens":988,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"a303eb5f-5eab-41b4-91cb-c6efbeff78f0"}} {"type":"permission_auto","tool":"Bash","key":"tout autoriser","input":{"command":"curl -s -o /dev/null -w \"www.auto-ka.com → %{http_code}\\n\" -m 15 https://www.auto-ka.com/api/stats","description":"Verify public site health via ngrok"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01Gep9MFiYqLa82rPNAbE7R4","type":"tool_result","content":"www.auto-ka.com → 200","is_error":false}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"1e578707-c9a4-4202-9c0b-7bed863650c9","timestamp":"2026-08-25T14:27:37.679Z","tool_use_result":{"stdout":"www.auto-ka.com → 200","stderr":"","interrupted":false,"isImage":false,"noOutputExpected":false}}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"cc8fd6b6-22c3-498c-bedd-6c811647ac0e","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePd7gNh4qmjTmjzNCTbW","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01WvB5pZMP7iidNcQnMTEB5t","name":"TodoWrite","input":{"todos":[{"content":"Créer autoka/vindecode.py (décodage VIN NHTSA + cache DB)","status":"completed","activeForm":"Création du module vindecode.py"},{"content":"Enrichir l'endpoint détail : marché, KA Score, VIN, autres offres","status":"completed","activeForm":"Enrichissement de l'endpoint détail"},{"content":"Frontend : lightbox galerie + badge marché","status":"completed","activeForm":"Ajout lightbox et badge marché"},{"content":"Frontend : refonte Vehicle.tsx (analyse marché, autres offres, rappels, fiche VIN, KA Score, carte, sparkline prix)","status":"completed","activeForm":"Refonte de Vehicle.tsx"},{"content":"CSS des nouvelles sections","status":"completed","activeForm":"Ajout du CSS"},{"content":"Build frontend + tests locaux","status":"completed","activeForm":"Build et tests"},{"content":"pm2 restart + healthcheck + commit + push","status":"completed","activeForm":"Déploiement et push"}]},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":237,"cache_read_input_tokens":121530,"cache_creation":{"ephemeral_5m_input_tokens":237,"ephemeral_1h_input_tokens":0},"output_tokens":24,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"3fdae26a-91e4-42a7-983e-61873961b2aa"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01WvB5pZMP7iidNcQnMTEB5t","type":"tool_result","content":"Todos have been modified successfully. Ensure that you continue to use the todo list to track your progress. Please proceed with the current tasks if applicable"}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"b5e15038-e0d8-42f5-aefa-204350afc50e","timestamp":"2026-08-25T14:27:49.637Z","tool_use_result":{"oldTodos":[{"content":"Créer autoka/vindecode.py (décodage VIN NHTSA + cache DB)","status":"completed","activeForm":"Création du module vindecode.py"},{"content":"Enrichir l'endpoint détail : marché, KA Score, VIN, autres offres","status":"completed","activeForm":"Enrichissement de l'endpoint détail"},{"content":"Frontend : lightbox galerie + badge marché","status":"completed","activeForm":"Ajout lightbox et badge marché"},{"content":"Frontend : refonte Vehicle.tsx (analyse marché, autres offres, rappels, fiche VIN, KA Score, carte, sparkline prix)","status":"completed","activeForm":"Refonte de Vehicle.tsx"},{"content":"CSS des nouvelles sections","status":"completed","activeForm":"Ajout du CSS"},{"content":"Build frontend + tests locaux","status":"completed","activeForm":"Build et tests"},{"content":"pm2 restart + healthcheck + commit + push","status":"in_progress","activeForm":"Déploiement et push"}],"newTodos":[{"content":"Créer autoka/vindecode.py (décodage VIN NHTSA + cache DB)","status":"completed","activeForm":"Création du module vindecode.py"},{"content":"Enrichir l'endpoint détail : marché, KA Score, VIN, autres offres","status":"completed","activeForm":"Enrichissement de l'endpoint détail"},{"content":"Frontend : lightbox galerie + badge marché","status":"completed","activeForm":"Ajout lightbox et badge marché"},{"content":"Frontend : refonte Vehicle.tsx (analyse marché, autres offres, rappels, fiche VIN, KA Score, carte, sparkline prix)","status":"completed","activeForm":"Refonte de Vehicle.tsx"},{"content":"CSS des nouvelles sections","status":"completed","activeForm":"Ajout du CSS"},{"content":"Build frontend + tests locaux","status":"completed","activeForm":"Build et tests"},{"content":"pm2 restart + healthcheck + commit + push","status":"completed","activeForm":"Déploiement et push"}],"verificationNudgeNeeded":false}}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"879600e2-7989-492c-989b-9de13ab1a302","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePd8ZoayhLDWt5xwxcqM","type":"message","role":"assistant","content":[{"type":"thinking","thinking":"","signature":"CAIS5wcKpwEIERgCKkD6wbxZzQGYSNqTN26adISBGQdlttIKmBmObH3ttCFgXTx/Zeaj6BdNZrvQuRtOt7bxX0gbzYo66AVDmOWfGD89Mg5jbGF1ZGUtZmFibGUtNTgBQgh0aGlua2luZ1okNmZjYzhmODMtMWY5Yy00ZDMzLWJhMDctNGQ0ZGYzN2Q2N2Y1chAqK78ZzsiVUzI5xDv77u/SiAEBqAHtzLbUBrABAhIMZg2UHnAiTNIK+SxKGgxYVk6ypfQVu6bJ+sgiMBEiGBHm83KtUlKXZgQuIuEZNg5BrNF9gm5K71NgKuJ56hHv10c2pSp+u8ZzJacrGirsBY2Vc7eOfH+o/aFyVXVl9cewdL2h8buUQZr/vhuTuAxb0TG+QpKqEM/91nMRXRbdx8OGdx9lPpmS8LolWhtSQAGS1DlldjCA19eh3laWLW+nmMyXjREwvnCrtEdopU6dbOMXSp44ZZNrvnRVujdNH2m1gmUbWa6spjBQat1IcAfKh/vSkmEihTWp0xppiP0fHB8WzIdUbGmIxSTNmOvgiHGtcE+P7SoYV/yFRSquz11d+MYYVxNtDdiD6JmXQoqxXX0Dn8exx54Ah7XqLmI/8vcZBKBcPts6GAZEhlJca3DHnJvBckTbikWURrbjRG+A+7HQKx92kRLbRjqyH4j/HkIfsjjzBGOrGvOvYjPy4UIALRpCVGeebijtv4swXMXN98XPssSv0KGtPZtvHG/DP7lwyyVNwKKwZFdx6BR9kw/YEkvCQ5BKpFlIJQ2pVCqNC8QLCtxd2hFzpUvpEe2Zc/CK+YvxD/k7ktPY/sQs4PWBPHx/RYhqoU3vTz9LpBQX3TQk9WuXC4yI0hI+f+j0jzUfN3nLIF3ZW/2NeztVJ8e7BXl+P98vMDrhYyva1mrculZx3IiLKB9c0P4HSmv9aHWij5SmSMnwTLsXLoxXA1CUnr419qlRRVR/zogAbwhQ73PdaF4S51dM1T5oY5bL9IweFZys9HrIbbi9wGa3IUoUboB8iAd1EsL6ZmGsbFt4Yzr6nGzY6Zt0WmItCbKwUzdUaX9bPNJ/HalcGRukYDiTtBR3wLbRX9UXbQ/i9+ZN3Q2Gx8vmhJKpzT3cTT2br08qzO8ncmhsL9RLMCGBx6CkUjGnWT0/MSWl2CaB1qliSEzS5XVbTh7qeuQ7opAplgMXMfgEocNjZ1MD9D/7hztpPKq0CXI55tTmo5xmkSwON3/Q4BegrlNkc3qRO/MxOQcfk2cl+HN6ZGgnFLxfZ3wfb6C/T6iw55Z55i5TML00l2O4Jmk4VPRQfKLONHXmpmtOMUh7BlXSXFWP5uEYAQ=="}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":559,"cache_read_input_tokens":121767,"cache_creation":{"ephemeral_5m_input_tokens":559,"ephemeral_1h_input_tokens":0},"output_tokens":7,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"65db21a3-289f-4a5f-8ffe-169f11e5ec18"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePd8ZoayhLDWt5xwxcqM","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_015z4zBDCHoXbjFLt4ta4zKM","name":"Write","input":{"file_path":"/Users/simon-pierreboucher/.claude/projects/-Users-simon-pierreboucher-auto-ka/memory/reference_autoka_ops.md","content":"---\nname: Auto-Ka ops (port, PM2, vérification UI)\ndescription: Port local 8095, apps PM2 auto-ka-web/sync/ngrok, script Playwright de vérification de la fiche véhicule\ntype: reference\n---\n\n- L'app web tourne sur **localhost:8095** (PM2 `auto-ka-web` → `.venv/bin/python run.py serve 8095`), pas 8080. Healthcheck : `curl localhost:8095/api/stats`. Public : https://www.auto-ka.com (ngrok `auto-ka-ngrok`).\n- Autres process PM2 sur ce nœud (M4M64b) : `auto-ka-sync` (ingestion en boucle), `food-ka-*`, `hfchart-*`.\n- Vérification UI de la fiche véhicule : `cd frontend && node scripts/check-vehicle.mjs [uid]` (Playwright + Chromium installés en devDependency depuis 2026-08-25) — teste badge marché, lightbox, carte, KA Score, erreurs JS.\n- UID de test pratique avec données riches (VIN, doublon multi-source, GPS, rappels) : `denisauto:5168959`.\n"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":559,"cache_read_input_tokens":121767,"cache_creation":{"ephemeral_5m_input_tokens":559,"ephemeral_1h_input_tokens":0},"output_tokens":7,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"78b5936f-63e9-4629-a55f-79bd92f31e09"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_015z4zBDCHoXbjFLt4ta4zKM","type":"tool_result","content":"File created successfully at: /Users/simon-pierreboucher/.claude/projects/-Users-simon-pierreboucher-auto-ka/memory/reference_autoka_ops.md"}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"6b7685d2-f79f-4f3b-ba0b-bb3c7c59f2a1","timestamp":"2026-08-25T14:28:04.292Z","tool_use_result":{"type":"create","filePath":"/Users/simon-pierreboucher/.claude/projects/-Users-simon-pierreboucher-auto-ka/memory/reference_autoka_ops.md","content":"---\nname: Auto-Ka ops (port, PM2, vérification UI)\ndescription: Port local 8095, apps PM2 auto-ka-web/sync/ngrok, script Playwright de vérification de la fiche véhicule\ntype: reference\noriginSessionId: 062778d5-666f-4cbe-9bae-078598e2dfe7\n---\n- L'app web tourne sur **localhost:8095** (PM2 `auto-ka-web` → `.venv/bin/python run.py serve 8095`), pas 8080. Healthcheck : `curl localhost:8095/api/stats`. Public : https://www.auto-ka.com (ngrok `auto-ka-ngrok`).\n- Autres process PM2 sur ce nœud (M4M64b) : `auto-ka-sync` (ingestion en boucle), `food-ka-*`, `hfchart-*`.\n- Vérification UI de la fiche véhicule : `cd frontend && node scripts/check-vehicle.mjs [uid]` (Playwright + Chromium installés en devDependency depuis 2026-08-25) — teste badge marché, lightbox, carte, KA Score, erreurs JS.\n- UID de test pratique avec données riches (VIN, doublon multi-source, GPS, rappels) : `denisauto:5168959`.\n","structuredPatch":[],"originalFile":null,"userModified":false}}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePd8ZoayhLDWt5xwxcqM","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_018a354tVrbRdWiRhoN939o2","name":"Write","input":{"file_path":"/Users/simon-pierreboucher/.claude/projects/-Users-simon-pierreboucher-auto-ka/memory/MEMORY.md","content":"# MEMORY.md — index\n\n- [Auto-Ka ops (port, PM2, vérification UI)](reference_autoka_ops.md) — port 8095, PM2, script Playwright check-vehicle.mjs, uid de test\n"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":559,"cache_read_input_tokens":121767,"cache_creation":{"ephemeral_5m_input_tokens":559,"ephemeral_1h_input_tokens":0},"output_tokens":7,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"b60cd63c-ddbf-4cb3-9b68-38ac28d459b8"}} {"type":"claude","event":{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_018a354tVrbRdWiRhoN939o2","type":"tool_result","content":"File created successfully at: /Users/simon-pierreboucher/.claude/projects/-Users-simon-pierreboucher-auto-ka/memory/MEMORY.md"}]},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"44d644ca-f367-4643-bab3-f040bdae35b7","timestamp":"2026-08-25T14:28:05.755Z","tool_use_result":{"type":"create","filePath":"/Users/simon-pierreboucher/.claude/projects/-Users-simon-pierreboucher-auto-ka/memory/MEMORY.md","content":"# MEMORY.md — index\n\n- [Auto-Ka ops (port, PM2, vérification UI)](reference_autoka_ops.md) — port 8095, PM2, script Playwright check-vehicle.mjs, uid de test\n","structuredPatch":[],"originalFile":null,"userModified":false}}} {"type":"claude","event":{"type":"system","subtype":"status","status":"requesting","uuid":"e63d3c7c-e760-4e94-b0e6-440e55c7e4ec","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7"}} {"type":"claude","event":{"type":"assistant","message":{"model":"claude-fable-5","id":"msg_011CePd9kx5jzGyA2EZee3hp","type":"message","role":"assistant","content":[{"type":"text","text":"Major upgrade livré, déployé et poussé (`fb1f6d6` sur spbgit).\n\n**Enrichissement des données (toutes les 137 sources d'un coup, plutôt que connecteur par connecteur)**\n- `autoka/vindecode.py` : fiche constructeur décodée du NIV via l'API vPIC (NHTSA, gratuite) — cylindrée, puissance, électrification, pays d'assemblage, sécurité… ~22 champs traduits en français, cache SQLite. 82 % des annonces ont un VIN 17 caractères → couverture massive.\n- Endpoint détail enrichi : **analyse de marché** (78 comparables pour l'exemple testé, médiane, quartiles, percentile, badge de prix), **KA Score** composite (prix vs marché 40 %, km vs âge 25 %, qualité de fiche 20 %, fraîcheur 15 %), historique de prix élargi.\n\n**Fiche véhicule refondue** (vérifiée live au navigateur, desktop + mobile, zéro erreur JS)\n- Badge « Bon prix · 5,6 % sous la médiane » sous le prix\n- Lightbox plein écran : flèches, clavier, gestes tactiles, compteur « 2 / 23 », préchargement\n- Analyse du marché : barre de positionnement + nuage prix/km SVG avec le véhicule mis en évidence\n- « Le même véhicule ailleurs » : les 9 581 doublons VIN inter-sources enfin exploités, avec écart de prix\n- Rappels Transports Canada (l'endpoint existait mais n'était jamais affiché), fiche constructeur, courbe d'historique de prix, carte OSM du vendeur (96 % des annonces ont un GPS)\n\nBuild OK, `pm2 restart auto-ka-web`, healthcheck local 200 et www.auto-ka.com 200. Un script Playwright de vérification (`frontend/scripts/check-vehicle.mjs`) reste dans le repo pour les prochaines sessions."}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":1171,"cache_read_input_tokens":122326,"cache_creation":{"ephemeral_5m_input_tokens":1171,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"global"},"context_management":null},"parent_tool_use_id":null,"session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","uuid":"f1656c49-1fcb-4c02-9ae5-ea3c54614d8c"}} {"type":"claude","event":{"type":"result","subtype":"success","is_error":false,"api_error_status":null,"duration_ms":758644,"duration_api_ms":774204,"num_turns":51,"result":"Major upgrade livré, déployé et poussé (`fb1f6d6` sur spbgit).\n\n**Enrichissement des données (toutes les 137 sources d'un coup, plutôt que connecteur par connecteur)**\n- `autoka/vindecode.py` : fiche constructeur décodée du NIV via l'API vPIC (NHTSA, gratuite) — cylindrée, puissance, électrification, pays d'assemblage, sécurité… ~22 champs traduits en français, cache SQLite. 82 % des annonces ont un VIN 17 caractères → couverture massive.\n- Endpoint détail enrichi : **analyse de marché** (78 comparables pour l'exemple testé, médiane, quartiles, percentile, badge de prix), **KA Score** composite (prix vs marché 40 %, km vs âge 25 %, qualité de fiche 20 %, fraîcheur 15 %), historique de prix élargi.\n\n**Fiche véhicule refondue** (vérifiée live au navigateur, desktop + mobile, zéro erreur JS)\n- Badge « Bon prix · 5,6 % sous la médiane » sous le prix\n- Lightbox plein écran : flèches, clavier, gestes tactiles, compteur « 2 / 23 », préchargement\n- Analyse du marché : barre de positionnement + nuage prix/km SVG avec le véhicule mis en évidence\n- « Le même véhicule ailleurs » : les 9 581 doublons VIN inter-sources enfin exploités, avec écart de prix\n- Rappels Transports Canada (l'endpoint existait mais n'était jamais affiché), fiche constructeur, courbe d'historique de prix, carte OSM du vendeur (96 % des annonces ont un GPS)\n\nBuild OK, `pm2 restart auto-ka-web`, healthcheck local 200 et www.auto-ka.com 200. Un script Playwright de vérification (`frontend/scripts/check-vehicle.mjs`) reste dans le repo pour les prochaines sessions.","stop_reason":"end_turn","session_id":"062778d5-666f-4cbe-9bae-078598e2dfe7","total_cost_usd":2.4139146999999994,"usage":{"input_tokens":68,"cache_creation_input_tokens":157568,"cache_read_input_tokens":3060128,"output_tokens":42756,"server_tool_use":{"web_search_requests":0,"web_fetch_requests":0},"service_tier":"standard","cache_creation":{"ephemeral_1h_input_tokens":0,"ephemeral_5m_input_tokens":157568},"inference_geo":"","iterations":[{"input_tokens":2,"output_tokens":699,"cache_read_input_tokens":122326,"cache_creation_input_tokens":1171,"cache_creation":{"ephemeral_5m_input_tokens":1171,"ephemeral_1h_input_tokens":0},"type":"message"}],"speed":"standard"},"modelUsage":{"claude-haiku-4-5-20251001":{"inputTokens":1102,"outputTokens":10082,"cacheReadInputTokens":881228,"cacheCreationInputTokens":99054,"webSearchRequests":0,"costUSD":0.26345230000000003,"contextWindow":200000,"maxOutputTokens":32000},"claude-fable-5":{"inputTokens":68,"outputTokens":42756,"cacheReadInputTokens":3060128,"cacheCreationInputTokens":157568,"webSearchRequests":0,"costUSD":2.1504624000000003,"contextWindow":200000,"maxOutputTokens":32000}},"permission_denials":[],"terminal_reason":"completed","fast_mode_state":"off","uuid":"a34abc6f-cebb-43c7-bbd0-ec1ec7b4ce61"}} {"type":"status","state":"idle"}