diff --git a/.env.local b/.env.local new file mode 100644 index 0000000..34313bd --- /dev/null +++ b/.env.local @@ -0,0 +1,260 @@ +############################################################# +# CLASSROOM COPILOT - ENVIRONMENT CONFIGURATION +############################################################# + +## ===================================================== +## APP INFORMATION & METADATA +## ===================================================== +APP_NAME=ClassroomCopilot +APP_VERSION=0.0.1 +APP_DESCRIPTION="An AI copilot for learners and educators." +APP_AUTHOR=KevlarAI +APP_AUTHOR_EMAIL=kcar@kevlarai.com +APP_PROTOCOL=https + +## ===================================================== +## SERVER & RUNTIME CONFIGURATION +## ===================================================== +UVICORN_PORT=8080 +UVICORN_WORKERS=2 +UVICORN_TIMEOUT=300 +DEV_MODE=true +BACKEND_DEV_MODE=true + +## ===================================================== +## ADMIN USER CONFIGURATION +## ===================================================== +# Regular Admin +ADMIN_EMAIL=admin@classroomcopilot.ai +ADMIN_PASSWORD=&%4Dm1n&% +ADMIN_NAME=Kevin Carter (Admin) +ADMIN_USERNAME=kcar +ADMIN_DISPLAY_NAME=K Car (Admin) +ADMIN_WORKER_EMAIL=kcar@kevlarai.com + +## ===================================================== +## SUPABASE DATABASE CONFIGURATION +## ===================================================== +SUPABASE_URL=http://supa.classroomcopilot.ai +ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0 +SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImV4cCI6MTk4MzgxMjk5Nn0.EGIM96RAZx35lJzdJsyH-qQwv8Hdp7fsn3W0YpN81IU +POSTGRES_PASSWORD=your-super-secret-and-long-postgres-password +POSTGRES_HOST=db +POSTGRES_DB=postgres +JWT_SECRET=super-secret-jwt-token-with-at-least-32-characters-long + +## ===================================================== +## NEO4J DATABASE CONFIGURATION +## ===================================================== +USER_NEO4J=neo4j +PASSWORD_NEO4J=&%N304j&% +NEO4J_CC_DB=classroomcopilot +PORT_NEO4J_BOLT=7687 +PORT_NEO4J_HTTP=7474 +PORT_NEO4J_HTTPS=7473 + +## ===================================================== +## OLLAMA AI SERVICE CONFIGURATION +## ===================================================== +HOST_OLLAMA=http://localhost +PORT_OLLAMA=11434 +OLLAMA_MODEL=qwen2.5-coder:32b + +## ===================================================== +## LANGCHAIN CONFIGURATION +## ===================================================== +LANGCHAIN_API_KEY= +LANGCHAIN_TRACING_V2=false +LANGCHAIN_PROJECT='Classroom Copilot' + +## ===================================================== +## GOOGLE API CONFIGURATION +## ===================================================== +YOUTUBE_API_KEY=AIzaSyDbpJInK6dsFUjY6oG60FlzYkj7JUJmUNs +GOOGLE_CLIENT_SECRETS_FILE=Users/kcar/ClassroomCopilot/backend/app/secrets/google_cloud_yt_credentials.json + +## ===================================================== +## DOCUMENT PROCESSING SERVICES +## ===================================================== +# External Service Endpoints +TIKA_URL=http://ubuntu-ct-tika:9998 +TIKA_TIMEOUT=300 +DOCLING_URL=http://ubuntu-server:5001 + +## ===================================================== +## DOCUMENT STRUCTURE DISCOVERY & ANALYSIS +## ===================================================== +# Auto-trigger Phase 1 components after document upload +AUTO_TIKA_PROCESSING=true +AUTO_PAGE_IMAGES=true +AUTO_DOCUMENT_ANALYSIS=true +AUTO_SPLIT_MAP_GENERATION=true + +## ===================================================== +## DOCLING BUNDLE PROCESSING PIPELINES +## ===================================================== +# Pipeline Execution Control (Sequential: no_ocr → ocr → vlm) +AUTO_DOCLING_NO_OCR=true +AUTO_DOCLING_OCR=true +AUTO_DOCLING_VLM=true + +# Bundle Architecture: BY_PAGE Precedence (overrides size thresholds) +# These settings take PRIORITY over DOCLING_SPLIT_THRESHOLD +DOCLING_NO_OCR_BY_PAGE=false +DOCLING_OCR_BY_PAGE=false +DOCLING_VLM_BY_PAGE=true + +# Bundle Processing Decision Logic: +# 1. BY_PAGE=true → Always create page-based bundles (docling_bundle_split) +# 2. BY_PAGE=false + pages < SPLIT_THRESHOLD → Single bundle (docling_bundle) +# 3. BY_PAGE=false + pages >= SPLIT_THRESHOLD → Section/chunk bundles (docling_bundle_split) + +## ===================================================== +## QUEUE SYSTEM & PERFORMANCE +## ===================================================== +# Service Limits (prevent server overload) +QUEUE_TIKA_LIMIT=3 +QUEUE_DOCLING_LIMIT=1 +QUEUE_LLM_LIMIT=1 +QUEUE_SPLIT_MAP_LIMIT=10 +QUEUE_DOCUMENT_ANALYSIS_LIMIT=5 +QUEUE_PAGE_IMAGES_LIMIT=3 + +# Worker Configuration +QUEUE_WORKERS=3 + +# Service Timeouts (per pipeline type) +DOCLING_BUNDLE_TIMEOUT=7200 +DOCLING_FRONTMATTER_TIMEOUT=300 +DOCLING_NOOCR_TIMEOUT=600 +DOCLING_OCR_TIMEOUT=900 +DOCLING_VLM_TIMEOUT=1800 + +# Bundle Architecture Settings +DOCLING_SPLIT_THRESHOLD=50 +DOCLING_FALLBACK_CHUNK_PAGES=25 +DOCLING_USE_SPLIT_MAP=true + +## ===================================================== +## DOCLING API CONFIGURATION (NEW BUNDLE ARCHITECTURE) +## ===================================================== +# Global Processing Settings (Docling API v1.5.1 Compliance) +DOCLING_PDF_BACKEND=dlparse_v4 +DOCLING_INCLUDE_IMAGES=true +DOCLING_IMAGES_SCALE=2.0 + +# OCR Engine Configuration (Global) +OCR_ENGINE=easyocr +OCR_LANG=en +DOCLING_PICTURE_DESCRIPTION_AREA_THRESHOLD=0.05 + +# ===================================================== +# PIPELINE-SPECIFIC PROCESSING OPTIONS +# ===================================================== +# NO_OCR Pipeline (Fast baseline processing) +DOCLING_NO_OCR_TABLE_MODE=fast +DOCLING_NO_OCR_TABLE_CELL_MATCHING=false +DOCLING_NO_OCR_DO_FORMULA_ENRICHMENT=false +DOCLING_NO_OCR_DO_CODE_ENRICHMENT=false +DOCLING_NO_OCR_DO_TABLE_STRUCTURE=true +DOCLING_NO_OCR_DO_PICTURE_CLASSIFICATION=false +DOCLING_NO_OCR_DO_PICTURE_DESCRIPTION=false + +# OCR Pipeline (Accurate processing with text enhancement) +DOCLING_OCR_TABLE_MODE=accurate +DOCLING_OCR_TABLE_CELL_MATCHING=true +DOCLING_OCR_DO_FORMULA_ENRICHMENT=true +DOCLING_OCR_DO_CODE_ENRICHMENT=false +DOCLING_OCR_DO_TABLE_STRUCTURE=true +DOCLING_OCR_DO_PICTURE_CLASSIFICATION=true +DOCLING_OCR_DO_PICTURE_DESCRIPTION=false + +# VLM Pipeline (Vision-enhanced processing) +DOCLING_VLM_MODEL=got_ocr_2 +# VLM_MODEL_LOCAL={"repo_id": "ds4sd/SmolDocling-256M-preview", "response_format": "doctags"} +# VLM_MODEL_API={"url": "http://localhost:1234/v1/chat/completions", "response_format": "doctags"} +DOCLING_VLM_TABLE_MODE=accurate +DOCLING_VLM_TABLE_CELL_MATCHING=true +DOCLING_VLM_DO_FORMULA_ENRICHMENT=true +DOCLING_VLM_DO_CODE_ENRICHMENT=false +DOCLING_VLM_DO_TABLE_STRUCTURE=true +DOCLING_VLM_DO_PICTURE_CLASSIFICATION=true +DOCLING_VLM_DO_PICTURE_DESCRIPTION=true + +## ===================================================== +## APPLICATION DOMAINS & URLS +## ===================================================== +VITE_APP_URL=http://localhost:3000 +APP_API_URL=http://localhost:{UVICORN_PORT} +APP_GRAPH_URL=http://localhost:7474 +APP_BOLT_URL=bolt://localhost:7687 + +## ===================================================== +## REDIS CONFIGURATION & ENVIRONMENT ISOLATION +## ===================================================== +# Redis Connection +REDIS_HOST=localhost +REDIS_PORT=6379 +REDIS_PASSWORD= +REDIS_SSL=false + +# Environment-Specific Database Isolation +REDIS_DB_DEV=0 # Development database (auto-wiped) +REDIS_DB_PROD=1 # Production database (persistent) +REDIS_DB_TEST=2 # Testing database (isolated) + +# Connection URLs (auto-constructed) +REDIS_URL_DEV=redis://localhost:6379/0 +REDIS_URL_PROD=redis://localhost:6379/1 +REDIS_URL_TEST=redis://localhost:6379/2 + +# Queue Persistence Strategy +REDIS_PERSIST_DEV=false # No persistence in dev (fast startup) +REDIS_PERSIST_PROD=true # Full persistence in prod (durability) +REDIS_TASK_TTL_DEV=3600 # 1 hour task retention in dev +REDIS_TASK_TTL_PROD=86400 # 24 hour task retention in prod + +# Health Check & Recovery +REDIS_HEALTH_CHECK_INTERVAL=30 # Health check every 30s +REDIS_RECOVERY_ENABLED=true # Enable automatic recovery +REDIS_MAX_RETRY_ATTEMPTS=3 # Max connection retry attempts + +# Memory-Aware Queue Management +QUEUE_MAX_MEMORY_MB=2048 # 2GB total queue memory limit +QUEUE_MAX_USER_MEMORY_MB=512 # 512MB per user limit +MAX_FILE_SIZE_MB=100 # 100MB max single file size +MEMORY_WARNING_THRESHOLD=0.8 # Warn users at 80% capacity +MEMORY_REJECT_THRESHOLD=0.95 # Reject uploads at 95% capacity + +# Upload Queue Settings +UPLOAD_QUEUE_ENABLED=true # Enable intelligent upload queuing +UPLOAD_IMMEDIATE_PROCESSING=false # Process files immediately (legacy mode) +UPLOAD_STATUS_POLLING_INTERVAL=5 # Status polling interval (seconds) + +## ===================================================== +## CORS & SECURITY SETTINGS +## ===================================================== +CORS_SITE_URL=http://localhost:5173,http://localhost:8000,http://127.0.0.1:8000 +CORS_GRAPH_URL={APP_GRAPH_URL} +CORS_API_URL={APP_API_URL} + +## ===================================================== +## FILE SYSTEM & STORAGE PATHS +## ===================================================== +NODE_FILESYSTEM_PATH=./data/node_filesystem +BACKEND_INIT_PATH=./data/init_data +LOG_PATH=./data/logs/ + +## =================================================##### +## LOGGING CONFIGURATION +## ===================================================== +# Log level must be lowercase for Node.js services using Pino logger (storage, functions) +# Valid values: trace, debug, info, warn, error, fatal +LOG_LEVEL=debug + + +## =================================================##### +## API KEYS +## ===================================================== +OPENAI_BASE_URL=https://api.openai.com/v1 +OPENAI_API_KEY=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 \ No newline at end of file diff --git a/.env.prod b/.env.prod new file mode 100644 index 0000000..34313bd --- /dev/null +++ b/.env.prod @@ -0,0 +1,260 @@ +############################################################# +# CLASSROOM COPILOT - ENVIRONMENT CONFIGURATION +############################################################# + +## ===================================================== +## APP INFORMATION & METADATA +## ===================================================== +APP_NAME=ClassroomCopilot +APP_VERSION=0.0.1 +APP_DESCRIPTION="An AI copilot for learners and educators." +APP_AUTHOR=KevlarAI +APP_AUTHOR_EMAIL=kcar@kevlarai.com +APP_PROTOCOL=https + +## ===================================================== +## SERVER & RUNTIME CONFIGURATION +## ===================================================== +UVICORN_PORT=8080 +UVICORN_WORKERS=2 +UVICORN_TIMEOUT=300 +DEV_MODE=true +BACKEND_DEV_MODE=true + +## ===================================================== +## ADMIN USER CONFIGURATION +## ===================================================== +# Regular Admin +ADMIN_EMAIL=admin@classroomcopilot.ai +ADMIN_PASSWORD=&%4Dm1n&% +ADMIN_NAME=Kevin Carter (Admin) +ADMIN_USERNAME=kcar +ADMIN_DISPLAY_NAME=K Car (Admin) +ADMIN_WORKER_EMAIL=kcar@kevlarai.com + +## ===================================================== +## SUPABASE DATABASE CONFIGURATION +## ===================================================== +SUPABASE_URL=http://supa.classroomcopilot.ai +ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0 +SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImV4cCI6MTk4MzgxMjk5Nn0.EGIM96RAZx35lJzdJsyH-qQwv8Hdp7fsn3W0YpN81IU +POSTGRES_PASSWORD=your-super-secret-and-long-postgres-password +POSTGRES_HOST=db +POSTGRES_DB=postgres +JWT_SECRET=super-secret-jwt-token-with-at-least-32-characters-long + +## ===================================================== +## NEO4J DATABASE CONFIGURATION +## ===================================================== +USER_NEO4J=neo4j +PASSWORD_NEO4J=&%N304j&% +NEO4J_CC_DB=classroomcopilot +PORT_NEO4J_BOLT=7687 +PORT_NEO4J_HTTP=7474 +PORT_NEO4J_HTTPS=7473 + +## ===================================================== +## OLLAMA AI SERVICE CONFIGURATION +## ===================================================== +HOST_OLLAMA=http://localhost +PORT_OLLAMA=11434 +OLLAMA_MODEL=qwen2.5-coder:32b + +## ===================================================== +## LANGCHAIN CONFIGURATION +## ===================================================== +LANGCHAIN_API_KEY= +LANGCHAIN_TRACING_V2=false +LANGCHAIN_PROJECT='Classroom Copilot' + +## ===================================================== +## GOOGLE API CONFIGURATION +## ===================================================== +YOUTUBE_API_KEY=AIzaSyDbpJInK6dsFUjY6oG60FlzYkj7JUJmUNs +GOOGLE_CLIENT_SECRETS_FILE=Users/kcar/ClassroomCopilot/backend/app/secrets/google_cloud_yt_credentials.json + +## ===================================================== +## DOCUMENT PROCESSING SERVICES +## ===================================================== +# External Service Endpoints +TIKA_URL=http://ubuntu-ct-tika:9998 +TIKA_TIMEOUT=300 +DOCLING_URL=http://ubuntu-server:5001 + +## ===================================================== +## DOCUMENT STRUCTURE DISCOVERY & ANALYSIS +## ===================================================== +# Auto-trigger Phase 1 components after document upload +AUTO_TIKA_PROCESSING=true +AUTO_PAGE_IMAGES=true +AUTO_DOCUMENT_ANALYSIS=true +AUTO_SPLIT_MAP_GENERATION=true + +## ===================================================== +## DOCLING BUNDLE PROCESSING PIPELINES +## ===================================================== +# Pipeline Execution Control (Sequential: no_ocr → ocr → vlm) +AUTO_DOCLING_NO_OCR=true +AUTO_DOCLING_OCR=true +AUTO_DOCLING_VLM=true + +# Bundle Architecture: BY_PAGE Precedence (overrides size thresholds) +# These settings take PRIORITY over DOCLING_SPLIT_THRESHOLD +DOCLING_NO_OCR_BY_PAGE=false +DOCLING_OCR_BY_PAGE=false +DOCLING_VLM_BY_PAGE=true + +# Bundle Processing Decision Logic: +# 1. BY_PAGE=true → Always create page-based bundles (docling_bundle_split) +# 2. BY_PAGE=false + pages < SPLIT_THRESHOLD → Single bundle (docling_bundle) +# 3. BY_PAGE=false + pages >= SPLIT_THRESHOLD → Section/chunk bundles (docling_bundle_split) + +## ===================================================== +## QUEUE SYSTEM & PERFORMANCE +## ===================================================== +# Service Limits (prevent server overload) +QUEUE_TIKA_LIMIT=3 +QUEUE_DOCLING_LIMIT=1 +QUEUE_LLM_LIMIT=1 +QUEUE_SPLIT_MAP_LIMIT=10 +QUEUE_DOCUMENT_ANALYSIS_LIMIT=5 +QUEUE_PAGE_IMAGES_LIMIT=3 + +# Worker Configuration +QUEUE_WORKERS=3 + +# Service Timeouts (per pipeline type) +DOCLING_BUNDLE_TIMEOUT=7200 +DOCLING_FRONTMATTER_TIMEOUT=300 +DOCLING_NOOCR_TIMEOUT=600 +DOCLING_OCR_TIMEOUT=900 +DOCLING_VLM_TIMEOUT=1800 + +# Bundle Architecture Settings +DOCLING_SPLIT_THRESHOLD=50 +DOCLING_FALLBACK_CHUNK_PAGES=25 +DOCLING_USE_SPLIT_MAP=true + +## ===================================================== +## DOCLING API CONFIGURATION (NEW BUNDLE ARCHITECTURE) +## ===================================================== +# Global Processing Settings (Docling API v1.5.1 Compliance) +DOCLING_PDF_BACKEND=dlparse_v4 +DOCLING_INCLUDE_IMAGES=true +DOCLING_IMAGES_SCALE=2.0 + +# OCR Engine Configuration (Global) +OCR_ENGINE=easyocr +OCR_LANG=en +DOCLING_PICTURE_DESCRIPTION_AREA_THRESHOLD=0.05 + +# ===================================================== +# PIPELINE-SPECIFIC PROCESSING OPTIONS +# ===================================================== +# NO_OCR Pipeline (Fast baseline processing) +DOCLING_NO_OCR_TABLE_MODE=fast +DOCLING_NO_OCR_TABLE_CELL_MATCHING=false +DOCLING_NO_OCR_DO_FORMULA_ENRICHMENT=false +DOCLING_NO_OCR_DO_CODE_ENRICHMENT=false +DOCLING_NO_OCR_DO_TABLE_STRUCTURE=true +DOCLING_NO_OCR_DO_PICTURE_CLASSIFICATION=false +DOCLING_NO_OCR_DO_PICTURE_DESCRIPTION=false + +# OCR Pipeline (Accurate processing with text enhancement) +DOCLING_OCR_TABLE_MODE=accurate +DOCLING_OCR_TABLE_CELL_MATCHING=true +DOCLING_OCR_DO_FORMULA_ENRICHMENT=true +DOCLING_OCR_DO_CODE_ENRICHMENT=false +DOCLING_OCR_DO_TABLE_STRUCTURE=true +DOCLING_OCR_DO_PICTURE_CLASSIFICATION=true +DOCLING_OCR_DO_PICTURE_DESCRIPTION=false + +# VLM Pipeline (Vision-enhanced processing) +DOCLING_VLM_MODEL=got_ocr_2 +# VLM_MODEL_LOCAL={"repo_id": "ds4sd/SmolDocling-256M-preview", "response_format": "doctags"} +# VLM_MODEL_API={"url": "http://localhost:1234/v1/chat/completions", "response_format": "doctags"} +DOCLING_VLM_TABLE_MODE=accurate +DOCLING_VLM_TABLE_CELL_MATCHING=true +DOCLING_VLM_DO_FORMULA_ENRICHMENT=true +DOCLING_VLM_DO_CODE_ENRICHMENT=false +DOCLING_VLM_DO_TABLE_STRUCTURE=true +DOCLING_VLM_DO_PICTURE_CLASSIFICATION=true +DOCLING_VLM_DO_PICTURE_DESCRIPTION=true + +## ===================================================== +## APPLICATION DOMAINS & URLS +## ===================================================== +VITE_APP_URL=http://localhost:3000 +APP_API_URL=http://localhost:{UVICORN_PORT} +APP_GRAPH_URL=http://localhost:7474 +APP_BOLT_URL=bolt://localhost:7687 + +## ===================================================== +## REDIS CONFIGURATION & ENVIRONMENT ISOLATION +## ===================================================== +# Redis Connection +REDIS_HOST=localhost +REDIS_PORT=6379 +REDIS_PASSWORD= +REDIS_SSL=false + +# Environment-Specific Database Isolation +REDIS_DB_DEV=0 # Development database (auto-wiped) +REDIS_DB_PROD=1 # Production database (persistent) +REDIS_DB_TEST=2 # Testing database (isolated) + +# Connection URLs (auto-constructed) +REDIS_URL_DEV=redis://localhost:6379/0 +REDIS_URL_PROD=redis://localhost:6379/1 +REDIS_URL_TEST=redis://localhost:6379/2 + +# Queue Persistence Strategy +REDIS_PERSIST_DEV=false # No persistence in dev (fast startup) +REDIS_PERSIST_PROD=true # Full persistence in prod (durability) +REDIS_TASK_TTL_DEV=3600 # 1 hour task retention in dev +REDIS_TASK_TTL_PROD=86400 # 24 hour task retention in prod + +# Health Check & Recovery +REDIS_HEALTH_CHECK_INTERVAL=30 # Health check every 30s +REDIS_RECOVERY_ENABLED=true # Enable automatic recovery +REDIS_MAX_RETRY_ATTEMPTS=3 # Max connection retry attempts + +# Memory-Aware Queue Management +QUEUE_MAX_MEMORY_MB=2048 # 2GB total queue memory limit +QUEUE_MAX_USER_MEMORY_MB=512 # 512MB per user limit +MAX_FILE_SIZE_MB=100 # 100MB max single file size +MEMORY_WARNING_THRESHOLD=0.8 # Warn users at 80% capacity +MEMORY_REJECT_THRESHOLD=0.95 # Reject uploads at 95% capacity + +# Upload Queue Settings +UPLOAD_QUEUE_ENABLED=true # Enable intelligent upload queuing +UPLOAD_IMMEDIATE_PROCESSING=false # Process files immediately (legacy mode) +UPLOAD_STATUS_POLLING_INTERVAL=5 # Status polling interval (seconds) + +## ===================================================== +## CORS & SECURITY SETTINGS +## ===================================================== +CORS_SITE_URL=http://localhost:5173,http://localhost:8000,http://127.0.0.1:8000 +CORS_GRAPH_URL={APP_GRAPH_URL} +CORS_API_URL={APP_API_URL} + +## ===================================================== +## FILE SYSTEM & STORAGE PATHS +## ===================================================== +NODE_FILESYSTEM_PATH=./data/node_filesystem +BACKEND_INIT_PATH=./data/init_data +LOG_PATH=./data/logs/ + +## =================================================##### +## LOGGING CONFIGURATION +## ===================================================== +# Log level must be lowercase for Node.js services using Pino logger (storage, functions) +# Valid values: trace, debug, info, warn, error, fatal +LOG_LEVEL=debug + + +## =================================================##### +## API KEYS +## ===================================================== +OPENAI_BASE_URL=https://api.openai.com/v1 +OPENAI_API_KEY=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 \ No newline at end of file