diff --git a/usecase/solar-political-influence-analyzer/.env.example b/usecase/solar-political-influence-analyzer/.env.example new file mode 100644 index 0000000..cbb0d03 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/.env.example @@ -0,0 +1,3 @@ +# 루트 레벨 환경 변수 (선택) +AWS_REGION=ap-northeast-2 +AWS_ACCOUNT_ID=your_aws_account_id diff --git a/usecase/solar-political-influence-analyzer/.github/workflows/deploy-backend.yml b/usecase/solar-political-influence-analyzer/.github/workflows/deploy-backend.yml new file mode 100644 index 0000000..511fa11 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/.github/workflows/deploy-backend.yml @@ -0,0 +1,69 @@ +name: Deploy AI Engine to ECS + +on: + push: + branches: + - main + paths: + - 'src/ai-engine/**' + - '.github/workflows/deploy-backend.yml' + +env: + AWS_REGION: ap-northeast-2 + ECR_REPOSITORY: ups-t3-ai-engine + ECS_CLUSTER: ups-t3-cluster + ECS_SERVICE: ups-t3-service + CONTAINER_NAME: ups-t3-container + +jobs: + deploy: + name: Deploy AI Engine + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v2 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: ${{ env.AWS_REGION }} + + - name: Login to Amazon ECR + id: login-ecr + uses: aws-actions/amazon-ecr-login@v1 + + - name: Build, tag, and push image to Amazon ECR + id: build-image + env: + ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} + IMAGE_TAG: ${{ github.sha }} + run: | + cd src/ai-engine + docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG . + docker tag $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG $ECR_REGISTRY/$ECR_REPOSITORY:latest + docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG + docker push $ECR_REGISTRY/$ECR_REPOSITORY:latest + echo "image=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" >> $GITHUB_OUTPUT + + - name: Update ECS service + run: | + aws ecs update-service \ + --cluster ${{ env.ECS_CLUSTER }} \ + --service ${{ env.ECS_SERVICE }} \ + --force-new-deployment \ + --region ${{ env.AWS_REGION }} + + - name: Wait for service stability + run: | + aws ecs wait services-stable \ + --cluster ${{ env.ECS_CLUSTER }} \ + --services ${{ env.ECS_SERVICE }} \ + --region ${{ env.AWS_REGION }} + + - name: Deployment success + run: | + echo "✅ AI Engine deployed successfully!" + echo "Image: ${{ steps.build-image.outputs.image }}" diff --git a/usecase/solar-political-influence-analyzer/.github/workflows/deploy-frontend.yml b/usecase/solar-political-influence-analyzer/.github/workflows/deploy-frontend.yml new file mode 100644 index 0000000..df59536 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/.github/workflows/deploy-frontend.yml @@ -0,0 +1,65 @@ +name: Deploy Frontend to S3 and CloudFront + +on: + push: + branches: + - main + paths: + - 'src/frontend/**' + - '.github/workflows/deploy-frontend.yml' + +env: + AWS_REGION: ap-northeast-2 + S3_BUCKET: ups-t3-frontend-1763878138 + CLOUDFRONT_DISTRIBUTION_ID: E1RLDWF8ZOYKW1 + +jobs: + deploy: + name: Deploy Frontend + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: '18' + cache: 'npm' + cache-dependency-path: src/frontend/package-lock.json + + - name: Install dependencies + run: | + cd src/frontend + npm ci --legacy-peer-deps + + - name: Build application + env: + NEXT_PUBLIC_API_URL: https://d31ad140yvex7c.cloudfront.net + run: | + cd src/frontend + npm run build + + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v2 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: ${{ env.AWS_REGION }} + + - name: Deploy to S3 + run: | + cd src/frontend + aws s3 sync out/ s3://${{ env.S3_BUCKET }} --delete --region ${{ env.AWS_REGION }} + + - name: Invalidate CloudFront cache + run: | + aws cloudfront create-invalidation \ + --distribution-id ${{ env.CLOUDFRONT_DISTRIBUTION_ID }} \ + --paths "/*" + + - name: Deployment success + run: | + echo "✅ Frontend deployed successfully!" + echo "URL: https://d31ad140yvex7c.cloudfront.net" diff --git a/usecase/solar-political-influence-analyzer/.gitignore b/usecase/solar-political-influence-analyzer/.gitignore new file mode 100644 index 0000000..3be8fc4 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/.gitignore @@ -0,0 +1,87 @@ +# Python +__pycache__/ +*.py[cod] +*$py.class +*.so +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg + +# Virtual Environment +venv/ +env/ +ENV/ + +# Environment Variables +.env +.env.local +.env.development.local +.env.test.local +.env.production.local + +# IDE +.vscode/ +.idea/ +*.swp +*.swo +*~ + +# OS +.DS_Store +.DS_Store? +._* +.Spotlight-V100 +.Trashes +ehthumbs.db +Thumbs.db + +# Logs +logs/ +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Node.js +node_modules/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# React Build +/frontend/build/ +/frontend/.env.local +/frontend/.env.development.local +/frontend/.env.test.local +/frontend/.env.production.local + +# Testing +.coverage +htmlcov/ +.pytest_cache/ +.tox/ + +# Database +*.db +*.sqlite3 + +# Temporary files +*.tmp +*.temp + +# API Keys (보안) +**/config/secrets.py +**/config/keys.py \ No newline at end of file diff --git a/usecase/solar-political-influence-analyzer/README.md b/usecase/solar-political-influence-analyzer/README.md new file mode 100644 index 0000000..7e121f0 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/README.md @@ -0,0 +1,418 @@ +# Political Influence Network Analyzer with Solar-Pro2 + +A comprehensive AI-powered platform that analyzes and visualizes relationships between politicians, policies, industries, and companies using Upstage Solar-Pro2 LLM. + +## Overview + +This project demonstrates how to build a sophisticated political-economic analysis system using **Upstage Solar-Pro2** as the core intelligence engine. The system processes natural language queries about politicians or policies and generates structured influence network analysis with evidence-based connections. + +### Key Features + +- **Multi-Agent Research System**: Coordinated AI agents for parallel information gathering +- **4-Tier Relationship Analysis**: Politicians → Policies → Industries → Companies +- **Evidence-Based Connections**: All relationships backed by credible sources +- **Interactive Visualization**: D3.js-powered network graphs +- **Real-Time Stock Integration**: Live stock prices for identified companies +- **Korean Language Optimization**: Leverages Solar-Pro2's Korean capabilities + +## Architecture + +``` +User Query → Solar-Pro2 Router → Multi-Agent Research System → Evidence Synthesis → Visualization + ↓ ↓ ↓ + Intent Classification Parallel Web Search Structured Output + Query Refinement Content Summarization Source Attribution +``` + +### Technology Stack + +**AI Engine (Backend)** +- **Upstage Solar-Pro2**: Primary LLM for analysis and synthesis +- **LangGraph**: Multi-agent orchestration framework +- **FastAPI**: REST API server +- **Tavily API**: Real-time web search +- **Python 3.9+** + +**Frontend** +- **Next.js 16**: React framework with SSR +- **TypeScript**: Type-safe development +- **D3.js**: Interactive graph visualization +- **Tailwind CSS**: Styling + +**Infrastructure** +- **AWS ECS Fargate**: Container orchestration +- **AWS CloudFront + S3**: Static hosting and CDN +- **AWS DynamoDB**: Caching and rate limiting +- **GitHub Actions**: CI/CD pipeline + +## Solar-Pro2 Integration + +### Core Use Cases + +#### 1. Intent Classification and Query Routing +```python +from langchain_upstage import ChatUpstage + +router_llm = ChatUpstage( + api_key=UPSTAGE_API_KEY, + model="solar-pro2", + temperature=0, +) + +# Classifies user intent and routes to appropriate research workflow +def classify_query(user_input: str) -> str: + prompt = f""" + Analyze this query and classify the intent: + Query: {user_input} + + Classifications: + - relationship_analysis: User wants to understand political-economic connections + - factual_question: User wants specific facts about a person/policy + - general_inquiry: General questions not requiring deep research + """ + return router_llm.invoke(prompt) +``` + +#### 2. Multi-Agent Research Coordination +```python +# Supervisor agent coordinates 3 specialized research agents +supervisor_model = ChatUpstage( + api_key=os.getenv("UPSTAGE_API_KEY"), + model="solar-pro2", + temperature=0 +) + +class ResearchSupervisor: + def coordinate_research(self, query: str): + # Agent 1: Policy Analysis + # Agent 2: Industry Impact Assessment + # Agent 3: Company Identification + + tasks = self.decompose_research_tasks(query) + results = await self.execute_parallel_research(tasks) + return self.synthesize_findings(results) +``` + +#### 3. Evidence Synthesis and Structured Output +```python +writer_model = ChatUpstage( + api_key=os.getenv("UPSTAGE_API_KEY"), + model="solar-pro2", + temperature=0 +).with_structured_output(InfluenceReport) + +class InfluenceReport(BaseModel): + report_title: str + influence_chains: List[InfluenceChain] + evidence_sources: List[EvidenceSource] + + class InfluenceChain(BaseModel): + politician: str + policy: str + industry: str + companies: List[str] + evidence: str +``` + +#### 4. Content Summarization +```python +summarization_model = ChatUpstage( + api_key=UPSTAGE_API_KEY, + model="solar-pro2", + temperature=0.0, +) + +def summarize_webpage(content: str, query_context: str) -> Summary: + """Summarizes web content in context of the research query""" + prompt = f""" + Summarize this content focusing on information relevant to: {query_context} + + Content: {content} + + Provide: + 1. Key findings related to the query + 2. Relevant quotes with context + 3. Credibility assessment + """ + return summarization_model.invoke(prompt) +``` + +### Performance Optimizations + +- **Temperature 0.0**: Ensures consistent, factual outputs +- **Structured Output**: Forces JSON schema compliance +- **Korean Optimization**: Leverages Solar-Pro2's Korean language strengths +- **Evidence Requirements**: Anti-hallucination constraints in prompts + +## Installation & Setup + +### Prerequisites +- Python 3.9+ +- Node.js 18+ +- Upstage API Key +- Tavily API Key (optional, for enhanced search) + +### 1. Clone Repository +```bash +git clone +cd solar-political-influence-analyzer +``` + +### 2. Backend Setup +```bash +cd src/ai-engine + +# Install dependencies +pip install -r requirements.txt + +# Configure environment +cp .env.example .env +# Edit .env with your API keys: +# UPSTAGE_API_KEY=your_upstage_api_key_here +# TAVILY_API_KEY=your_tavily_api_key_here +``` + +### 3. Frontend Setup +```bash +cd src/frontend + +# Install dependencies +npm install --legacy-peer-deps + +# Configure environment +cp .env.example .env.local +# Edit .env.local: +# NEXT_PUBLIC_API_URL=http://localhost:8000 +``` + +### 4. Run Development Servers + +**Terminal 1 - Backend:** +```bash +cd src/ai-engine +PYTHONPATH=src python src/deep_research/main.py +``` + +**Terminal 2 - Frontend:** +```bash +cd src/frontend +npm run dev +``` + +### 5. Access Application +- Frontend: http://localhost:3000 +- Backend API: http://localhost:8000 +- API Documentation: http://localhost:8000/docs + +## Usage Examples + +### Basic Query +```bash +curl -X POST "http://localhost:8000/generate" \ + -H "Content-Type: application/json" \ + -d '{"query": "이재명의 정책이 어떤 기업에 영향을 미치나요?"}' +``` + +### Check Job Status +```bash +curl "http://localhost:8000/job/{job_id}" +``` + +### Expected Output Structure +```json +{ + "status": "completed", + "result": { + "report_title": "이재명 정치경제 영향 분석", + "influence_chains": [ + { + "politician": "이재명", + "policy": "기본소득 정책", + "industry": "핀테크", + "companies": ["카카오페이", "토스"], + "evidence": "기본소득 정책 시행 시 디지털 결제 시스템 수요 증가 예상..." + } + ], + "evidence_sources": [ + { + "title": "기본소득 정책과 핀테크 산업", + "url": "https://example.com/news", + "summary": "정책 분석 보고서에 따르면..." + } + ] + } +} +``` + +## Code Structure & Flow + +### 1. Request Processing Flow +``` +User Query → FastAPI Endpoint → Router Agent → Research Coordination +``` + +### 2. Multi-Agent Research System +```python +# src/ai-engine/src/deep_research/multi_agent_supervisor.py +class ResearchSupervisor: + def __init__(self): + self.agents = { + 'policy_analyst': PolicyAnalysisAgent(), + 'industry_expert': IndustryAnalysisAgent(), + 'company_researcher': CompanyResearchAgent() + } + + async def coordinate_research(self, query: str): + # Decompose query into specialized research tasks + tasks = self.create_research_tasks(query) + + # Execute research in parallel + results = await asyncio.gather(*[ + agent.research(task) for agent, task in tasks.items() + ]) + + # Synthesize findings using Solar-Pro2 + return self.synthesize_results(results) +``` + +### 3. Evidence Collection & Validation +```python +# src/ai-engine/src/deep_research/utils.py +async def search_and_summarize(query: str) -> List[Summary]: + """ + 1. Performs web search via Tavily API + 2. Scrapes relevant URLs with Playwright + 3. Summarizes content using Solar-Pro2 + 4. Validates evidence quality + """ + search_results = await tavily_search(query) + summaries = [] + + for url in search_results.urls: + content = await scrape_webpage(url) + summary = await summarization_model.ainvoke({ + "content": content, + "query_context": query + }) + summaries.append(summary) + + return summaries +``` + +### 4. Structured Output Generation +```python +# src/ai-engine/src/deep_research/research_agent_full.py +def generate_influence_report(research_data: dict) -> InfluenceReport: + """ + Uses Solar-Pro2 with structured output to ensure consistent JSON format + """ + writer_prompt = f""" + Based on the research findings, create a comprehensive influence analysis: + + Research Data: {research_data} + + Requirements: + - All connections must be evidence-based + - Include source citations + - Focus on publicly traded companies + - Maintain political neutrality + """ + + return writer_model.invoke(writer_prompt) +``` + +## Key Functions Documentation + +### Core Research Functions + +#### `deep_researcher_builder()` +**Location**: `src/ai-engine/src/deep_research/research_agent_full.py` +**Purpose**: Builds the complete research workflow using LangGraph +**Returns**: Compiled LangGraph workflow for end-to-end analysis + +#### `router_builder.compile()` +**Location**: `src/ai-engine/src/deep_research/router.py` +**Purpose**: Routes queries to appropriate research workflows based on intent +**Key Logic**: Uses Solar-Pro2 to classify query type and select processing path + +#### `search_and_summarize()` +**Location**: `src/ai-engine/src/deep_research/utils.py` +**Purpose**: Performs web search and content summarization +**Process**: +1. Tavily API search → 2. Content scraping → 3. Solar-Pro2 summarization + +#### `coordinate_research()` +**Location**: `src/ai-engine/src/deep_research/multi_agent_supervisor.py` +**Purpose**: Orchestrates parallel research across specialized agents +**Agents**: Policy Analyst, Industry Expert, Company Researcher + +### API Endpoints + +#### `POST /generate` +**Purpose**: Initiates new analysis job +**Input**: `{"query": "politician or policy name"}` +**Output**: `{"job_id": "uuid", "status": "processing"}` + +#### `GET /job/{job_id}` +**Purpose**: Retrieves analysis results +**Output**: Complete influence network analysis with evidence + +## Deployment + +### Production Deployment (AWS) + +The project includes complete AWS infrastructure setup: + +1. **ECS Fargate**: Containerized backend deployment +2. **S3 + CloudFront**: Static frontend hosting with CDN +3. **Application Load Balancer**: API traffic routing +4. **DynamoDB**: Results caching and rate limiting + +### CI/CD Pipeline + +GitHub Actions workflows automatically deploy on push to main: +- `.github/workflows/deploy-backend.yml`: Backend deployment +- `.github/workflows/deploy-frontend.yml`: Frontend deployment + +## Performance & Scalability + +### Optimization Features +- **Result Caching**: 24-hour TTL in DynamoDB +- **Rate Limiting**: Prevents API abuse +- **Parallel Processing**: Multi-agent concurrent research +- **CDN Distribution**: Global content delivery + +### Monitoring +- **Health Checks**: `/health` endpoint for load balancer +- **Error Handling**: Comprehensive exception management +- **Logging**: Structured logging for debugging + +## Contributing + +1. Fork the repository +2. Create feature branch: `git checkout -b feature/new-feature` +3. Commit changes: `git commit -am 'Add new feature'` +4. Push to branch: `git push origin feature/new-feature` +5. Submit Pull Request + +## License + +MIT License - see LICENSE file for details + +## Acknowledgments + +- **Upstage**: Solar-Pro2 LLM API providing Korean-optimized language understanding +- **Tavily**: Real-time web search capabilities +- **LangGraph**: Multi-agent orchestration framework +- **AWS**: Cloud infrastructure and services + +--- + +## Support + +For questions or issues: +1. Check the [API Documentation](http://localhost:8000/docs) +2. Review [troubleshooting guide](#troubleshooting) +3. Open an issue on GitHub + +This project demonstrates the power of Solar-Pro2 for complex, multi-step analysis tasks requiring Korean language understanding and structured output generation. \ No newline at end of file diff --git a/usecase/solar-political-influence-analyzer/deploy.sh b/usecase/solar-political-influence-analyzer/deploy.sh new file mode 100755 index 0000000..1ecb812 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/deploy.sh @@ -0,0 +1,46 @@ +#!/bin/bash + +# 배포 스크립트 +set -e + +echo "🚀 수동 배포 시작..." + +# AWS 설정 +AWS_REGION="ap-northeast-2" +ECR_REPOSITORY="ups-t3-ai-engine" +ECS_CLUSTER="ups-t3-cluster" +ECS_SERVICE="ups-t3-service" + +# ECR 로그인 +echo "📦 ECR 로그인 중..." +aws ecr get-login-password --region $AWS_REGION | docker login --username AWS --password-stdin $(aws sts get-caller-identity --query Account --output text).dkr.ecr.$AWS_REGION.amazonaws.com + +# ECR URI 가져오기 +ECR_URI=$(aws ecr describe-repositories --repository-names $ECR_REPOSITORY --region $AWS_REGION --query 'repositories[0].repositoryUri' --output text) +IMAGE_TAG=$(git rev-parse --short HEAD) + +echo "🔨 Docker 이미지 빌드 중..." +cd src/ai-engine +docker build -t $ECR_REPOSITORY:$IMAGE_TAG . +docker tag $ECR_REPOSITORY:$IMAGE_TAG $ECR_URI:$IMAGE_TAG +docker tag $ECR_REPOSITORY:$IMAGE_TAG $ECR_URI:latest + +echo "⬆️ ECR에 푸시 중..." +docker push $ECR_URI:$IMAGE_TAG +docker push $ECR_URI:latest + +echo "🔄 ECS 서비스 업데이트 중..." +aws ecs update-service \ + --cluster $ECS_CLUSTER \ + --service $ECS_SERVICE \ + --force-new-deployment \ + --region $AWS_REGION + +echo "⏳ 배포 완료 대기 중..." +aws ecs wait services-stable \ + --cluster $ECS_CLUSTER \ + --services $ECS_SERVICE \ + --region $AWS_REGION + +echo "✅ 배포 완료!" +echo "이미지: $ECR_URI:$IMAGE_TAG" diff --git a/usecase/solar-political-influence-analyzer/docs/CICD_GUIDE.md b/usecase/solar-political-influence-analyzer/docs/CICD_GUIDE.md new file mode 100644 index 0000000..a0aed38 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/docs/CICD_GUIDE.md @@ -0,0 +1,409 @@ +# CI/CD 가이드 + +## 개요 + +GitHub Actions를 사용한 자동 배포 파이프라인 구성 가이드입니다. + +**CI/CD 플로우:** +``` +코드 푸시 (GitHub) + ↓ +GitHub Actions 트리거 + ↓ +Docker 이미지 빌드 + ↓ +ECR에 푸시 + ↓ +ECS 서비스 업데이트 (자동 배포) +``` + +--- + +## 사전 준비 + +### 1. GitHub Secrets 설정 + +GitHub 저장소 → Settings → Secrets and variables → Actions + +**필수 Secrets:** +- `AWS_ACCESS_KEY_ID`: AWS IAM 액세스 키 +- `AWS_SECRET_ACCESS_KEY`: AWS IAM 시크릿 키 + +### 2. IAM 권한 설정 + +GitHub Actions에서 사용할 IAM 사용자에 다음 권한 필요: + +```json +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "ecr:GetAuthorizationToken", + "ecr:BatchCheckLayerAvailability", + "ecr:GetDownloadUrlForLayer", + "ecr:BatchGetImage", + "ecr:PutImage", + "ecr:InitiateLayerUpload", + "ecr:UploadLayerPart", + "ecr:CompleteLayerUpload" + ], + "Resource": "*" + }, + { + "Effect": "Allow", + "Action": [ + "ecs:UpdateService", + "ecs:DescribeServices" + ], + "Resource": "*" + }, + { + "Effect": "Allow", + "Action": [ + "s3:PutObject", + "s3:GetObject", + "s3:DeleteObject", + "s3:ListBucket" + ], + "Resource": [ + "arn:aws:s3:::ups-t3-frontend-*", + "arn:aws:s3:::ups-t3-frontend-*/*" + ] + }, + { + "Effect": "Allow", + "Action": [ + "cloudfront:CreateInvalidation" + ], + "Resource": "*" + } + ] +} +``` + +--- + +## Workflow 구성 + +### 1. Backend (AI Engine) 배포 + +**파일:** `.github/workflows/deploy-backend.yml` + +**트리거 조건:** +- `main` 브랜치에 푸시 +- `src/ai-engine/**` 경로 변경 시 + +**배포 단계:** +1. 코드 체크아웃 +2. AWS 자격 증명 설정 +3. ECR 로그인 +4. Docker 이미지 빌드 및 푸시 +5. ECS 서비스 강제 재배포 +6. 서비스 안정화 대기 + +**사용 예시:** +```bash +# AI 엔진 코드 수정 후 +git add src/ai-engine/ +git commit -m "Update AI engine" +git push origin main + +# GitHub Actions 자동 실행 +# https://github.com/your-repo/actions +``` + +### 2. Frontend 배포 + +**파일:** `.github/workflows/deploy-frontend.yml` + +**트리거 조건:** +- `main` 브랜치에 푸시 +- `src/frontend/**` 경로 변경 시 + +**배포 단계:** +1. 코드 체크아웃 +2. Node.js 설정 +3. 의존성 설치 +4. Next.js 빌드 +5. S3에 업로드 +6. CloudFront 캐시 무효화 + +**사용 예시:** +```bash +# 프론트엔드 코드 수정 후 +git add src/frontend/ +git commit -m "Update frontend UI" +git push origin main + +# GitHub Actions 자동 실행 +``` + +--- + +## 배포 모니터링 + +### GitHub Actions 로그 확인 + +1. GitHub 저장소 → Actions 탭 +2. 실행 중인 워크플로우 클릭 +3. 각 단계별 로그 확인 + +### ECS 배포 상태 확인 + +```bash +# ECS 서비스 상태 +aws ecs describe-services \ + --cluster ups-t3-cluster \ + --services ups-t3-service \ + --region ap-northeast-2 + +# 최근 배포 이벤트 +aws ecs describe-services \ + --cluster ups-t3-cluster \ + --services ups-t3-service \ + --query 'services[0].events[:5]' \ + --region ap-northeast-2 +``` + +### CloudFront 무효화 상태 확인 + +```bash +aws cloudfront list-invalidations \ + --distribution-id E1RLDWF8ZOYKW1 \ + --max-items 5 +``` + +--- + +## 롤백 전략 + +### Backend 롤백 + +**방법 1: 이전 이미지로 복원** +```bash +# ECR에서 이전 이미지 태그 확인 +aws ecr describe-images \ + --repository-name ups-t3-ai-engine \ + --region ap-northeast-2 + +# Task Definition에서 이미지 변경 +aws ecs update-service \ + --cluster ups-t3-cluster \ + --service ups-t3-service \ + --task-definition ups-t3-task:PREVIOUS_REVISION \ + --force-new-deployment +``` + +**방법 2: Git 커밋 되돌리기** +```bash +git revert HEAD +git push origin main +# GitHub Actions가 자동으로 이전 버전 배포 +``` + +### Frontend 롤백 + +**방법 1: S3 버전 관리 활용** +```bash +# S3 버전 관리 활성화 필요 +aws s3api list-object-versions \ + --bucket ups-t3-frontend-1763878138 \ + --prefix index.html + +# 이전 버전 복원 +aws s3api copy-object \ + --copy-source ups-t3-frontend-1763878138/index.html?versionId=VERSION_ID \ + --bucket ups-t3-frontend-1763878138 \ + --key index.html +``` + +**방법 2: Git 커밋 되돌리기** +```bash +git revert HEAD +git push origin main +``` + +--- + +## 환경별 배포 + +### Development 환경 + +**브랜치:** `develop` + +```yaml +# .github/workflows/deploy-dev.yml +on: + push: + branches: + - develop + +env: + ECS_CLUSTER: ups-t3-dev-cluster + S3_BUCKET: ups-t3-frontend-dev +``` + +### Staging 환경 + +**브랜치:** `staging` + +```yaml +# .github/workflows/deploy-staging.yml +on: + push: + branches: + - staging + +env: + ECS_CLUSTER: ups-t3-staging-cluster + S3_BUCKET: ups-t3-frontend-staging +``` + +### Production 환경 + +**브랜치:** `main` + +**수동 승인 추가:** +```yaml +jobs: + deploy: + environment: + name: production + url: https://d31ad140yvex7c.cloudfront.net + # GitHub에서 수동 승인 필요 +``` + +--- + +## 트러블슈팅 + +### 1. ECR 푸시 실패 + +**문제:** `denied: Your authorization token has expired` + +**해결:** +```bash +# ECR 로그인 재시도 +aws ecr get-login-password --region ap-northeast-2 | \ + docker login --username AWS --password-stdin 663120345697.dkr.ecr.ap-northeast-2.amazonaws.com +``` + +### 2. ECS 배포 타임아웃 + +**문제:** 서비스 안정화 대기 시간 초과 + +**해결:** +```bash +# 헬스체크 로그 확인 +aws ecs describe-tasks \ + --cluster ups-t3-cluster \ + --tasks $(aws ecs list-tasks --cluster ups-t3-cluster --service ups-t3-service --query 'taskArns[0]' --output text) + +# CloudWatch 로그 확인 +aws logs tail /ecs/ups-t3 --follow +``` + +### 3. S3 업로드 권한 오류 + +**문제:** `Access Denied` + +**해결:** +```bash +# IAM 정책 확인 +aws iam get-user-policy \ + --user-name github-actions-user \ + --policy-name S3AccessPolicy + +# 버킷 정책 확인 +aws s3api get-bucket-policy --bucket ups-t3-frontend-1763878138 +``` + +### 4. CloudFront 캐시 무효화 실패 + +**문제:** 무효화 요청 실패 + +**해결:** +```bash +# 배포 상태 확인 +aws cloudfront get-distribution --id E1RLDWF8ZOYKW1 + +# 수동 무효화 +aws cloudfront create-invalidation \ + --distribution-id E1RLDWF8ZOYKW1 \ + --paths "/*" +``` + +--- + +## 성능 최적화 + +### 1. Docker 빌드 캐싱 + +```yaml +- name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + +- name: Build and push + uses: docker/build-push-action@v4 + with: + context: ./src/ai-engine + push: true + tags: ${{ steps.login-ecr.outputs.registry }}/ups-t3-ai-engine:latest + cache-from: type=gha + cache-to: type=gha,mode=max +``` + +### 2. npm 캐싱 + +```yaml +- name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: '18' + cache: 'npm' + cache-dependency-path: src/frontend/package-lock.json +``` + +### 3. 병렬 배포 + +```yaml +jobs: + deploy-backend: + # Backend 배포 + + deploy-frontend: + # Frontend 배포 + # Backend와 독립적으로 실행 +``` + +--- + +## 보안 권장사항 + +### 1. Secrets 관리 +- GitHub Secrets에 민감 정보 저장 +- 로그에 Secrets 노출 방지 +- 정기적으로 액세스 키 교체 + +### 2. 최소 권한 원칙 +- IAM 사용자에 필요한 최소 권한만 부여 +- 리소스별 세분화된 권한 설정 + +### 3. 브랜치 보호 +```bash +# main 브랜치 보호 규칙 설정 +- Require pull request reviews +- Require status checks to pass +- Require branches to be up to date +``` + +--- + +## 참고 자료 + +- [GitHub Actions 문서](https://docs.github.com/en/actions) +- [AWS ECR 문서](https://docs.aws.amazon.com/ecr/) +- [AWS ECS 문서](https://docs.aws.amazon.com/ecs/) +- [CloudFront 무효화](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateInvalidation.html) diff --git a/usecase/solar-political-influence-analyzer/docs/DEPLOYMENT_GUIDE.md b/usecase/solar-political-influence-analyzer/docs/DEPLOYMENT_GUIDE.md new file mode 100644 index 0000000..02f390c --- /dev/null +++ b/usecase/solar-political-influence-analyzer/docs/DEPLOYMENT_GUIDE.md @@ -0,0 +1,550 @@ +# 정치테마주 분석 PIN - 배포 가이드 + +## 📋 목차 +1. [프로젝트 개요](#프로젝트-개요) +2. [아키텍처](#아키텍처) +3. [로컬 개발 환경 설정](#로컬-개발-환경-설정) +4. [AWS 인프라 구축](#aws-인프라-구축) +5. [프론트엔드 배포](#프론트엔드-배포) +6. [AI 엔진 배포](#ai-엔진-배포) +7. [도메인 설정](#도메인-설정) +8. [트러블슈팅](#트러블슈팅) + +--- + +## 프로젝트 개요 + +**정치테마주 분석 PIN**은 정치인과 정책이 산업 및 기업에 미치는 영향을 분석하고 시각화하는 풀스택 애플리케이션입니다. + +### 주요 기능 +- 정치인/정책 검색 및 관계도 분석 +- 정책 → 산업 → 기업 4단계 연결 시각화 +- 실시간 주가 정보 제공 +- 근거 기반 분석 (출처 제공) + +### 기술 스택 +- **Frontend**: Next.js 16, TypeScript, Tailwind CSS +- **Backend**: FastAPI (Python), LangGraph +- **AI**: Upstage Solar-Pro2, Tavily Search API +- **Infrastructure**: AWS (ECS Fargate, ALB, CloudFront, S3, DynamoDB) + +--- + +## 아키텍처 + +``` +사용자 + ↓ +CloudFront (HTTPS, CDN) + ├─ / → S3 (정적 웹사이트) + ├─ /api/* → ALB → ECS Fargate (AI 엔진) + ├─ /generate → ALB → ECS Fargate + └─ /job/* → ALB → ECS Fargate + ↓ + DynamoDB (캐싱) + ↓ + 외부 API (Upstage, Tavily, 네이버 주가) +``` + +### AWS 리소스 +- **CloudFront**: `E1RLDWF8ZOYKW1` (d31ad140yvex7c.cloudfront.net) +- **S3**: `ups-t3-frontend-1763878138` +- **ALB**: `ups-t3-alb` (ups-t3-alb-984329148.ap-northeast-2.elb.amazonaws.com) +- **ECS Cluster**: `ups-t3-cluster` +- **ECS Service**: `ups-t3-service` +- **ECR**: `ups-t3-ai-engine` +- **DynamoDB**: `analysis_results`, `stock_prices`, `rate_limits` + +--- + +## 로컬 개발 환경 설정 + +### 1. 필수 요구사항 +- Node.js 18+ +- Python 3.9+ +- AWS CLI +- Docker (AI 엔진 배포용) + +### 2. API 키 설정 +```bash +# AI 엔진 API 키 +cd src/ai-engine +cat > .env << EOF +UPSTAGE_API_KEY=your_upstage_api_key +TAVILY_API_KEY=your_tavily_api_key +EOF +``` + +### 3. 의존성 설치 +```bash +# 프론트엔드 +cd src/frontend +npm install --legacy-peer-deps + +# AI 엔진 +cd src/ai-engine +pip install -r requirements.txt +``` + +### 4. 로컬 서버 실행 +```bash +# AI 엔진 (포트 8000) +cd src/ai-engine/deep_research +PYTHONPATH=src python main.py + +# 프론트엔드 (포트 3000) +cd src/frontend +npm run dev +``` + +### 5. 로컬 접속 +- Frontend: http://localhost:3000 +- AI Engine: http://localhost:8000 + +--- + +## AWS 인프라 구축 + +### Step 1: AWS CLI 설정 +```bash +aws configure +# Access Key ID: [YOUR_KEY] +# Secret Access Key: [YOUR_SECRET] +# Region: ap-northeast-2 +# Output: json +``` + +### Step 2: DynamoDB 테이블 생성 +```bash +# 분석 결과 캐시 (24시간 TTL) +aws dynamodb create-table \ + --region ap-northeast-2 \ + --table-name analysis_results \ + --attribute-definitions AttributeName=query_hash,AttributeType=S \ + --key-schema AttributeName=query_hash,KeyType=HASH \ + --billing-mode PAY_PER_REQUEST + +# 주가 정보 캐시 (5분 TTL) +aws dynamodb create-table \ + --region ap-northeast-2 \ + --table-name stock_prices \ + --attribute-definitions AttributeName=company_name,AttributeType=S \ + --key-schema AttributeName=company_name,KeyType=HASH \ + --billing-mode PAY_PER_REQUEST + +# Rate Limiting (1분 TTL) +aws dynamodb create-table \ + --region ap-northeast-2 \ + --table-name rate_limits \ + --attribute-definitions AttributeName=ip_minute,AttributeType=S \ + --key-schema AttributeName=ip_minute,KeyType=HASH \ + --billing-mode PAY_PER_REQUEST +``` + +### Step 3: VPC 및 보안 그룹 생성 +```bash +# VPC 생성 +aws ec2 create-vpc --cidr-block 10.0.0.0/16 --region ap-northeast-2 + +# 서브넷 생성 (2개 AZ) +aws ec2 create-subnet --vpc-id vpc-xxx --cidr-block 10.0.1.0/24 --availability-zone ap-northeast-2a +aws ec2 create-subnet --vpc-id vpc-xxx --cidr-block 10.0.2.0/24 --availability-zone ap-northeast-2c + +# ALB 보안 그룹 +aws ec2 create-security-group \ + --group-name ups-t3-alb-sg \ + --description "ALB Security Group" \ + --vpc-id vpc-xxx + +# HTTP/HTTPS 허용 +aws ec2 authorize-security-group-ingress --group-id sg-xxx --protocol tcp --port 80 --cidr 0.0.0.0/0 +aws ec2 authorize-security-group-ingress --group-id sg-xxx --protocol tcp --port 443 --cidr 0.0.0.0/0 + +# ECS 보안 그룹 +aws ec2 create-security-group \ + --group-name ups-t3-ecs-sg \ + --description "ECS Security Group" \ + --vpc-id vpc-xxx + +# ALB에서만 접근 허용 +aws ec2 authorize-security-group-ingress --group-id sg-yyy --protocol tcp --port 8000 --source-group sg-xxx +``` + +### Step 4: ALB 생성 +```bash +# ALB 생성 +aws elbv2 create-load-balancer \ + --name ups-t3-alb \ + --subnets subnet-xxx subnet-yyy \ + --security-groups sg-xxx \ + --region ap-northeast-2 + +# Target Group 생성 +aws elbv2 create-target-group \ + --name ups-t3-tg \ + --protocol HTTP \ + --port 8000 \ + --vpc-id vpc-xxx \ + --target-type ip \ + --health-check-path /health \ + --region ap-northeast-2 + +# HTTP Listener 생성 +aws elbv2 create-listener \ + --load-balancer-arn arn:aws:elasticloadbalancing:... \ + --protocol HTTP \ + --port 80 \ + --default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:... +``` + +### Step 5: HTTPS 리스너 추가 +```bash +# 자체 서명 인증서 생성 +openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes \ + -subj "/CN=ups-t3-alb-984329148.ap-northeast-2.elb.amazonaws.com" + +# ACM에 인증서 임포트 +aws acm import-certificate \ + --certificate fileb://cert.pem \ + --private-key fileb://key.pem \ + --region ap-northeast-2 + +# HTTPS Listener 생성 +aws elbv2 create-listener \ + --load-balancer-arn arn:aws:elasticloadbalancing:... \ + --protocol HTTPS \ + --port 443 \ + --certificates CertificateArn=arn:aws:acm:... \ + --default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:... +``` + +--- + +## 프론트엔드 배포 + +### Step 1: S3 버킷 생성 +```bash +BUCKET_NAME="ups-t3-frontend-$(date +%s)" +aws s3 mb s3://$BUCKET_NAME --region ap-northeast-2 + +# 정적 웹사이트 호스팅 설정 +aws s3 website s3://$BUCKET_NAME \ + --index-document index.html \ + --error-document 404.html + +# 퍼블릭 읽기 권한 +aws s3api put-bucket-policy --bucket $BUCKET_NAME --policy '{ + "Version": "2012-10-17", + "Statement": [{ + "Sid": "PublicReadGetObject", + "Effect": "Allow", + "Principal": "*", + "Action": "s3:GetObject", + "Resource": "arn:aws:s3:::'$BUCKET_NAME'/*" + }] +}' +``` + +### Step 2: 환경 변수 설정 +```bash +cd src/frontend + +# .env.production +cat > .env.production << EOF +NEXT_PUBLIC_API_URL=https://d31ad140yvex7c.cloudfront.net +EOF +``` + +### Step 3: 빌드 및 배포 +```bash +# 빌드 +npm run build + +# S3 업로드 +aws s3 sync out/ s3://ups-t3-frontend-1763878138 --region ap-northeast-2 --delete +``` + +### Step 4: CloudFront 배포 생성 +```bash +# CloudFront 배포 생성 (JSON 설정 필요) +aws cloudfront create-distribution --distribution-config file://cloudfront-config.json +``` + +**cloudfront-config.json 주요 설정:** +- Origins: S3 (정적 파일), ALB (API) +- Behaviors: + - `/` → S3 + - `/api/*` → ALB + - `/generate` → ALB + - `/job/*` → ALB +- SSL Certificate: CloudFront 기본 인증서 + +### Step 5: 캐시 무효화 +```bash +aws cloudfront create-invalidation \ + --distribution-id E1RLDWF8ZOYKW1 \ + --paths "/*" +``` + +--- + +## AI 엔진 배포 + +### Step 1: ECR 리포지토리 생성 +```bash +aws ecr create-repository \ + --repository-name ups-t3-ai-engine \ + --region ap-northeast-2 +``` + +### Step 2: Docker 이미지 빌드 +```bash +cd src/ai-engine + +# Dockerfile 생성 +cat > Dockerfile << 'EOF' +FROM python:3.9-slim + +WORKDIR /app + +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt + +COPY . . + +ENV PYTHONPATH=/app/src + +EXPOSE 8000 + +CMD ["python", "src/deep_research/main.py"] +EOF + +# 빌드 +docker build -t ups-t3-ai-engine . +``` + +### Step 3: ECR에 푸시 +```bash +# ECR 로그인 +aws ecr get-login-password --region ap-northeast-2 | \ + docker login --username AWS --password-stdin 663120345697.dkr.ecr.ap-northeast-2.amazonaws.com + +# 태그 및 푸시 +docker tag ups-t3-ai-engine:latest 663120345697.dkr.ecr.ap-northeast-2.amazonaws.com/ups-t3-ai-engine:latest +docker push 663120345697.dkr.ecr.ap-northeast-2.amazonaws.com/ups-t3-ai-engine:latest +``` + +### Step 4: ECS 클러스터 생성 +```bash +aws ecs create-cluster --cluster-name ups-t3-cluster --region ap-northeast-2 +``` + +### Step 5: Task Definition 생성 +```bash +# task-definition.json +cat > task-definition.json << 'EOF' +{ + "family": "ups-t3-task", + "networkMode": "awsvpc", + "requiresCompatibilities": ["FARGATE"], + "cpu": "1024", + "memory": "2048", + "containerDefinitions": [{ + "name": "ups-t3-container", + "image": "663120345697.dkr.ecr.ap-northeast-2.amazonaws.com/ups-t3-ai-engine:latest", + "portMappings": [{ + "containerPort": 8000, + "protocol": "tcp" + }], + "environment": [ + {"name": "UPSTAGE_API_KEY", "value": "your_key"}, + {"name": "TAVILY_API_KEY", "value": "your_key"} + ], + "logConfiguration": { + "logDriver": "awslogs", + "options": { + "awslogs-group": "/ecs/ups-t3", + "awslogs-region": "ap-northeast-2", + "awslogs-stream-prefix": "ecs" + } + } + }], + "executionRoleArn": "arn:aws:iam::663120345697:role/ecsTaskExecutionRole" +} +EOF + +aws ecs register-task-definition --cli-input-json file://task-definition.json +``` + +### Step 6: ECS Service 생성 +```bash +aws ecs create-service \ + --cluster ups-t3-cluster \ + --service-name ups-t3-service \ + --task-definition ups-t3-task \ + --desired-count 1 \ + --launch-type FARGATE \ + --network-configuration "awsvpcConfiguration={subnets=[subnet-xxx,subnet-yyy],securityGroups=[sg-yyy],assignPublicIp=ENABLED}" \ + --load-balancers "targetGroupArn=arn:aws:elasticloadbalancing:...,containerName=ups-t3-container,containerPort=8000" \ + --region ap-northeast-2 +``` + +--- + +## 도메인 설정 + +### Step 1: ACM 인증서 요청 (us-east-1) +```bash +aws acm request-certificate \ + --domain-name pinstock.site \ + --subject-alternative-names www.pinstock.site \ + --validation-method DNS \ + --region us-east-1 +``` + +### Step 2: DNS 검증 레코드 확인 +```bash +aws acm describe-certificate \ + --certificate-arn arn:aws:acm:us-east-1:...:certificate/... \ + --region us-east-1 \ + --query 'Certificate.DomainValidationOptions[*].[DomainName,ResourceRecord.Name,ResourceRecord.Value]' +``` + +### Step 3: 가비아 DNS 설정 +1. 가비아 로그인 → My가비아 → 서비스 관리 +2. `pinstock.site` → DNS 정보 → DNS 관리 +3. CNAME 레코드 추가 (인증서 검증용) +4. 인증서 검증 완료 대기 (5-30분) + +### Step 4: CloudFront에 커스텀 도메인 추가 +```bash +# CloudFront 설정 업데이트 +aws cloudfront update-distribution \ + --id E1RLDWF8ZOYKW1 \ + --distribution-config file://cloudfront-config-with-domain.json +``` + +### Step 5: 가비아에 CNAME 레코드 추가 +- 타입: `CNAME` +- 호스트: `@` (또는 `www`) +- 값: `d31ad140yvex7c.cloudfront.net` + +--- + +## 트러블슈팅 + +### 1. Mixed Content 오류 +**문제**: HTTPS 페이지에서 HTTP API 호출 차단 + +**해결**: +- ALB에 HTTPS 리스너 추가 +- CloudFront를 통해 API 프록시 +- 환경 변수를 HTTPS URL로 변경 + +### 2. 검색창 엔터 안 됨 +**문제**: 서버 컴포넌트에서 폼 제출 불가 + +**해결**: +```tsx +'use client' +import { useRouter } from 'next/navigation' + +const handleSubmit = (e: FormEvent) => { + e.preventDefault() + const query = formData.get('query') + router.push(`/analysis?query=${encodeURIComponent(query)}`) +} +``` + +### 3. CloudFront 504 Timeout +**문제**: AI 분석 시간 초과 (60초 제한) + +**해결**: +- Job 기반 비동기 처리 구현 +- `/generate` (Job 생성) + `/job/{id}` (폴링) + +### 4. ERR_CERT_AUTHORITY_INVALID +**문제**: 자체 서명 인증서 거부 + +**해결**: +- CloudFront를 통해 API 프록시 +- CloudFront의 유효한 인증서 사용 + +### 5. CORS 오류 +**문제**: 프론트엔드에서 API 호출 실패 + +**해결**: +```python +# FastAPI CORS 설정 +app.add_middleware( + CORSMiddleware, + allow_origins=["*"], + allow_methods=["*"], + allow_headers=["*"], +) +``` + +--- + +## 유지보수 + +### 프론트엔드 재배포 +```bash +cd src/frontend +npm run build +aws s3 sync out/ s3://ups-t3-frontend-1763878138 --region ap-northeast-2 --delete +aws cloudfront create-invalidation --distribution-id E1RLDWF8ZOYKW1 --paths "/*" +``` + +### AI 엔진 재배포 +```bash +cd src/ai-engine +docker build -t ups-t3-ai-engine . +docker tag ups-t3-ai-engine:latest 663120345697.dkr.ecr.ap-northeast-2.amazonaws.com/ups-t3-ai-engine:latest +docker push 663120345697.dkr.ecr.ap-northeast-2.amazonaws.com/ups-t3-ai-engine:latest + +# ECS 서비스 업데이트 +aws ecs update-service \ + --cluster ups-t3-cluster \ + --service ups-t3-service \ + --force-new-deployment \ + --region ap-northeast-2 +``` + +### 모니터링 +```bash +# ECS 서비스 상태 +aws ecs describe-services --cluster ups-t3-cluster --services ups-t3-service --region ap-northeast-2 + +# CloudWatch 로그 +aws logs tail /ecs/ups-t3 --follow --region ap-northeast-2 + +# CloudFront 통계 +aws cloudfront get-distribution --id E1RLDWF8ZOYKW1 +``` + +--- + +## 비용 최적화 + +### 현재 예상 비용 (월간) +- **ECS Fargate**: ~$30 (1 Task, 1vCPU, 2GB) +- **ALB**: ~$20 +- **CloudFront**: ~$5 (1GB 전송) +- **S3**: ~$1 +- **DynamoDB**: ~$5 (On-Demand) +- **총 예상**: ~$60/월 + +### 절감 방안 +1. ECS Task 개수 조정 (Auto Scaling) +2. CloudFront 캐싱 최적화 +3. DynamoDB TTL 활용 +4. S3 Lifecycle 정책 + +--- + +## 참고 자료 +- [AWS ECS 문서](https://docs.aws.amazon.com/ecs/) +- [CloudFront 문서](https://docs.aws.amazon.com/cloudfront/) +- [Next.js 배포 가이드](https://nextjs.org/docs/deployment) +- [FastAPI 문서](https://fastapi.tiangolo.com/) diff --git a/usecase/solar-political-influence-analyzer/docs/UPS_T3_Architecture.drawio b/usecase/solar-political-influence-analyzer/docs/UPS_T3_Architecture.drawio new file mode 100644 index 0000000..aaaaa9b --- /dev/null +++ b/usecase/solar-political-influence-analyzer/docs/UPS_T3_Architecture.drawio @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/usecase/solar-political-influence-analyzer/docs/images/pin_demo.gif b/usecase/solar-political-influence-analyzer/docs/images/pin_demo.gif new file mode 100644 index 0000000..ce01224 Binary files /dev/null and b/usecase/solar-political-influence-analyzer/docs/images/pin_demo.gif differ diff --git a/usecase/solar-political-influence-analyzer/docs/images/ups_t3_architecture_image1.png b/usecase/solar-political-influence-analyzer/docs/images/ups_t3_architecture_image1.png new file mode 100644 index 0000000..f2a708a Binary files /dev/null and b/usecase/solar-political-influence-analyzer/docs/images/ups_t3_architecture_image1.png differ diff --git a/usecase/solar-political-influence-analyzer/docs/srs_for_ui.md b/usecase/solar-political-influence-analyzer/docs/srs_for_ui.md new file mode 100644 index 0000000..8fa2d05 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/docs/srs_for_ui.md @@ -0,0 +1,666 @@ +# 정치 테마주 관계도 서비스 - UI 개발 명세서 + +## 📋 프로젝트 개요 + +### 서비스 목적 +정치인 이름이나 주요 정책을 입력하면, 그 인물 또는 정책과 경제적 이해관계가 있는 기업·산업군을 분석하여 주가, 뉴스, 연관 정책 등을 관계도(Graph) 형태로 시각화하는 서비스 + +### 제공 가치 +1. **정치 테마주 투자**: 선거 시즌이나 정책 이슈에 따른 테마주 흐름을 간편하게 제공 +2. **뉴스·데이터 해석 보조**: 정책과 기업 간의 연결을 직관적으로 파악 +3. **근거 중심 분석**: LLM과 실시간 데이터 기반 투명한 의사결정 도구 + +--- + +## 🎯 핵심 요구사항 + +### 1. 노드-엣지 구조 +``` +Input Node (정치인/정책) + ↓ +Policy Node (관련 정책) + ↓ +Sector Node (산업군) + ↓ +Enterprise Node (기업) +``` + +#### 노드 타입별 사양 + +| 노드 타입 | 모양 | 색상 | 추가 정보 | +|----------|------|------|-----------| +| Input | 원형 (Circle) | 빨강 (#e74c3c) | 검색 키워드 | +| Policy | 사각형 (Rectangle) | 파랑 (#3498db) | 카테고리 배지 (우측 하단) | +| Sector | 둥근 사각형 (Rounded Rect) | 초록 (#2ecc71) | - | +| Enterprise | 오각형 (Pentagon) | 보라 (#9b59b6) | 주가, 등락률 | + +#### 정책 카테고리 +- **경제**: 세제, 규제, 산업 정책 등 +- **안보**: 국방, 방산, 외교안보 등 +- **사회**: 복지, 교육, 의료 등 +- **외교**: 통상, 국제관계 등 + +### 2. 엣지 (관계선) +- **최소 1개 이상의 근거 필수**: 모든 엣지는 뉴스/보고서/공시 등 근거 자료 포함 +- **시각적 표현**: + - 굵기: weight (관계의 강도) + - 투명도: confidence (신뢰도) +- **관계 유형**: "정책 연관", "산업 영향", "기업 영향" 등 + +### 3. 근거 자료 표시 +모든 엣지는 다음 정보를 포함한 근거 제공: +```javascript +{ + title: "기사 제목", + source: "출처 (언론사명)", + url: "기사 링크", + summary: "요약 내용", + published_date: "발행일" +} +``` + +**툴팁 표시 방식**: +- 엣지에 마우스 오버 시 툴팁 출현 +- 근거 자료 리스트 표시 +- 링크 클릭 시 새 탭으로 기사 열람 + +### 4. 기업 노드 - 주가 정보 +```javascript +{ + stock_price: 152340, // 현재 주가 + stock_change: 2.3, // 등락률 (%) + stock_updated: "2025-10-28T10:00:00" // 갱신 시각 +} +``` + +**시각적 표시**: +- 빨간색: 상승 (+2.3%) +- 파란색: 하락 (-0.5%) +- 노드 하단에 표시 + +--- + +## 🖥️ 페이지 구성 + +### Page 1: 메인 검색 페이지 +``` +┌─────────────────────────────────────┐ +│ │ +│ 정치 테마주 관계도 │ +│ │ +│ 정치인 이름이나 정책을 입력하면 │ +│ 관련 기업과 산업의 관계를 │ +│ 한눈에 보여드립니다 │ +│ │ +│ ┌─────────────────────────┐ │ +│ │ [검색 입력창] [검색] │ │ +│ └─────────────────────────┘ │ +│ │ +│ 예시: [트럼프] [윤석열] [그린뉴딜] │ +│ │ +└─────────────────────────────────────┘ +``` + +**기능**: +- 검색어 입력 +- 예시 버튼 클릭으로 빠른 검색 +- Enter 키 또는 버튼 클릭으로 검색 실행 + +### Page 2: 로딩 페이지 +``` +┌─────────────────────────────────────┐ +│ │ +│ │ +│ [로딩 스피너] │ +│ │ +│ 관계도를 생성하고 있습니다... │ +│ │ +│ "트럼프" 관련 정책과 기업을 │ +│ 분석 중입니다 │ +│ │ +│ │ +└─────────────────────────────────────┘ +``` + +**기능**: +- 로딩 애니메이션 +- 검색어 표시 +- 2초 대기 후 결과 페이지 이동 + +### Page 3: 결과 페이지 (관계도) +``` +┌─────────────────────────────────────────┐ +│ [트럼프 테마주 관계도] [새로운 검색] │ +├─────────────────────────────────────────┤ +│ │ +│ ┌─────────────────────────────────┐ │ +│ │ │ │ +│ │ [그래프 시각화] │ │ +│ │ │ │ +│ │ ○ → □ → ▢ → ⬠ │ │ +│ │ │ │ +│ │ [범례] │ │ +│ │ ● 검색어 │ │ +│ │ ■ 정책 │ │ +│ │ ▢ 산업군 │ │ +│ │ ⬠ 기업 │ │ +│ └─────────────────────────────────┘ │ +│ │ +└─────────────────────────────────────────┘ +``` + +**기능**: +- 전체 관계도 한 화면에 표시 +- 드래그로 노드 이동 +- 줌 인/아웃 +- 노드/엣지 클릭 시 상세 정보 표시 +- 범례 표시 + +--- + +## 🎨 UI/UX 디자인 가이드 + +### 디자인 원칙 +1. **직관성**: 사용자가 바로 이해할 수 있는 시각적 표현 +2. **편의성**: 최소한의 클릭으로 원하는 정보 접근 + +### 색상 팔레트 +```css +/* 노드 색상 */ +--input-color: #e74c3c; /* 빨강 */ +--policy-color: #3498db; /* 파랑 */ +--sector-color: #2ecc71; /* 초록 */ +--enterprise-color: #9b59b6; /* 보라 */ + +/* 상태 색상 */ +--stock-up: #e74c3c; /* 상승 - 빨강 */ +--stock-down: #3498db; /* 하락 - 파랑 */ + +/* 배경 */ +--gradient-bg: linear-gradient(135deg, #667eea 0%, #764ba2 100%); +--white-bg: #ffffff; +--gray-bg: #f5f7fa; +``` + +### 타이포그래피 +```css +/* 폰트 */ +font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif; + +/* 크기 */ +--title-size: 3rem; /* 메인 타이틀 */ +--subtitle-size: 1.2rem; /* 서브타이틀 */ +--node-label-size: 14px; /* 노드 라벨 */ +--tooltip-size: 0.9rem; /* 툴팁 */ +``` + +### 레이아웃 +- **최대 너비**: 1400px +- **여백**: 20px +- **그래프 높이**: calc(100vh - 200px), 최소 600px + +--- + +## 🔧 기술 스택 + +### Frontend +- **React 18**: UI 컴포넌트 관리 +- **D3.js v7**: 그래프 시각화 +- **CSS3**: 스타일링 (Flexbox, Grid) + +### 시각화 라이브러리 +```javascript +// D3.js Force Simulation +d3.forceSimulation(nodes) + .force("link", d3.forceLink(edges).distance(150)) + .force("charge", d3.forceManyBody().strength(-300)) + .force("center", d3.forceCenter(0, 0)) + .force("collision", d3.forceCollide().radius(60)) +``` + +--- + +## 📱 반응형 디자인 + +### 데스크톱 (> 768px) +- 그래프 전체 표시 +- 범례 우측 상단 고정 +- 툴팁 최대 너비 400px + +### 모바일 (≤ 768px) +- 그래프 축소 표시 +- 범례 하단 이동 +- 툴팁 최대 너비 280px +- 터치 인터랙션 지원 + +### 반응형 브레이크포인트 +```css +/* 모바일 */ +@media (max-width: 768px) { + .main-title { font-size: 2rem; } + .graph-svg { min-height: 500px; } + .legend { position: relative; } +} +``` + +--- + +## 🎮 인터랙션 + +### 노드 인터랙션 +1. **호버**: 노드 밝기 증가, 툴팁 표시 +2. **클릭**: 노드 선택, 상세 정보 패널 (선택사항) +3. **드래그**: 노드 위치 이동 + +### 엣지 인터랙션 +1. **호버**: 색상 변경 (#667eea), 굵기 증가, 근거 툴팁 표시 +2. **클릭**: 근거 자료 확장 표시 (선택사항) + +### 줌/팬 인터랙션 +```javascript +const zoom = d3.zoom() + .scaleExtent([0.3, 3]) // 30% ~ 300% + .on("zoom", (event) => { + g.attr("transform", event.transform); + }); +``` + +--- + +## 📊 데이터 구조 + +### GraphResponse 스키마 +```javascript +{ + query: "트럼프", + generated_at: "2025-10-28T10:00:00Z", + nodes: [ + { + id: "input_트럼프", + label: "트럼프 대통령", + type: "input", + relevance: 1.0 + }, + { + id: "policy_세제완화", + label: "세제완화정책", + type: "policy", + relevance: 0.95, + category: "경제" + }, + { + id: "sector_은행", + label: "은행주", + type: "sector", + relevance: 0.85 + }, + { + id: "enterprise_JPM", + label: "JP모건", + type: "enterprise", + relevance: 0.8, + stock_price: 152340, + stock_change: 2.3, + stock_updated: "2025-10-28T09:30:00Z" + } + ], + edges: [ + { + source: "input_트럼프", + target: "policy_세제완화", + weight: 0.95, + confidence: 0.9, + relationship_type: "정책 연관", + evidences: [ + { + title: "트럼프 세제완화 정책 발표", + source: "Bloomberg", + url: "https://...", + summary: "법인세율 21%로 인하 계획 발표", + published_date: "2025-10-15" + } + ] + } + ] +} +``` + +--- + +## ✅ 핵심 체크리스트 + +### 필수 구현 사항 +- [ ] Input → Policy → Sector → Enterprise 4단계 노드 구조 +- [ ] 각 엣지마다 최소 1개 이상의 근거 자료 매핑 +- [ ] 정책 노드에 카테고리 라벨 (우측 하단) +- [ ] 기업 노드에 주가 및 등락률 표시 (빨강/파랑) +- [ ] 노드/엣지 호버 시 툴팁으로 근거 표시 +- [ ] 한 화면에 전체 관계도 표시 +- [ ] 드래그, 줌, 팬 인터랙션 +- [ ] 모바일/데스크톱 반응형 + +### 선택 구현 사항 +- [ ] 노드 클릭 시 우측 패널에 상세 정보 +- [ ] 근거 없는 엣지는 회색 처리 +- [ ] 실시간 주가 업데이트 +- [ ] 그래프 내보내기 (PNG, SVG) +- [ ] 검색 히스토리 + +--- + +## 🚀 개발 단계 + +### Phase 1: 기본 UI 구조 (완료) +- [x] 메인 검색 페이지 +- [x] 로딩 페이지 +- [x] 결과 페이지 레이아웃 + +### Phase 2: 그래프 시각화 (완료) +- [x] D3.js Force Simulation 구현 +- [x] 4가지 노드 타입 렌더링 +- [x] 엣지 연결 및 스타일링 + +### Phase 3: 인터랙션 (완료) +- [x] 드래그, 줌 기능 +- [x] 툴팁 구현 +- [x] 근거 자료 표시 + +### Phase 4: 데이터 연동 (다음 단계) +- [ ] Upstage API 연동 +- [ ] 웹 검색 API 연동 +- [ ] 주가 API 연동 +- [ ] 실시간 데이터 업데이트 + +### Phase 5: 최적화 (다음 단계) +- [ ] 성능 최적화 +- [ ] 로딩 상태 개선 +- [ ] 에러 핸들링 +- [ ] 접근성 개선 + +--- + +## 🔍 해결해야 할 핵심 이슈 + +### 1. 정치인 → 관련 정책 추출 +**문제**: 입력된 정치인과 연관된 정책을 어떻게 가져올 것인가? + +**해결 방안**: +``` +1. Upstage Solar LLM 활용 + - 프롬프트: "정치인 {name}의 주요 정책 의제를 분석해주세요" + - JSON 형식으로 정책 목록 반환 + +2. 웹 검색 + 추출 + - "{정치인명} 정책" 검색 + - 뉴스 기사에서 정책 키워드 추출 + - LLM으로 정리 및 분류 + +3. 정치 데이터베이스 활용 + - 국회 의안 데이터 + - 공약 데이터베이스 +``` + +### 2. 정책 → 영향 산업군 분류 +**문제**: 정책이 영향을 끼치는 산업군을 어떻게 구분하여 가져올 것인가? + +**해결 방안**: +``` +1. LLM 산업 분류 + - 프롬프트: "정책 {policy}이 영향을 미치는 산업군과 그 영향도를 분석해주세요" + - 산업 표준 분류 코드(KSIC) 활용 + +2. 키워드 매칭 + - 정책 키워드 → 산업군 매핑 테이블 + - "세제완화" → ["금융", "제조", "IT"] + +3. 웹 검색 분석 + - "{정책명} 산업 영향" 검색 + - 뉴스에서 언급된 산업군 추출 +``` + +### 3. 정치인 & 기업 이해관계 판단 +**문제**: 산업군에 속하는 기업이 정치인과 직간접적인 영향/이해관계가 있는지 어떻게 판단할 것인가? + +**해결 방안**: +``` +1. 뉴스 빈도 분석 + - "{정치인} + {기업명}" 동시 출현 빈도 + - 긍정/부정 감성 분석 + +2. 공시 및 보고서 분석 + - 기업 실적 보고서에서 정책 언급 + - 애널리스트 리포트 분석 + +3. 관계 점수화 + - 직접 관계: 정치인 발언/정책에서 기업 명시 + - 간접 관계: 산업군 전체에 영향 + - 신뢰도: 근거 자료 개수 및 출처 신뢰도 +``` + +### 4. 이해관계 근거 데이터 수집 +**문제**: 각 관계에 대한 근거 데이터(출처)를 어떻게 수집할 것인가? + +**해결 방안**: +``` +1. 웹 검색 API + - Google News API + - Bing News API + - 네이버 뉴스 API + - "{정치인} {정책} {기업}" 검색 + +2. 뉴스 크롤링 + - 주요 경제 매체 RSS + - 실시간 뉴스 수집 + - 기사 본문 추출 + +3. 공식 자료 + - 정부 정책 문서 + - 기업 공시 + - 증권사 리포트 + +4. LLM 요약 + - 긴 기사 → 핵심 요약 + - 중복 제거 + - 관련도 높은 순 정렬 +``` + +--- + +## 📝 API 연동 가이드 + +### Upstage API 활용 +```javascript +// 1. 정책 분석 +const analyzePolicy = async (politician) => { + const prompt = ` +다음 정치인의 주요 정책을 분석하고 JSON으로 반환해주세요: ${politician} + +형식: +{ + "policies": [ + { + "name": "정책명", + "category": "경제|안보|사회|외교", + "description": "정책 설명", + "affected_sectors": ["산업군1", "산업군2"] + } + ] +} +`; + + const response = await fetch('https://api.upstage.ai/v1/solar/chat/completions', { + method: 'POST', + headers: { + 'Authorization': `Bearer ${API_KEY}`, + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + model: 'solar-pro', + messages: [{ role: 'user', content: prompt }], + response_format: { type: 'json_object' } + }) + }); + + return await response.json(); +}; + +// 2. 기업 관계 분석 +const analyzeEnterpriseRelation = async (politician, sector, enterprise) => { + const prompt = ` +${politician}의 정책이 ${sector} 산업의 ${enterprise} 기업에 미치는 영향을 분석해주세요. + +다음 형식의 JSON으로 반환: +{ + "relationship_strength": 0.0-1.0, + "impact_type": "긍정적|부정적|중립적", + "description": "영향 설명" +} +`; + + // API 호출... +}; +``` + +### 웹 검색 API +```javascript +// 근거 뉴스 검색 +const searchEvidence = async (query) => { + // Google News API 또는 Bing News API + const response = await fetch(`https://api.news.com/search?q=${query}&count=5`); + const data = await response.json(); + + return data.articles.map(article => ({ + title: article.title, + source: article.source, + url: article.url, + summary: article.description, + published_date: article.publishedAt + })); +}; +``` + +### 주가 API +```javascript +// Alpha Vantage, Yahoo Finance API 등 +const getStockPrice = async (ticker) => { + const response = await fetch(`https://api.stock.com/quote/${ticker}`); + const data = await response.json(); + + return { + price: data.price, + change: data.change_percent, + updated_at: data.timestamp + }; +}; +``` + +--- + +## 🎯 성공 지표 + +### 사용성 +- [ ] 검색 후 3초 이내 결과 표시 +- [ ] 관계도 한 화면에 표시 +- [ ] 모든 엣지에 근거 자료 존재 +- [ ] 주가 정보 정확도 95% 이상 + +### 시각화 +- [ ] 노드/엣지 구분 명확 +- [ ] 직관적인 색상 사용 +- [ ] 툴팁 가독성 우수 +- [ ] 반응형 완벽 대응 + +### 데이터 품질 +- [ ] 정책 추출 정확도 85% 이상 +- [ ] 산업군 분류 정확도 80% 이상 +- [ ] 기업 관계 신뢰도 표시 +- [ ] 근거 자료 출처 명확 + +--- + +## 📚 참고 자료 + +### 유사 서비스 +- Bloomberg Terminal: 금융 데이터 시각화 +- Crunchbase: 기업 관계도 +- LittleSis: 정치-기업 관계 매핑 + +### 기술 문서 +- [D3.js Force Directed Graph](https://d3js.org/d3-force) +- [React Hooks Guide](https://react.dev/reference/react) +- [Upstage API Docs](https://docs.upstage.ai/) + +--- + +## 🔄 업데이트 로그 + +### v1.0 (2025-10-28) +- 기본 UI 구조 완성 +- 4단계 노드 구조 구현 +- 근거 자료 툴팁 구현 +- 주가 정보 표시 +- 모바일 반응형 지원 + +### v1.1 (예정) +- Upstage API 연동 +- 실시간 데이터 업데이트 +- 검색 히스토리 +- 그래프 내보내기 + +--- + +## 💡 개발 팁 + +### 1. D3.js 성능 최적화 +```javascript +// 노드 개수가 많을 때 +simulation.alphaDecay(0.05); // 빠른 수렴 +simulation.velocityDecay(0.8); // 안정성 + +// 최대 노드 수 제한 +if (nodes.length > 100) { + // 중요도 기준 필터링 + nodes = nodes.filter(n => n.relevance > 0.5); +} +``` + +### 2. 툴팁 위치 조정 +```javascript +// 화면 밖으로 나가지 않도록 +const tooltip = d3.select('.tooltip'); +const tooltipWidth = tooltip.node().offsetWidth; +const tooltipHeight = tooltip.node().offsetHeight; + +let left = event.pageX + 15; +let top = event.pageY - 15; + +if (left + tooltipWidth > window.innerWidth) { + left = event.pageX - tooltipWidth - 15; +} + +if (top + tooltipHeight > window.innerHeight) { + top = event.pageY - tooltipHeight + 15; +} +``` + +### 3. 모바일 터치 이벤트 +```javascript +// 터치 지원 +node.call(d3.drag() + .on("start", dragstarted) + .on("drag", dragged) + .on("end", dragended) + .touchable(true)); // 터치 활성화 +``` + +--- + +## 📞 문의 및 지원 + +프로젝트 관련 문의사항이나 개선 제안은 이슈를 통해 등록해주세요. + +--- + +**마지막 업데이트**: 2025-10-28 +**버전**: 1.0 +**작성자**: Claude AI \ No newline at end of file diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/.dockerignore b/usecase/solar-political-influence-analyzer/src/ai-engine/.dockerignore new file mode 100644 index 0000000..5cf8473 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/.dockerignore @@ -0,0 +1,9 @@ +tests +__pycache__/ +*.pyc +*.pyo +*.pyd +.env +.git +.venv/ +deep_research.egg-info/ \ No newline at end of file diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/.env.example b/usecase/solar-political-influence-analyzer/src/ai-engine/.env.example new file mode 100644 index 0000000..1d40fa6 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/.env.example @@ -0,0 +1,9 @@ +# 필수 API 키 +UPSTAGE_API_KEY=your_upstage_api_key_here +TAVILY_API_KEY=your_tavily_api_key_here + +# 선택 (LangSmith 추적용) +LANGCHAIN_TRACING_V2=false +LANGCHAIN_ENDPOINT=https://api.smith.langchain.com +LANGCHAIN_API_KEY= +LANGCHAIN_PROJECT= \ No newline at end of file diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/.gitignore b/usecase/solar-political-influence-analyzer/src/ai-engine/.gitignore new file mode 100644 index 0000000..4f746c3 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/.gitignore @@ -0,0 +1,7 @@ +.env +__pycache__ +.ipynb_checkpoints +.langgraph_api/ +deep_research.egg-info/ +*.pyc +tests \ No newline at end of file diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/Dockerfile b/usecase/solar-political-influence-analyzer/src/ai-engine/Dockerfile new file mode 100644 index 0000000..0ab468f --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/Dockerfile @@ -0,0 +1,23 @@ +FROM python:3.9-slim + +WORKDIR /app + +# Install dependencies +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt + +# Copy application code +COPY . . + +# Set Python path +ENV PYTHONPATH=/app/src + +# Expose port +EXPOSE 8000 + +# Health check +HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \ + CMD python -c "import requests; requests.get('http://localhost:8000/health')" + +# Run application +CMD ["python", "src/deep_research/main.py"] diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/README.md b/usecase/solar-political-influence-analyzer/src/ai-engine/README.md new file mode 100644 index 0000000..ebf0ac5 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/README.md @@ -0,0 +1,151 @@ +# Upstage_team3_deep_research + +# 🧠 Deep Research Agent +AI 기반 **정치–정책–산업–기업 영향 체인 분석 시스템** +FastAPI + LangGraph + Upstage Solar 객체 출력 기반 구조화 리서치 + +--- + +## 🚀 Features +- 자연어로 질의하면 **정책 → 산업 → 기업 → 영향 체인**을 자동 탐지 +- Tavily 검색 + Upstage Solar 모델 기반 **근거 중심 리서치** +- 모든 결과를 **InfluenceReport(JSON)** 형태로 반환 +- Docker 기반으로 쉽게 실행 가능 + +--- + +# 🛠️ Requirements +- Docker Desktop +- .env 파일 설정 + +`.env` 예시: +``` + +UPSTAGE_API_KEY=your_key_here +TAVILY_API_KEY=your_key_here + +```` + +--- + +# 🏗️ Docker Build + +프로젝트 루트에서 실행: + +```bash +docker build -t deep-research . +```` + +--- + +# ▶️ Run (with env file) + +```bash +docker run -p 8000:8000 --env-file .env deep-research +``` + +--- + +# 🌐 API Docs + +브라우저에서 접속: + +``` +http://localhost:8000/docs +``` + +Swagger UI에서 API 테스트 가능. + +--- + +# 📡 API 사용 예시 + +--- + +## 1) 🔍 기본 POST 요청 (curl) + +```bash +curl -X POST "http://localhost:8000/generate" \ + -H "Content-Type: application/json" \ + -d '{ + "query": "문재인 정부의 에너지 정책" + }' +``` + +--- + +## 💡 예상 출력(JSON 구조) + +```json +{ + "report_title": "문재인 정부의 정치·경제·기업 영향 분석", + "time_range": "2017–2025", + "influence_chains": [ + { + "politician": "문재인", + "policy": "재생에너지 확대 정책", + "industry_or_sector": "태양광 산업", + "companies": ["한국동서발전", "한국남동발전"], + "impact_description": "보조금 확대의 영향으로 시장 점유율 증가 및 산업 규제 변화", + "evidence": [ + { + "source_title": "정부주도 태양광 정책 수혜기업", + "url": "https://www.skyedaily.com/news/news_spot.html?ID=83547" + } + ] + } + ], + "notes": "직접적인 로비 증거는 없음." +} +``` + +--- + +# 📁 프로젝트 구조 + +``` +. +├── src/deep_research/ +│ ├── research_agent_full.py +│ ├── multi_agent_supervisor.py +│ ├── state_scope.py +│ ├── utils.py +│ └── ... +├── pyproject.toml +├── Dockerfile +├── uv.lock +├── README.md +├── main.py ← FastAPI 엔트리포인트 +└── .env +``` + +--- + +# 🧪 테스트 시나리오 + +### 1) 도커 빌드 + +```bash +docker build -t deep-research . +``` + +### 2) 도커 실행 + +```bash +docker run -p 8000:8000 --env-file .env deep-research +``` + +### 3) curl 테스트 + +```bash +curl -X POST "http://localhost:8000/generate" \ + -H "Content-Type: application/json" \ + -d '{"query": "윤석열 정부의 반도체 정책 영향"}' +``` + +### 4) JSON 출력 확인 + +Swagger UI에서도 확인 가능 +[http://localhost:8000/docs](http://localhost:8000/docs) + +--- diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/dev_test/influence_gold.jsonl b/usecase/solar-political-influence-analyzer/src/ai-engine/dev_test/influence_gold.jsonl new file mode 100644 index 0000000..ee4563f --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/dev_test/influence_gold.jsonl @@ -0,0 +1,19 @@ +{"question": "윤석열", "gold_report": {"report_title": "윤석열 전 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2025년 11월 24일 기준", "question_answer": "윤석열 전 대통령은 원전 확대 정책으로 두산에너빌리티와 한국전력 등 원전 관련 기업에 수혜를 주었으며, 동시에 원전 중심 기조는 한화솔루션의 태양광 사업에 부정적 영향을 미쳤습니다. 또한 국방비 증액과 기술 육성 정책으로 방산 및 첨단산업 기업의 성장에 기여했으며, 미국·일본과의 동맹 강화 및 중동 경제협력 확대를 통해 국제적 영향력을 도모했습니다.", "influence_chains": [{"politician": "윤석열", "policy": "원전 확대 정책", "industry_or_sector": "에너지/원전", "companies": ["두산에너빌리티"], "impact_description": "윤석열 정부가 신한울 3·4호기 건설 등 원전 사업을 재개하면서 두산에너빌리티가 원전 주기기 제작 수주와 SMR 기술 개발 지원을 받는 등 직접적 수혜를 입었습니다:contentReference[oaicite:0]{index=0}. 글로벌 에너지 위기 속 원전 수요 증가로 해당 기업의 재무 실적도 개선되었습니다.", "evidence": [{"source_title": "윤석열 정책 수혜주 2편] 전 두산중공업(현 두산에너빌리티), 친원전 ...", "url": "https://contents.premium.naver.com/richplatform/therichplatform/contents/220416185027884GB"}]}, {"politician": "윤석열", "policy": "원전 중심 에너지정책", "industry_or_sector": "신재생에너지/태양광", "companies": ["한화솔루션"], "impact_description": "원전 위주의 에너지 정책으로 국내 태양광 수요가 위축되면서 한화솔루션의 태양광 사업 실적이 부진해졌습니다. 한편 미국의 IRA 정책 등에 힘입어 한화솔루션은 베트남·미국에 투자하며 해외 시장을 공략했고, 국방 분야 SMR 추진으로 일부 수혜를 보았습니다:contentReference[oaicite:1]{index=1}:contentReference[oaicite:2]{index=2}.", "evidence": [{"source_title": "엇갈린 K-태양광 실적⋯OCI 웃고 한화 울고", "url": "https://www.etoday.co.kr/news/view/2524466"}, {"source_title": "[이재명 시대, 이 기업을 주목하라]⑩ 한화솔루션ㆍOCI홀딩스", "url": "https://www.dnews.co.kr/uhtml/view.jsp?idxno=202507031419058310351"}]}, {"politician": "윤석열", "policy": "국방·기술 육성 정책", "industry_or_sector": "방위산업/첨단기술", "companies": ["한화에어로스페이스"], "impact_description": "윤석열 정부는 국방예산 증액과 12대 국가전략기술 육성을 추진하여 한화에어로스페이스 등 방위산업 기업의 수주 확대와 R&D 투자를 뒷받침했습니다:contentReference[oaicite:3]{index=3}:contentReference[oaicite:4]{index=4}. 이를 통해 국내 방산업체들은 첨단 무기 개발과 수출에 탄력을 받았습니다.", "evidence": [{"source_title": "尹 취임 2년차, 정책수혜株가 뜬다…방산·원전·콘텐츠株 주목 - 한국경제", "url": "https://www.hankyung.com/economy/article/2023050451426"}]}], "notes": "모든 정보는 2025년 11월 24일 기준이며, 윤석열 전 대통령의 정책들은 현재 이재명 정부에서 수정 또는 재평가되고 있습니다. 일부 데이터는 언론 보도와 간접 추론을 기반으로 합니다."}} +{"question": "이재명", "gold_report": {"report_title": "이재명 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2025년 11월 24일 기준", "question_answer": "이재명 대통령은 AI와 신재생에너지 육성 정책을 통해 삼성전자, 한화솔루션 등 미래 산업 기업들의 성장동력을 마련했으며, 남북 관계 개선 구상을 바탕으로 개성공단 입주 기업과 대북 사업 분야에도 긍정적 기대를 불러일으켰습니다. 동시에 지역화폐 지원 등 중소상공인 활성화 정책으로 핀테크 기업들의 수혜를 도모하고 있습니다.", "influence_chains": [{"politician": "이재명", "policy": "AI 산업 육성 정책", "industry_or_sector": "ICT/인공지능", "companies": ["네이버", "SK텔레콤"], "impact_description": "이재명 정부는 'AI 3대 강국 도약'을 기치로 AI 연구개발을 적극 지원하고 있습니다. 그 결과 네이버, SK텔레콤 등 국내 AI 선도 기업들이 정부 주도 ‘국가대표 AI 기업’으로 선정되어 AI 모델 개발 프로젝트에 참여하며 주가와 투자심리가 개선되었습니다:contentReference[oaicite:5]{index=5}:contentReference[oaicite:6]{index=6}. 정부의 지속적인 지원으로 해당 기업들은 AI 인프라 확대와 글로벌 경쟁력 강화의 혜택을 보고 있습니다.", "evidence": [{"source_title": "이재명정부 5년 청사진 곧 등장…장밋빛전망 가득한 ‘3대 정책 수혜주’", "url": "https://www.ledesk.co.kr/view.php?uid=13714"}]}, {"politician": "이재명", "policy": "신재생에너지 확대 정책", "industry_or_sector": "에너지/신재생", "companies": ["한화솔루션", "씨에스윈드"], "impact_description": "탄소중립 실현과 에너지 전환 가속화 목표 아래 이재명 정부는 풍력·태양광 산업 육성에 박차를 가하고 있습니다. 이에 따라 국내 1위 태양광 기업 한화솔루션과 풍력 설비 업체 씨에스윈드 등이 정책적 지원으로 실적 개선과 성장성 확보에 긍정적 영향을 받고 있습니다:contentReference[oaicite:7]{index=7}:contentReference[oaicite:8]{index=8}. 또한 전력 인프라 분야 기업들(HD현대일렉트릭 등)도 재생에너지 확대에 따른 투자 확대 수혜주로 부각되었습니다.", "evidence": [{"source_title": "이재명정부 5년 청사진 곧 등장…장밋빛전망 가득한 ‘3대 정책 수혜주’", "url": "https://www.ledesk.co.kr/view.php?uid=13714"}]}, {"politician": "이재명", "policy": "남북 경협 재개 구상", "industry_or_sector": "남북경협/개성공단", "companies": ["좋은사람들", "아난티"], "impact_description": "이재명 대통령이 남북 대화 재개와 접경지역 개발 의지를 밝힘에 따라 개성공단 재가동 등 남북경협 기대감이 높아졌습니다. 이에 개성공단에 공장을 둔 속옷 업체 좋은사람들, 금강산 관광 관련 리조트 사업을 했던 아난티 등의 주가가 급등하는 등 직접적 수혜 기대가 나타났습니다:contentReference[oaicite:9]{index=9}:contentReference[oaicite:10]{index=10}. 정부의 대북 정책 기조 변화로 이들 남북경협 테마 기업들은 향후 장기적 성과에 대한 기대를 모으고 있습니다.", "evidence": [{"source_title": "문재인 정책株, 4대강 복원·개성공단 관련주 급등...테마주는 약세", "url": "https://www.thevaluenews.co.kr/news/6918"}, {"source_title": "남북관계 개선에 남북경협주 들썩", "url": "https://www.ledesk.co.kr/view.php?uid=13714"}]}], "notes": "이재명 대통령의 영향력 분석은 2025년 11월 기준이며, 증권가의 기대 심리와 정책 발표에 따른 시장 반응을 기반으로 작성되었습니다. 일부 연관 기업의 실적 개선은 예상에 따른 것이며 실제 정책 효과는 향후 평가가 필요합니다."}} +{"question": "문재인", "gold_report": {"report_title": "문재인 전 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2017–2022", "question_answer": "문재인 전 대통령은 탈원전과 그린뉴딜 정책을 추진하여 태양광·풍력 등 신재생에너지 산업을 육성했고, 4대강 보 철거와 생태 복원 정책으로 환경 관련 기업에 새로운 기회를 제공했습니다. 또한 남북 화해 기조를 바탕으로 개성공단 재가동을 모색하며 남북경협 관련 기업들의 주가에 영향을 미쳤으며, 수소경제 등 미래 산업 투자로 현대모비스 등 친환경차 부품 기업이 성장하는 계기를 마련했습니다.", "influence_chains": [{"politician": "문재인", "policy": "탈원전 및 재생에너지 정책", "industry_or_sector": "에너지/태양광", "companies": ["한화솔루션", "OCI"], "impact_description": "문재인 정부는 신규 원전 건설 백지화와 신재생에너지 비중 확대를 추진하여 태양광 등 친환경 에너지 업계를 부양했습니다. 이로 인해 국내 태양광 대표 기업 한화솔루션과 폴리실리콘 생산업체 OCI 등이 정부 보조금과 시장 확대의 혜택을 입어 실적이 개선되고 주가가 상승했습니다:contentReference[oaicite:11]{index=11}:contentReference[oaicite:12]{index=12}. 반면 원전 관련 산업은 위축되었으나 재생에너지 분야는 정책 지원에 힘입어 성장 기반을 마련했습니다.", "evidence": [{"source_title": "문재인 정책株, 4대강 복원·개성공단 관련주 급등...테마주는 약세", "url": "https://www.thevaluenews.co.kr/news/6918"}]}, {"politician": "문재인", "policy": "4대강 복원 정책", "industry_or_sector": "환경/건설", "companies": ["자연과환경", "이화공영"], "impact_description": "4대강 사업으로 건설된 보의 생태계 영향 조사와 개방을 추진하면서, 하천 환경 복원 사업에 참여하는 자연과환경, 이화공영 등의 환경 토목 업체들이 사업 기회를 얻었습니다. 문재인 당선 직후 이러한 4대강 복원 관련주들은 강세를 보였으며:contentReference[oaicite:13]{index=13}:contentReference[oaicite:14]{index=14}, 향후 준설 및 생태 복원 공사 수주에 대한 기대감으로 주가가 크게 상승했습니다.", "evidence": [{"source_title": "문재인 정책株, 4대강 복원·개성공단 관련주 급등...테마주는 약세", "url": "https://www.thevaluenews.co.kr/news/6918"}]}, {"politician": "문재인", "policy": "남북 경협 및 개성공단 정책", "industry_or_sector": "남북경협/제조", "companies": ["신원", "좋은사람들"], "impact_description": "문재인 정부의 남북 화해 기조로 개성공단 재가동과 남북 경협 확대에 대한 기대가 높아지면서, 개성공단에 생산기지를 둔 의류업체 신원과 속옷 제조사 좋은사람들 등이 큰 폭의 주가 상승을 보였습니다:contentReference[oaicite:15]{index=15}:contentReference[oaicite:16]{index=16}. 이는 남북 경제협력 재개 가능성에 따른 수혜 전망으로, 해당 기업들은 일시적으로 높은 시장 관심을 받았습니다.", "evidence": [{"source_title": "문재인 정책株, 4대강 복원·개성공단 관련주 급등...테마주는 약세", "url": "https://www.thevaluenews.co.kr/news/6918"}]}, {"politician": "문재인", "policy": "수소경제 및 혁신산업 육성", "industry_or_sector": "미래차/배터리", "companies": ["현대모비스", "LG화학"], "impact_description": "문재인 정부는 수소경제 활성화와 전기차 지원 등 혁신성장 정책을 추진하여 현대모비스 등 수소차 부품기업과 LG화학 배터리사업부(현 LG에너지솔루션) 등이 전략적 혜택을 보았습니다:contentReference[oaicite:17]{index=17}:contentReference[oaicite:18]{index=18}. 현대모비스는 수소차 핵심부품 생산라인 증설로 수혜주로 부각되었고, LG화학도 전기차 배터리 투자 확대 정책에 힘입어 글로벌 점유율 상승을 이뤘습니다.", "evidence": [{"source_title": "문재인 대통령 신년회견 수혜株는…수소경제·스마트공장·인터넷銀", "url": "https://www.hankyung.com/article/2019011165741"}]}], "notes": "본 분석은 2017년부터 2022년까지의 문재인 정부 기간을 대상으로 하였으며, 정책 발표 직후 관련 기업들의 주가 동향과 산업계 반응을 토대로 작성되었습니다. 실제 정책 효과와 기업 실적 사이에는 시차가 있을 수 있으며, 일부 평가는 예상에 기반하고 있습니다."}} +{"question": "박근혜", "gold_report": {"report_title": "박근혜 전 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2013–2017", "question_answer": "박근혜 전 대통령은 창조경제와 문화융성 정책을 통해 사물인터넷·3D프린팅 등 신산업 분야 스타트업과 한류 콘텐츠 기업들의 성장을 도모했습니다. 또한 중동 순방 경제외교를 통해 대형 건설사의 해외수주를 지원했고, 부동산 활성화를 위한 규제 완화로 건설경기에 긍정적인 영향을 미쳤습니다. 그러나 최순실 사태로 일부 기업과의 부정적 연결 고리가 드러나며 정책 추진에 대한 신뢰성이 타격을 입었습니다.", "influence_chains": [{"politician": "박근혜", "policy": "창조경제 산업육성", "industry_or_sector": "ICT/신산업", "companies": ["TPC(티피씨)", "효성ITX"], "impact_description": "박근혜 정부는 ICT 기반 창조경제를 내세워 사물인터넷, 3D프린팅 등 4차산업혁명 관련 기업을 지원했습니다. 그 영향으로 3D 프린터 제조사 TPC 등 관련주들이 정책 발표 직후 급등하는 등 수혜를 입었고:contentReference[oaicite:19]{index=19}:contentReference[oaicite:20]{index=20}, 효성ITX 등 일부 IT기업 주가는 창조경제 언급 때마다 상승세를 보였습니다. 이는 정부의 규제 완화와 R&D 지원에 대한 기대감이 해당 기업들의 성장 모멘텀으로 작용한 사례입니다.", "evidence": [{"source_title": "[상반기 달군 테마주] 朴대통령 “창조경제” 발언에 사물인터넷株 '고공행진'", "url": "https://www.etoday.co.kr/news/view/932921"}]}, {"politician": "박근혜", "policy": "문화융성 정책", "industry_or_sector": "문화콘텐츠/미디어", "companies": ["CJ E&M", "팬엔터테인먼트"], "impact_description": "한류 확산과 문화콘텐츠 산업 육성을 위한 문화융성 정책으로, CJ E&M과 팬엔터테인먼트 같은 드라마·예능 제작사는 정부의 펀드 조성 및 해외진출 지원에 힘입어 사업 확장에 긍정적 영향을 받았습니다:contentReference[oaicite:21]{index=21}:contentReference[oaicite:22]{index=22}. 국내 미디어 기업들은 정책 수혜 기대 속에 투자와 제작이 활성화되었으며, 문화콘텐츠 수출 증대로 이어지는 성과를 거두었습니다.", "evidence": [{"source_title": "신정부 정책 수혜株..코스닥을 주목하라 - 뉴스토마토", "url": "https://www.newstomato.com/ReadNews.aspx?no=333218"}]}, {"politician": "박근혜", "policy": "중동 순방 경제외교", "industry_or_sector": "건설/인프라", "companies": ["현대건설", "대우건설"], "impact_description": "박근혜 정부 시절 적극적인 정상외교를 통해 중동지역 인프라 사업을 수주하도록 지원한 결과, 현대건설과 대우건설 등 국내 대형 건설사들이 이란·중동 시장에서 대규모 공사 계약을 체결하는 성과를 거두었습니다. 2015년 이란 방문 당시 수십조 원 규모의 MOU가 체결되는 등 이러한 경제외교는 건설주에 호재로 작용하여 주가 상승을 이끌기도 했습니다.", "evidence": [{"source_title": "박근혜 대통령, 경제사절단과 순방 성과 논의 / YTN", "url": "https://www.ytn.co.kr/_ln/0101_201603171803123166"}]}, {"politician": "박근혜", "policy": "부동산 규제 완화", "industry_or_sector": "건설/부동산", "companies": ["현대산업개발", "호반건설"], "impact_description": "취득세 영구 인하, 분양가 상한제 탄력운영 등 부동산 활성화 정책을 펼치며 주택시장이 회복되자, HDC현대산업개발과 호반건설 등 국내 건설사들의 분양 실적과 주가에 긍정적 효과가 나타났습니다:contentReference[oaicite:23]{index=23}:contentReference[oaicite:24]{index=24}. 정부가 다주택자 양도세 중과 폐지 등 추가 부동산 대책을 내놓을 것이라는 전망 속에 건설업종 전반에 투자심리가 개선되었습니다.", "evidence": [{"source_title": "신정부 정책 수혜株..코스닥을 주목하라 - 뉴스토마토", "url": "https://www.newstomato.com/ReadNews.aspx?no=333218"}]}], "notes": "2013–2017년 박근혜 정부 기간을 대상으로 하였으며, 정책 발표와 해외 순방 시점의 업계 동향을 중심으로 서술했습니다. 창조경제 추진과 문화융성 정책은 초기 시장 기대를 모았으나, 말기에 불거진 국정농단 사건으로 일부 기업과 정책 간의 부정적 영향도 고려해야 합니다."}} +{"question": "이명박", "gold_report": {"report_title": "이명박 전 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2008–2013", "question_answer": "이명박 전 대통령은 4대강 개발 사업을 추진하여 삼성물산 등 대형 건설사가 대규모 토목 공사를 수주하는 혜택을 누렸으며, 해외 자원개발과 원전 수출 외교로 한국전력, 현대건설 등이 글로벌 프로젝트에 참여하는 성과를 거두었습니다. 한편 법인세 인하와 친기업 정책을 통해 대기업들의 투자 환경을 개선시켰으나, 부작용으로 부의 양극화 논란도 야기되었습니다.", "influence_chains": [{"politician": "이명박", "policy": "4대강 사업 추진", "industry_or_sector": "건설/토목", "companies": ["삼성물산", "현대건설"], "impact_description": "이명박 정부의 4대강 정비 사업으로 국내 주요 건설사들이 대규모 준설과 보 건설 공사를 맡아 막대한 공사 물량을 수행했습니다. 특히 삼성물산은 4대강 사업 최대 수혜 기업으로 지목될 만큼 많은 공사를 수주하여 매출 증대에 기여했고:contentReference[oaicite:25]{index=25}, 현대건설을 비롯한 대형 건설사들도 토목 매출이 크게 늘어나며 단기적인 호황을 누렸습니다.", "evidence": [{"source_title": "4대강사업 최대 수혜는 '삼성건설'", "url": "https://ko.wikipedia.org/wiki/4%EB%8C%80%EA%B0%95_%EC%A0%95%EB%B9%84_%EC%82%AC%EC%97%85"}]}, {"politician": "이명박", "policy": "원전 수출 외교", "industry_or_sector": "에너지/원자력", "companies": ["한국전력", "현대건설"], "impact_description": "2009년 이명박 정부는 UAE에 한국형 원자력발전소 4기를 수출하는 대형 계약(약 20조 원 규모)을 따냈습니다:contentReference[oaicite:26]{index=26}. 이 원전 수주 성공으로 한국전력은 글로벌 원전사업 주관사로서 국제 위상이 높아졌고, 현대건설 등 참여 건설사들은 해외 원전 건설 공사를 수행하며 수익과 기술경쟁력을 확보하는 성과를 올렸습니다. 이는 대통령의 적극적인 비즈니스 외교가 결정적인 역할을 한 사례입니다:contentReference[oaicite:27]{index=27}.", "evidence": [{"source_title": "임종석 UAE 방문 논란…한국전력 2009년 UAE 원전 수주", "url": "https://weekly.chosun.com/client/news/viw.asp?ctcd=C09&nNewsNumb=002587100013"}, {"source_title": "아랍에미리트(UAE) 원전의 진실 - 동아일보", "url": "https://www.donga.com/news/Politics/article/all/20180106/88052120/1"}]}, {"politician": "이명박", "policy": "법인세 인하 등 친기업 정책", "industry_or_sector": "재계/대기업", "companies": ["삼성전자", "현대자동차"], "impact_description": "이명박 정부는 법인세 최고세율을 25%에서 22%로 인하하고 각종 규제를 완화하는 친기업 정책을 펼쳤습니다. 그 결과 삼성전자, 현대자동차 등 대기업들은 세 부담 경감으로 이익이 증가하고 잉여현금이 늘어나 대규모 투자와 배당을 확대했습니다. 다만 이러한 혜택은 주로 대기업에 집중되어 중소기업 및 소득분배 측면에서는 한계가 있다는 지적도 있었습니다.", "evidence": [{"source_title": "20대 기업 법인세 부담 감소…투자 대비 배당↑", "url": "https://www.hankyung.com/economy/article/201301244074g"}]}], "notes": "2008–2013년 이명박 정부 기간 동안의 주요 경제정책 영향을 정리했습니다. 당시 대규모 국책사업과 해외사업 성과에 초점을 맞추었으며, 정책의 긍정적 효과와 함께 논란이 된 부분(예: 4대강 환경 문제, 부의 편중 현상)도 존재함을 유의해야 합니다."}} +{"question": "홍준표", "gold_report": {"report_title": "홍준표 대구시장의 정치·경제 영향력 네트워크 분석", "time_range": "2025년 11월 24일 기준", "question_answer": "홍준표 대구시장은 대구경북 통합신공항 건설 추진을 통해 대우건설, 화성산업 등 지역 건설사에 대규모 사업 참여 기회를 제공하고 있습니다. 또한 지방정부 차원의 규제 완화와 기업 유치 노력을 통해 대구 지역 산업단지의 투자 활성화를 도모하고 있습니다. 다만 강성 발언과 중앙정치와의 마찰로 정책 추진 과정에서 잡음이 발생하기도 합니다.", "influence_chains": [{"politician": "홍준표", "policy": "대구경북 통합신공항 건설 추진", "industry_or_sector": "건설/지역개발", "companies": ["대우건설", "서한"], "impact_description": "홍준표 시장이 주도하는 대구경북 신공항 건설 사업으로 대우건설을 비롯한 지역 건설사 서한 등이 특수목적법인(SPC) 구성과 사업계획 수립 용역에 참여하고 있습니다:contentReference[oaicite:28]{index=28}. 약 11조 원 규모로 추정되는 공항 및 신도시 개발 사업은 해당 건설사들에게 막대한 수주 기회를 제공해 지역 건설경기를 부양할 것으로 기대됩니다.", "evidence": [{"source_title": "대우건설, TK신공항 건설 주관사 유력…'지역 3社' 화성·서한 - 경북일보", "url": "https://www.kyongbuk.co.kr/news/articleView.html?idxno=4012068"}]}, {"politician": "홍준표", "policy": "대구 산단 규제 완화 및 기업 유치", "industry_or_sector": "지역산업/제조업", "companies": ["삼성메디슨", "홈센타홀딩스"], "impact_description": "홍준표 시장은 대구 국가산업단지의 규제를 완화하고 투자 인센티브를 제공하여 대기업과 중견기업을 대구로 유치하고 있습니다. 최근 삼성메디슨의 의료산업 투자 유치로 의료기기 클러스터에 활력이 돌았고, 지역 건축자재 기업 홈센타홀딩스는 신공항 수혜 기대와 산업단지 투자 확대로 성장 동력을 얻고 있습니다. 이러한 기업 유치 노력은 지역 경제 기반을 강화하는 데 기여하고 있습니다.", "evidence": [{"source_title": "홈센타홀딩스와 홍준표 테마주: 대구 신공항과 지역 건축 자재 강자의 ...", "url": "https://redbluepurple.tistory.com/entry/%ED%99%8D%EC%A4%80%ED%8F%AC-%ED%85%8C%EB%A7%88%EC%A3%BC"}]}], "notes": "홍준표 시장에 대한 분석은 2025년 말 현재 진행 중인 지역 개발 프로젝트에 초점을 맞추었으며, 중앙정부 지원 여부와 정치적 변수에 따라 사업 추진 속도가 달라질 수 있습니다. 일부 기업 언급은 향후 수혜 전망에 근거한 것입니다."}} +{"question": "안철수", "gold_report": {"report_title": "안철수 의원의 정치·경제 영향력 네트워크 분석", "time_range": "2025년 11월 24일 기준", "question_answer": "안철수 의원은 벤처기업인 출신답게 ICT 산업과 스타트업 육성을 강조하여 안랩 등 소프트웨어 기업과 코스닥 벤처시장에 긍정적 영향을 미쳤습니다. 4차 산업혁명 및 코로나19 대응 과정에서 IT 혁신과 백신 개발 지원을 주창하며 관련 업계의 성장을 뒷받침했습니다. 다만 정치 행보에 따른 테마주 변동성도 커, 총리설 등으로 안랩 주가가 급등락하는 모습이 나타났습니다.", "influence_chains": [{"politician": "안철수", "policy": "소프트웨어·스타트업 육성", "industry_or_sector": "IT/벤처", "companies": ["안랩", "카카오벤처스"], "impact_description": "안철수 의원은 창업 활성화와 코딩교육 강화 등 IT 인재 양성 정책을 지속적으로 주장해왔습니다. 이러한 흐름 속에 그의 경영철학이 반영된 보안기업 안랩은 국내 소프트웨어 육성 분위기에서 꾸준한 성장을 이어갔습니다. 또한 안 의원이 벤처 생태계 조성을 강조함에 따라 카카오벤처스 등 스타트업 투자업계에도 긍정적 인식이 확산되어 투자가 활성화되는 효과가 있었습니다.", "evidence": [{"source_title": "안랩, 소프트웨어정책 영향으로 성장세 지속", "url": "https://www.sisajournal.com/news/articleView.html?idxno=235310"}]}, {"politician": "안철수", "policy": "코로나19 백신 개발 지원", "industry_or_sector": "제약/백신", "companies": ["SK바이오사이언스"], "impact_description": "의사 출신인 안철수 의원은 코로나19 국면에서 국내 백신 개발의 중요성을 역설하며 범정부 지원을 촉구했습니다. 그에 따라 SK바이오사이언스는 정부로부터 임상시험 비용 지원과 행정절차 간소화 혜택을 받아 국산 백신 개발을 가속화할 수 있었고:contentReference[oaicite:29]{index=29}:contentReference[oaicite:30]{index=30}, 결과적으로 국내 백신 주권 확보와 해당 기업의 위상 제고로 이어졌습니다.", "evidence": [{"source_title": "정부, 코로나19 치료제·백신 개발 임상 비용 940억원 지원 - 정책브리핑", "url": "https://www.korea.kr/news/policyNewsView.do?newsId=148878275"}]}, {"politician": "안철수", "policy": "정치 테마주 변동", "industry_or_sector": "주식시장/테마주", "companies": ["안랩"], "impact_description": "안철수 의원의 정치적 입지 변화는 최대주주로 있는 안랩 주가에 직결되었습니다. 2022년 대통령직 인수위원장 시절 ‘안철수 총리 기용설’이 돌자 안랩 주가가 보름 만에 148% 급등하며 사상 최고가를 경신했고:contentReference[oaicite:31]{index=31}, 이후 총리직 고사 소식에 9% 이상 폭락하는 등:contentReference[oaicite:32]{index=32} 정치 테마주로서 급등락을 반복했습니다. 이는 정치인의 입지가 기업가치와 시장 심리에 미친 대표적 사례입니다.", "evidence": [{"source_title": "'안철수 총리설'에 안랩 주가 고공행진…10년 만에 역대 최고가", "url": "https://www.sisajournal.com/news/articleView.html?idxno=235310"}, {"source_title": "안철수 총리직 고사에....안랩 주가 9%대 폭락", "url": "https://www.chosun.com/economy/stock-finance/2022/03/30/ISPOPMI45JBQ5BEQXZE77YD7FM/"}]}], "notes": "안철수 의원의 영향력은 기업인에서 정치인으로 변모한 특이한 경력에서 비롯되며, IT산업 정책과 주식시장 테마 양측면이 혼재되어 있습니다. 분석은 2025년 기준 공개된 자료와 시장 반응을 토대로 했습니다."}} +{"question": "이준석", "gold_report": {"report_title": "이준석 전 국민의힘 대표의 정치·경제 영향력 네트워크 분석", "time_range": "2025년 11월 24일 기준", "question_answer": "이준석 전 대표는 2030 세대의 목소리를 대변하며 플랫폼 경제와 가상자산 등 신산업에 우호적인 태도를 보여 관련 업계 담론을 선도했습니다. 승차공유 등 모빌리티 혁신에 대한 규제 완화를 주장하여 쏘카 등 스타트업의 입지를 언급했고, 젊은 층의 관심이 높은 암호화폐 제도화 필요성을 제기하며 업비트 등 거래소에 간접적인 긍정 여론을 형성했습니다. 다만 직접 정책 집행 권한이 없어 실질 영향은 제한적이었습니다.", "influence_chains": [{"politician": "이준석", "policy": "공유 모빌리티 규제 완화 주장", "industry_or_sector": "모빌리티/스타트업", "companies": ["타다(VCNC)", "쏘카"], "impact_description": "이준석 전 대표는 택시산업과 승차공유 서비스의 공정 경쟁을 강조하며, 스타트업 타다 금지법 통과에 반대 의견을 꾸준히 제시했습니다:contentReference[oaicite:33]{index=33}. 그의 주장들은 쏘카 등 모빌리티 플랫폼 기업이 규제 완화 여론을 얻는 데 기여했고, 관련 업계에 혁신 필요성을 환기시켰습니다. 비록 당장의 정책 변화로 이어지진 않았으나, 미래 세대 정치 담론으로 모빌리티 혁신이 부상하는 효과가 있었습니다.", "evidence": [{"source_title": "두 달 택시 몰아본 이준석 “카풀 반대할 수밖에 없더라” - 서울신문", "url": "https://www.seoul.co.kr/news/newsView.php?id=20181213500020"}]}, {"politician": "이준석", "policy": "가상자산 제도화 및 세대공감", "industry_or_sector": "금융/가상자산", "companies": ["업비트", "빗썸"], "impact_description": "젊은 층의 투자열풍을 의식한 이준석 전 대표는 암호화폐 과세 유예와 제도권 편입의 필요성을 역설했습니다. 이러한 행보는 국내 최대 가상자산 거래소 업비트와 빗썸 등에게 우호적인 환경 조성으로 이어져, 관련 업계는 정치권 논의에 힘입어 일정 기간 투자심리가 개선되는 효과를 누렸습니다. 이는 정치권에서 가상자산이 공식 의제로 다뤄지는 데 일조한 사례로 평가됩니다.", "evidence": [{"source_title": "이준석 “가상자산 과세, 청년층 의견 더 들어야” - 코인데스크코리아", "url": "http://www.coindeskkorea.com/news/articleView.html?idxno=75211"}]}], "notes": "이준석 전 대표는 입법 권한은 없었지만 당대표로서 담론 형성과 여론에 영향을 미쳤습니다. 본 분석에서는 그의 주장과 이에 따른 산업계 분위기 변화를 다루었으며, 실제 정책 실현 여부와는 구분됩니다."}} +{"question": "심상정", "gold_report": {"report_title": "심상정 의원의 정치·경제 영향력 네트워크 분석", "time_range": "2025년 11월 24일 기준", "question_answer": "심상정 의원은 노동존중 사회를 기치로 최저임금 인상과 비정규직의 정규직화 등을 주도하며 대기업의 무노조 경영을 강하게 비판해 삼성전자 등 기업의 노동관행 변화를 촉구했습니다. 또한 그린뉴딜과 탈탄소 정책을 앞장서 제안하여 석탄발전 축소와 재생에너지 확대에 영향을 미쳤습니다. 이처럼 노동·환경 분야에서 진보적 의제를 선도하며 관련 기업들의 경영 전략에도 일정 부분 자극을 주었습니다.", "influence_chains": [{"politician": "심상정", "policy": "노조할 권리 보장 투쟁", "industry_or_sector": "대기업/노동", "companies": ["삼성전자"], "impact_description": "심상정 의원은 국회에서 삼성의 '무노조 경영'을 집요하게 문제삼으며 2013년 삼성의 노조탄압 문건을 폭로하는 등 노조할 권리 보장에 앞장섰습니다:contentReference[oaicite:34]{index=34}. 이러한 노력은 삼성전자에 노조 설립이 현실화되는 계기를 마련했고, 법원도 삼성의 조직적 노조와해 행위를 유죄로 인정하여 삼성으로 하여금 무노조 경영 원칙을 폐기하고 노동조합을 받아들이도록 압력을 가했습니다:contentReference[oaicite:35]{index=35}:contentReference[oaicite:36]{index=36}.", "evidence": [{"source_title": "심상정이 노동절 앞두고 또다시 '삼성' 지목한 이유 - 오마이뉴스", "url": "http://www.ohmynews.com/NWS_Web/View/at_pg.aspx?CNTN_CD=A0002429571"}, {"source_title": "심상정 “삼성 노조와해 유죄…반헌법적 무노조 황제경영 원칙 폐기해야”", "url": "http://www.lawleader.co.kr/news/articleView.html?idxno=3823"}]}, {"politician": "심상정", "policy": "최저임금 인상 및 정규직화", "industry_or_sector": "소매/서비스", "companies": ["이마트", "CJ대한통운"], "impact_description": "정의당의 심상정 의원은 최저임금의 가파른 인상을 강력히 지지하고 공공부문 비정규직의 정규직 전환을 추진했습니다. 그 결과 대형마트 이마트는 급격한 인건비 상승으로 무인계산대 도입 등 구조조정을 검토하게 되었고, 택배회사 CJ대한통운은 분류인력 직고용 등 고용구조 변화를 단행했습니다. 이처럼 노동자의 처우 개선 정책은 해당 기업들의 비용 구조와 운영 방식에 직접적 영향을 미쳤습니다.", "evidence": [{"source_title": "심상정 의원 “최저임금 1만원 시대, 대기업도 사회적 책임 다해야”", "url": "https://www.khan.co.kr/economy/economy-general/article/201807181453001"}]}, {"politician": "심상정", "policy": "녹색뉴딜·탈탄소 정책", "industry_or_sector": "에너지/환경", "companies": ["한국남동발전", "두산중공업"], "impact_description": "심상정 의원은 일찍이 Green New Deal을 주장하며 석탄발전소 폐쇄와 재생에너지 전환을 촉구했습니다. 이로 인해 석탄 발전을 주력으로 하던 한국남동발전은 영흥화력 등의 조기 폐지와 LNG 전환 계획을 수립했고, 원전·석탄 플랜트 기업 두산중공업(현 두산에너빌리티)은 정부의 탈석탄 기조 속에서 경영 위기를 겪기도 했으나 이후 신재생 사업으로 사업 방향을 선회했습니다. 이러한 변화는 진보정당의 환경 의제 선도가 기업 전략 재편에 영향을 준 사례입니다.", "evidence": [{"source_title": "심상정 “2050 탄소중립 위해 석탄발전 중단 로드맵 시급”", "url": "https://www.edaily.co.kr/news/read?newsId=03715206625924472&mediaCodeNo=257"}]}], "notes": "심상정 의원의 영향력은 입법보다는 의제 설정과 여론 압박을 통한 간접적인 효과가 크며, 본 분석에서는 노동·환경 분야에서 기업에 미친 영향을 위주로 서술했습니다. 정치인의 발언과 실제 정책 실현 간에는 차이가 있을 수 있습니다."}} +{"question": "Joe Biden", "gold_report": {"report_title": "Joe Biden 미국 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2021–2025년 11월 24일 기준", "question_answer": "조 바이든 대통령은 인플레이션 감축법(IRA)과 반도체 지원법(CHIPS Act) 등 대규모 산업 육성 정책을 통해 미국 내 전기차·배터리 및 반도체 기업에 막대한 지원을 제공했습니다. 이로써 Tesla와 LG Energy Solution 등이 세액공제 혜택으로 생산 투자를 늘리고, Intel과 TSMC는 첨단 공장 건설에 나섰습니다. 또한 동맹국들과 협력하여 글로벌 공급망을 재편하고, 친환경 에너지 전환을 추진함으로써 관련 기업들의 성장을 견인하고 있습니다.", "influence_chains": [{"politician": "Joe Biden", "policy": "인플레이션 감축법(IRA)", "industry_or_sector": "전기차/배터리", "companies": ["Tesla", "LG Energy Solution"], "impact_description": "2022년 제정된 IRA는 북미산 전기차에 대한 세액공제 혜택을 부여하여 Tesla 등 미국 전기차 제조사의 판매 경쟁력을 높였습니다. 또한 배터리 핵심광물 요건을 정함으로써 LG Energy Solution 등 한국 배터리 업체가 미국 현지공장 투자를 확대하도록 유인했습니다:contentReference[oaicite:37]{index=37}:contentReference[oaicite:38]{index=38}. 그 결과 Tesla는 미국 시장 점유율을 공고히 했고 LG에너지솔루션은 현지 생산을 늘려 IRA 인센티브를 확보하는 등 양사 모두 수혜를 입었습니다.", "evidence": [{"source_title": "\"미국이 제조업 미래 가질 것\"…바이든, 연일 'IRA 성과' 자축", "url": "https://news.nate.com/view/20220915n03449"}, {"source_title": "LG엔솔, 美 IRA 훈풍 업고 600MWh급 ESS 수주 - 글로벌이코노믹", "url": "https://m.g-enews.com/article/Industry/2023/07/20230707113056852699375367"}]}, {"politician": "Joe Biden", "policy": "CHIPS 및 과학법", "industry_or_sector": "반도체/제조", "companies": ["Intel", "TSMC"], "impact_description": "2022년 통과된 CHIPS Act를 통해 미국은 반도체 공장 건설에 527억 달러 보조금을 투입하여 자국 내 생산을 장려했습니다. 이에 Intel은 오하이오 등에 신규 팹 건설을 발표했고, TSMC도 애리조나에 첨단 파운드리 공장을 착공하는 등 적극 호응했습니다. 이 법안은 미국 내 반도체 생산능력 확충으로 공급망 안보를 강화하고, 관련 기업들에게 대규모 투자를 촉발하는 효과를 가져왔습니다.", "evidence": [{"source_title": "바이든, \"메이드 인 아메리카 반도체\" 인텔 공장 방문", "url": "https://www.voakorea.com/a/biden-intel-ohio-chips/6359882.html"}, {"source_title": "TSMC, 미국 애리조나에 3나노 공장 추가 투자", "url": "https://www.bbc.com/korean/news-63896506"}]}, {"politician": "Joe Biden", "policy": "동맹 공급망 및 친환경 정책", "industry_or_sector": "에너지/인프라", "companies": ["General Motors", "First Solar"], "impact_description": "바이든 대통령은 동맹국들과 협력하여 핵심 광물 공급망을 구축하고 친환경 인프라 투자를 확대했습니다. 이를 통해 General Motors는 호주·캐나다 업체와 배터리 핵심광물 공급 계약을 맺어 전기차 생산을 안정화했고, 태양광 패널 기업 First Solar는 IRA의 재생에너지 투자 세액공제에 힘입어 미국 내 신규 공장을 건설했습니다. 이 같은 국제 공조와 친환경 정책은 관련 기업들의 장기적 성장 기반을 강화했습니다.", "evidence": [{"source_title": "바이든, 호주·캐나다와 핵심광물 동맹 강화…GM 리튬 확보", "url": "https://www.reuters.com/business/autos-transportation/gm-signs-lithium-supply-agreement-with-australias-controlled-thermal-resources-2021-07-02/"}, {"source_title": "First Solar, IRA 타고 미 남부에 태양광 패널 공장 신설", "url": "https://www.nytimes.com/2023/08/11/business/energy-environment/first-solar-manufacturing-ira.html"}]}], "notes": "2021년 취임 이후 바이든 행정부의 주요 경제정책에 따른 기업 영향을 분석했습니다. 대규모 재정 지원 법안들은 아직 진행 중인 사안으로, 여기서 언급된 효과는 2025년 현재 가시화된 초기 성과를 토대로 작성되었습니다."}} +{"question": "Donald Trump", "gold_report": {"report_title": "Donald Trump 전 미국 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2017–2021", "question_answer": "도널드 트럼프 전 대통령은 대규모 감세와 규제 완화 정책으로 Apple, JPMorgan Chase 등 미국 대기업들의 순이익 증가와 투자 여력을 확대시켰습니다. 한편 미국 우선주의에 입각한 관세 부과와 무역전쟁을 통해 철강·에너지 업계를 보호하여 U.S. Steel 등의 국내 기업이 수혜를 입었지만, 글로벌 공급망 긴장으로 일부 제조업에는 불확실성을 초래했습니다. 전반적으로 친기업 기조로 단기 주가 상승과 고용 호조를 이끌었으나 무역갈등의 부작용도 야기되었습니다.", "influence_chains": [{"politician": "Donald Trump", "policy": "2017년 감세정책", "industry_or_sector": "대기업/금융", "companies": ["Apple", "JPMorgan Chase"], "impact_description": "트럼프 행정부는 2017년 말 법인세 최고세율을 35%에서 21%로 대폭 인하하는 감세법안을 통과시켰습니다. 이로 인해 Apple은 해외유보금 약 2500억 달러를 본국으로 송환하여 주주배당과 자사주 매입을 확대했고, JPMorgan Chase 등 대형 은행들은 세금 부담 감소로 순이익이 크게 증가하여 신규 대출과 인력 채용을 늘렸습니다. 감세정책은 월가와 기업들의 투자 심리를 자극하며 증시 활황으로 이어졌습니다.", "evidence": [{"source_title": "Apple, 세제혜택으로 100조원 규모 자사주 매입 발표", "url": "https://www.cnbc.com/2018/05/01/apple-will-buy-back-100-billion-in-stock-and-boost-dividend.html"}, {"source_title": "미국 은행들, 법인세 인하로 수익 급증", "url": "https://www.wsj.com/articles/tax-law-delivers-a-million-dollar-boost-to-big-banks-ceos-11550527000"}]}, {"politician": "Donald Trump", "policy": "무역전쟁 및 관세 정책", "industry_or_sector": "철강/제조", "companies": ["U.S. Steel", "Harley-Davidson"], "impact_description": "트럼프 전 대통령은 2018년부터 중국을 비롯한 교역국에 대한 관세부과로 무역전쟁을 전개했습니다. 특히 수입 철강에 25% 관세를 매겨 U.S. Steel 등 미 철강사들이 내수 가격 상승으로 단기적 호황을 누렸습니다. 그러나 중국의 보복관세로 모터사이클 제조사 할리데이비슨은 유럽 판매가격 급등으로 생산 일부를 해외로 이전하는 등 어려움을 겪었습니다. 보호무역 조치는 일부 제조업에 이익이 되었지만 다른 기업에는 비용 부담과 시장 축소를 초래했습니다.", "evidence": [{"source_title": "미국 철강업, 관세 덕에 반짝 호황", "url": "https://www.bloomberg.com/news/articles/2018-08-01/u-s-steel-s-profit-swells-as-trump-tariffs-add-momentum-to-rally"}, {"source_title": "할리데이비슨, EU 관세에 일부 생산 해외 이전 결정", "url": "https://www.bbc.com/news/business-44595070"}]}, {"politician": "Donald Trump", "policy": "에너지산업 지원 정책", "industry_or_sector": "석유/가스", "companies": ["ExxonMobil", "Chevron"], "impact_description": "트럼프 정부는 파리기후협약 탈퇴와 환경규제 완화로 화석연료 산업을 적극 지원했습니다. 연방 토지의 원유 시추 제한을 풀고 송유관 건설을 승인하여 ExxonMobil과 Chevron 같은 석유 대기업이 신규 유전 개발과 생산량 증대에 나설 수 있었습니다. 이로 인해 미국은 2018년 세계 1위 산유국이 되었고 관련 기업들의 매출과 이익이 증가했습니다. 다만 탄소배출 증가에 따른 국제사회 비판도 함께 야기되었습니다.", "evidence": [{"source_title": "미국, 2018년 세계 최대 산유국 등극…셰일 혁명과 트럼프 정책 영향", "url": "https://www.eia.gov/todayinenergy/detail.php?id=37053"}, {"source_title": "트럼프, 키스톤XL 송유관 부활…에너지 업계 환영", "url": "https://www.reuters.com/article/us-usa-pipeline-keystone-idUSKBN1582OH"}]}], "notes": "2017–2021년 트럼프 행정부 시기의 경제정책 영향을 정리했습니다. 친기업 조치로 단기적인 주가 및 고용 지표 개선이 있었지만, 무역갈등 등 장기적 파장도 초래하여 평가가 엇갈립니다. 언급된 사례들은 대표적인 긍정·부정 효과를 보여주는 기업들입니다."}} +{"question": "Xi Jinping", "gold_report": {"report_title": "Xi Jinping 중국 국가주석의 정치·경제 영향력 네트워크 분석", "time_range": "2012–2025년 11월 24일 기준", "question_answer": "시진핑 주석은 일대일로 전략을 통해 중국 국영 건설기업들의 해외 인프라 수주를 획기적으로 늘렸고, 기술굴기 정책으로 SMIC 등 반도체 기업의 자립을 추진했습니다. 동시에 공동부유 기치 아래 빅테크 기업들에 대한 강도 높은 규제를 단행하여 Alibaba와 Tencent의 성장에 제동을 걸었습니다. 이러한 정책들은 중국 경제에 국가의 역할을 강화하여 국유기업이 부상하고 민영 기술기업은 구조조정과 사회공헌 압력을 받는 등 명암이 교차하는 영향을 미쳤습니다.", "influence_chains": [{"politician": "Xi Jinping", "policy": "일대일로(一带一路) 전략", "industry_or_sector": "해외인프라/건설", "companies": ["중국교통건설공사(CCCC)", "중국철도건설공사(CRCC)"], "impact_description": "2013년 시작된 시진핑 주석의 일대일로 구상은 아시아, 아프리카, 유럽의 140여 개국에 걸친 대규모 인프라 투자로, 중국교통건설공사와 중국철도건설공사 같은 국영 건설사가 해외 도로·항만·철도 공사를 대거 수주하는 결과를 낳았습니다. 예컨대 CCCC는 파키스탄 과다르 항만과 아프리카 여러 나라의 도로 건설을 수행했고, CRCC는 동남아 고속철 등 프로젝트를 맡아 매출 급증과 국제적 영향력 확대를 누렸습니다.", "evidence": [{"source_title": "중국 '일대일로' 10년, 누적 투자 1천조 돌파", "url": "https://www.xinhuanet.com/english/2023-08/17/c_1319807381.htm"}, {"source_title": "Rail giant CRCC thrives on Belt and Road projects", "url": "https://www.globaltimes.cn/content/1207394.shtml"}]}, {"politician": "Xi Jinping", "policy": "빅테크 규제와 공동부유", "industry_or_sector": "인터넷/플랫폼", "companies": ["Alibaba", "Tencent"], "impact_description": "2020년 말 Ant그룹 상장 중단을 시작으로 시진핑 정부는 플랫폼 독점과 자본확장을 억제하기 위한 빅테크 규제를 본격화했습니다. 이에 따라 알리바바는 독점행위로 182억 위안(약 3조원)의 과징금을 부과받았고:contentReference[oaicite:39]{index=39}:contentReference[oaicite:40]{index=40}, 텐센트 역시 신규 게임 서비스 인가 지연과 반독점 조사로 성장세가 둔화되었습니다. 이 공동부유 기조 속에 두 기업은 수익의 사회 환원을 확대하고 사업 구조를 보수적으로 조정하게 되어, 중국 인터넷 업계 전반에 걸쳐 긴장과 변화가 일어났습니다.", "evidence": [{"source_title": "中, 알리바바에 반독점법 위반 벌금 3조원 부과…사상최대 규모", "url": "https://news.nate.com/view/20210410n02051"}, {"source_title": "중국 게임산업 규제에 텐센트 실적 타격", "url": "https://www.reuters.com/technology/tencent-quarterly-revenue-falls-first-time-weaker-ad-gaming-sales-2022-08-17/"}]}, {"politician": "Xi Jinping", "policy": "기술굴기와 자립화", "industry_or_sector": "반도체/통신", "companies": ["SMIC", "화웨이"], "impact_description": "미중 기술패권 경쟁이 심화되자, 시진핑 주석은 핵심 기술 자립을 위해 막대한 국가자금을 투입했습니다. 중국 파운드리 업체 SMIC는 국가의 지원 아래 14nm 공정 양산에 성공하며 일부 국산화 성과를 거뒀고, 제재를 받은 화웨이는 자체 운영체제와 5G 장비 국산 부품 개발에 집중했습니다. 이러한 기술굴기 노력으로 미국 제재에도 불구하고 화웨이는 2023년 7nm 칩을 탑재한 스마트폰을 출시하는 등 자급 능력을 일정 부분 입증했습니다.", "evidence": [{"source_title": "SMIC receives government funds to boost chip self-sufficiency", "url": "https://www.ft.com/content/35c4e7fa-519a-4d44-9a02-414a2caba90b"}, {"source_title": "화웨이, 자체 칩 탑재 '메이트60' 출시…미국 제재 돌파구", "url": "https://www.hani.co.kr/arti/economy/it/1108186.html"}]}], "notes": "시진핑 주석 집권 하 중국 경제는 고속성장에서 질적 발전 및 안보 중시로 전환되고 있습니다. 본 분석은 대표적 사례로 국영기업의 약진과 민영기업 규제를 다루었으며, 중국 정부의 강력한 개입이 기업 운명에 직접 영향을 주는 특성을 반영합니다."}} +{"question": "Vladimir Putin", "gold_report": {"report_title": "Vladimir Putin 러시아 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2000–2025년 11월 24일 기준", "question_answer": "블라디미르 푸틴 대통령은 에너지 국유화와 자원무기화를 통해 Gazprom과 Rosneft 등 국영 에너지 기업을 러시아 경제의 핵심으로 부상시켰습니다. 2022년 우크라이나 침공 이후에는 군수산업에 대한 수요가 폭증하여 Kalashnikov Concern 등의 방산업체가 내수와 수출 모두 급증하는 효과를 보았습니다. 동시에 서방의 제재로 러시아 경제는 위축되었지만, 정부는 수입대체 정책으로 국내 제조업 육성을 추진하며 제한된 범위 내에서 일부 IT·농업 기업의 성장을 도모하고 있습니다.", "influence_chains": [{"politician": "Vladimir Putin", "policy": "에너지 국유화·자원 무기화", "industry_or_sector": "에너지/가스", "companies": ["Gazprom", "Rosneft"], "impact_description": "푸틴 대통령은 집권 초부터 민영화되었던 에너지 자산을 재국유화하거나 국가 통제권을 강화했습니다. 천연가스 기업 가스프롬과 석유기업 로스네프트는 크렘린의 지원 아래 해외 파이프라인 건설과 OPEC+ 협조를 통해 막대한 수익을 올렸습니다. 특히 2006년 우크라이나 가스 차단 사태 등 자원을 외교무기로 활용하면서 Gazprom은 유럽 시장 지배력을 높였고:contentReference[oaicite:41]{index=41}, Rosneft는 국유화된 Yukos 자산 인수로 국내 1위 석유사가 되는 등 푸틴 정책의 최대 수혜자가 되었습니다.", "evidence": [{"source_title": "푸틴, Yukos 해체 후 로스네프트 국영 석유왕국 건설", "url": "https://www.wsj.com/articles/SB119705486110361204"}, {"source_title": "러시아 가스프롬, 우크라이나 파이프라인 분쟁 일지", "url": "https://www.bbc.com/russian/russia/2014/06/140616_gas_dispute_timeline"}]}, {"politician": "Vladimir Putin", "policy": "우크라이나 침공과 군수산업", "industry_or_sector": "방위산업", "companies": ["Kalashnikov Concern", "Uralvagonzavod"], "impact_description": "2022년 2월 푸틴 대통령의 우크라이나 침공 이후 러시아 군수산업은 전시에 준하는 생산증대로 특수를 누렸습니다. 소총과 드론을 만드는 칼라시니코프 콘체른사는 정부로부터 막대한 군수품 주문을 받아 생산량이 크게 늘었고, 전차 제조사 우랄바곤자보드는 손실 기업에서 전쟁 기간 핵심 군수업체로 급부상했습니다. 내수 수요로 매출이 급증함과 동시에 제재로 서방 부품 조달이 어렵지만, 정부의 전폭적 지원 아래 이들 업체는 러시아 경제에서 차지하는 비중이 한층 높아졌습니다.", "evidence": [{"source_title": "우크라이나 전쟁 1년, 러시아 군수산업 '밤낮없이 가동'", "url": "https://www.nytimes.com/2023/02/18/world/europe/russia-weapons-industry-war.html"}, {"source_title": "제재 속에서도 러 전차공장 Uralvagonzavod 생산 확대", "url": "https://www.reuters.com/world/europe/despite-sanctions-russia-is-making-materiel-faster-than-west-2023-08-18/"}]}, {"politician": "Vladimir Putin", "policy": "수입대체산업 육성", "industry_or_sector": "제조/기술", "companies": ["Yandex", "Ростсельмаш(Rostselmash)"], "impact_description": "2014년 크림 합병 이후 서방 제재가 시작되자 푸틴 정부는 '수입대체(Импортозамещение)' 정책을 내걸고 국내 산업 보호에 나섰습니다. 검색포털 얀덱스는 구글 제한 조치의 반사이익으로 러시아 인터넷 시장 점유율을 60% 이상으로 높였고, 농기계 제조사 Rostselmash는 외산 농기계 대체를 위한 보조금 지원으로 러시아 내 트랙터 시장의 65%를 차지하게 되었습니다. 제재 하에서 자립을 도모한 이 정책은 제한적 성공을 거두었지만 첨단 반도체 등에서는 여전히 취약점을 드러냈습니다.", "evidence": [{"source_title": "러시아, 제재 대응 수입대체 정책 강화", "url": "https://www.economist.com/europe/2018/07/05/russia-is-struggling-to-replace-western-imports"}, {"source_title": "Yandex Becomes Unlikely Beneficiary of Russia's Tech Clampdown", "url": "https://www.ft.com/content/c0e7d9a2-3fa3-11e9-b896-fe36ec32aece"}]}], "notes": "푸틴 집권기의 러시아 경제는 에너지와 군수에 크게 의존하며, 외부 제재에 적응하는 형태로 전개되었습니다. 본 보고서는 그 중 눈에 띄는 사례들을 추려냈으며, 러시아 기업들은 국가정책 방향에 따라 흥망이 좌우되는 경향이 강함을 보여줍니다."}} +{"question": "Narendra Modi", "gold_report": {"report_title": "Narendra Modi 인도 총리의 정치·경제 영향력 네트워크 분석", "time_range": "2014–2025년 11월 24일 기준", "question_answer": "나렌드라 모디 총리는 'Make in India' 캠페인을 통해 Foxconn, Tata Motors 등 제조 기업의 투자를 유치하여 인도를 글로벌 생산기지로 부상시켰습니다. 디지털 인디아와 금융 포용 정책으로 Paytm 같은 핀테크와 Reliance Jio 통신사가 폭발적 성장을 이뤘으며, 2016년 화폐개혁(디모네타이제이션)은 디지털 결제 기업에 호재로 작용했습니다. 또한 GST 도입으로 전국 단일시장 형성 등 경제 현대화를 추진하여 기업 경영환경을 개선했으나, 일부 중소상인은 적응에 어려움을 겪기도 했습니다.", "influence_chains": [{"politician": "Narendra Modi", "policy": "Make in India 캠페인", "industry_or_sector": "제조업/전자", "companies": ["Foxconn", "Tata Motors"], "impact_description": "2014년 시작된 Make in India 정책으로 외국 기업의 인도 제조 투자가 대폭 늘었습니다. 아이폰 위탁생산업체 폭스콘은 인도 공장에 수십억 달러를 투자해 2025년까지 일자리 5만 개 창출을 발표했고, Tata Motors는 전기차 및 배터리 생산을 위해 정부 인센티브를 받아 국내 생산능력을 확충했습니다. 이 정책 덕분에 인도 제조업 GDP 비중이 상승했고, 스마트폰 등 여러 제품에서 인도가 조립허브로 떠올랐습니다.", "evidence": [{"source_title": "Foxconn to Invest $5 Billion in India for Manufacturing", "url": "https://www.bloomberg.com/news/articles/2015-08-08/foxconn-said-to-plan-5-billion-investment-in-india-over-5-years"}, {"source_title": "Tata Motors banks on Make in India to drive EV growth", "url": "https://economictimes.indiatimes.com/industry/auto/auto-news/tata-motors-to-drive-in-more-evs-focuses-on-localisation-under-make-in-india/articleshow/86365921.cms"}]}, {"politician": "Narendra Modi", "policy": "디지털 인디아 및 핀테크", "industry_or_sector": "IT/통신·결제", "companies": ["Reliance Jio", "Paytm"], "impact_description": "모디 총리는 2015년 'Digital India' 프로그램으로 전국에 저가 고속인터넷과 디지털 서비스를 확산시켰습니다. Reliance Jio는 파격적인 무료 통신요금 전략과 정부 지원으로 4G 가입자 4억 명을 돌파하며 인도 통신시장을 재편했고, 2016년 화폐개혁 이후 Paytm 등 모바일 결제 플랫폼은 현금 부족 사태 속 폭발적 이용 증가로 거래액이 급증했습니다. 이처럼 정부의 디지털화 드라이브는 인도를 세계 최대 데이터 소비시장으로 만들며 관련 기업들의 급성장을 이끌었습니다.", "evidence": [{"source_title": "Reliance Jio's free data revolution spurred Digital India", "url": "https://www.theguardian.com/technology/2017/sep/21/reliance-jio-mukesh-ambani-india-mobile-internet-free-data-4g"}, {"source_title": "Paytm usage surges after demonetisation", "url": "https://www.bbc.com/news/world-asia-india-37974423"}]}, {"politician": "Narendra Modi", "policy": "GST 도입과 세제 개혁", "industry_or_sector": "물류/소비재", "companies": ["Dabur", "Mahindra Logistics"], "impact_description": "2017년 모디 정부는 인도 전역에 단일 부가가치세(GST)를 도입하여 복잡한 연방별 세금을 통합했습니다. 이로 인해 FMCG(일용소비재) 기업 Dabur는 물류비 절감과 재고회전율 개선으로 이익률이 상승했고, 물류기업 Mahindra Logistics는 창고를 허브화하며 전국 배송 효율이 크게 높아졌습니다. GST 시행 초반 일시적 혼란에도 불구하고 장기적으로는 기업 환경이 투명해지고 국내 무역이 촉진되는 효과를 가져왔습니다.", "evidence": [{"source_title": "GST has cut logistics cost by 20%, says CRISIL", "url": "https://www.financialexpress.com/economy/gst-cut-logistics-cost-by-20-crisil/1190728/"}, {"source_title": "Dabur sees volume growth post GST", "url": "https://www.business-standard.com/article/companies/dabur-india-posts-strong-volume-growth-as-gst-impact-wanes-118020101284_1.html"}]}], "notes": "모디 총리 재임 기간 인도 경제는 구조개혁과 디지털화에 속도를 냈습니다. 본 분석은 그 중 기업에 미친 주요 사례들을 다루었으며, 정책마다 득실이 있었으나 전반적으로 인도 기업의 국제 경쟁력이 제고되는 방향으로 나아갔습니다."}} +{"question": "Rishi Sunak", "gold_report": {"report_title": "Rishi Sunak 영국 총리의 정치·경제 영향력 네트워크 분석", "time_range": "2020–2025년 11월 24일 기준", "question_answer": "리시 수낙 총리는 재무장관 시절 코로나19 직격탄을 맞은 경제를 살리기 위해 대규모 임금 보조(Furlough) 정책을 펼쳐 British Airways, 마크스앤드스펜서 등 기업들이 고용을 유지하도록 도왔습니다. 총리 재직 중에는 영국을 AI 혁신 허브로 만들겠다며 AI 안전 서밋을 개최하고 반도체 연구에 투자하여 DeepMind, Graphcore 같은 첨단기업에 우호적 환경을 조성했습니다. 또한 브렉시트 이후 금융규제 개혁을 추진해 런던 금융시장의 경쟁력을 높이려 시도하고 있습니다.", "influence_chains": [{"politician": "Rishi Sunak", "policy": "코로나 고용유지 지원(Furlough)", "industry_or_sector": "항공/소매", "companies": ["British Airways", "Marks & Spencer"], "impact_description": "수낙 총리가 재무장관으로 있던 2020년, 영국 정부는 코로나19 봉쇄로 타격받은 기업 직원을 대상으로 인건비의 80%를 보전해주는 Furlough 제도를 도입했습니다. 그 결과 국제선 운항이 중단된 British Airways는 대규모 정리해고를 피하고 수만 명의 직원을 유지할 수 있었으며, 매장 영업이 막혔던 유통업체 Marks & Spencer도 인력 유지를 통해 팬데믹 후 빠른 영업 재개가 가능했습니다. 이 조치는 18개월간 114억 파운드 규모로 투입되어 실업률 급등을 억제하는 효과를 냈습니다.", "evidence": [{"source_title": "영국 코로나 휴직지원에 900만명 혜택…BA 등 대규모 해고 방지", "url": "https://www.bbc.com/news/business-52528304"}, {"source_title": "Marks & Spencer says furlough scheme crucial to survival", "url": "https://www.theguardian.com/business/2020/may/20/marks-spencer-ms-coronavirus-lockdown"}]}, {"politician": "Rishi Sunak", "policy": "AI·반도체 혁신 지원", "industry_or_sector": "첨단기술/반도체", "companies": ["DeepMind", "Graphcore"], "impact_description": "수낙 총리는 2023년 영국에서 최초의 AI 안전 정상회의를 주최하고, AI 연구 및 반도체 설계 분야에 10억 파운드 이상을 투자하겠다고 발표했습니다. 구글 산하의 인공지능 연구소 DeepMind는 정부의 규제 완화와 런던을 AI 글로벌 허브로 만들겠다는 약속 속에 연구 인력을 확충하고 있고, 영국 팹리스 반도체 스타트업 Graphcore는 정부 지원금과 주문형 반도체 연구 인프라 조성 계획에 힘입어 Nvidia와 경쟁할 수 있는 AI칩 개발에 박차를 가하고 있습니다. 이러한 지원으로 영국 첨단기술 업계는 브렉시트 이후에도 투자 유치를 이어가고 있습니다.", "evidence": [{"source_title": "UK to invest £1 billion in supercomputer and AI chips", "url": "https://www.ft.com/content/2b3f0d58-e1fb-4a8c-a6f7-4f4a7b9becec"}, {"source_title": "Sunak's AI Summit draws DeepMind, OpenAI to UK", "url": "https://www.bloomberg.com/news/articles/2023-10-31/sunak-s-ai-summit-draws-pitches-from-google-s-deepmind-and-openai"}]}, {"politician": "Rishi Sunak", "policy": "금융규제 개혁(에든버러 개혁)", "industry_or_sector": "금융/핀테크", "companies": ["Barclays", "Revolut"], "impact_description": "브렉시트 이후 금융 경쟁력 강화를 위해 수낙 총리는 2022년 말 '에든버러 개혁' 계획을 발표해 EU 규제였던 은행 자기자본 규제 등 일부를 완화하고 핀테크 혁신을 장려했습니다. 이에 따라 Barclays 같은 대형은행은 파생상품 거래 등에서 규제비용이 줄어들 것으로 기대하고 있고, 디지털은행 Revolut는 보다 유연한 규제 환경 속에서 신규 라이선스 취득과 해외 진출에 탄력이 붙을 전망입니다. 다만 이러한 개혁이 2008년 금융위기 이후 강화된 투자자 보호 장치를 약화시킬 수 있다는 우려도 있습니다.", "evidence": [{"source_title": "영국, ‘에든버러 개혁’으로 EU 금융규제 대체…런던 경쟁력 강화 시도", "url": "https://www.economist.com/britain/2022/12/09/britain-unveils-its-biggest-package-of-financial-reforms-in-decades"}, {"source_title": "핀테크 Revolut, 영국 규제 완화 기대 속 성장 가속", "url": "https://www.ft.com/content/0d7451ec-5325-4f50-8af1-349172226ec7"}]}], "notes": "리시 수낙 총리의 경제정책은 팬데믹 대응부터 브렉시트 후속조치까지 폭넓게 전개되었습니다. 영국의 구조적 도전을 마주한 상황에서 단기 응급조치(코로나 지원)와 중장기 경쟁력 강화 전략(AI, 금융)이 혼재되어 있으며, 그 실효성은 향후 몇 년간의 성과에 따라 평가될 것입니다."}} +{"question": "Emmanuel Macron", "gold_report": {"report_title": "Emmanuel Macron 프랑스 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2017–2025년 11월 24일 기준", "question_answer": "에마뉘엘 마크롱 대통령은 노동시장 유연화와 연금개혁을 단행하여 프랑스 기업들의 인건비 부담을 덜고 고용을 늘리는 기반을 마련했으며, 친환경 정책으로 프랑스 전력공사(EDF)의 원전 투자와 르노 등의 전기차 전환에 박차를 가했습니다. 또한 EU 차원에서 디지털세 추진과 반도체·배터리 육성에 앞장서며 유럽 기업들의 기술 주권을 강화했습니다. 다만 연금개혁에 따른 국민 반발로 사회적 갈등이 일시적으로 기업 활동에 불확실성을 주기도 했습니다.", "influence_chains": [{"politician": "Emmanuel Macron", "policy": "노동법 개혁", "industry_or_sector": "산업 전반/고용", "companies": ["TotalEnergies", "Carrefour"], "impact_description": "2017년 마크롱 정부는 노조와 사회적 합의를 거쳐 해고 절차 완화, 노조교섭 단위 축소 등 노동법 개혁을 실시했습니다. 이에 따라 TotalEnergies 같은 대기업은 인건비 유연성이 높아져 신규 고용과 구조조정에 신속히 대응할 수 있게 되었고, 소매체인 까르푸는 점포 운영시간 연장과 주말 노동투입 등 생산성 향상 방안을 원활히 시행할 수 있었습니다. 이 개혁 이후 프랑스 실업률은 10%대에서 7%대로 하락하며 기업들의 고용여건이 개선되었습니다.", "evidence": [{"source_title": "마크롱 노동개혁 후 프랑스 실업률 최저치 기록", "url": "https://www.reuters.com/article/us-france-reform-employment-idUSKCN1M01R3"}, {"source_title": "Carrefour welcomes new labor flexibility under Macron", "url": "https://www.ft.com/content/2e3f4d62-d353-11e7-a303-9060cb1e5f44"}]}, {"politician": "Emmanuel Macron", "policy": "연금개혁 추진", "industry_or_sector": "공공재정/시장", "companies": ["BNP Paribas", "AXA"], "impact_description": "2023년 마크롱 대통령은 연금정년을 62세에서 64세로 상향하는 개혁을 강행하여 장기적으로 재정안정과 노동인구 증가를 도모했습니다. 이에 프랑스 최대 은행 BNP파리바는 국가신용도 유지와 금리안정의 간접 혜택을 기대할 수 있었고, 대형 보험사 AXA는 민영 연금상품 수요 증가에 대비해 상품 개발을 서둘렀습니다. 다만 연금개혁 과정에서 대규모 파업이 발생해 단기적으로 소비와 생산에 지장을 초래하기도 했습니다.", "evidence": [{"source_title": "프랑스 연금개혁 통과…BNP파리바 등 금융권 '환영'", "url": "https://www.bloomberg.com/news/articles/2023-04-14/bnp-paribas-says-pension-reform-is-good-for-france-s-economy"}, {"source_title": "AXA sees opportunities in Macron pension reform", "url": "https://www.reuters.com/business/finance/insurer-axa-sees-opportunity-french-pension-reform-2023-01-23/"}]}, {"politician": "Emmanuel Macron", "policy": "친환경·산업 주권 정책", "industry_or_sector": "에너지/제조", "companies": ["EDF", "STMicroelectronics"], "impact_description": "마크롱 대통령은 파리협정 이행과 에너지 안보 강화를 위해 원전 부흥과 배터리·반도체 등 전략산업 육성을 추진했습니다. 이에 따라 프랑스전력公(EDF)은 신규 원자로 건설과 노후원전 수명연장에 정부 지원을 받아 대규모 투자를 진행하고, 유럽 반도체 기업 ST마이크로일렉트로닉스는 프랑스 정부 보조금을 통해 그르노블 공장 증설 및 차세대 칩 R&D에 박차를 가했습니다. 이 같은 정책으로 프랑스는 유럽 배터리 연합 및 반도체 동맹의 중심에 서서 관련 기업들의 공급망 자립을 도왔습니다.", "evidence": [{"source_title": "Macron bets on nuclear revival, EDF to build new reactors", "url": "https://www.ft.com/content/039e8c38-0b9e-11ea-b2d6-9bf4d1957a67"}, {"source_title": "STMicro to get French aid for chip plant expansion", "url": "https://www.reuters.com/technology/france-italy-pledge-funds-stmicroelectronics-chip-plant-2022-07-11/"}]}], "notes": "에마뉘엘 마크롱 정부는 친시장 개혁과 유럽 차원의 산업 전략을 병행하였습니다. 노동 및 연금개혁은 단기 사회 갈등에도 불구하고 중장기적으로 기업 활력을 높이는 데 기여했고, 프랑스 주도의 EU 산업정책은 공급망 다변화 시대에 자국 기업 보호 및 육성으로 이어지고 있습니다."}} +{"question": "Volodymyr Zelensky", "gold_report": {"report_title": "Volodymyr Zelensky 우크라이나 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2019–2025년 11월 24일 기준", "question_answer": "볼로디미르 젤렌스키 대통령은 2022년 러시아 침공에 맞서 서방의 군사지원을 이끌어내며 Lockheed Martin, BAE Systems 등 글로벌 방산 기업들의 수주가 급증하는 간접 효과를 주었습니다. 국내적으로는 반부패 개혁과 올리가르히(재벌) 견제를 추진하여 PrivatBank 국유화 등 금융 부문의 투명성을 높였고, 전시경제 하에서도 전력·농업 인프라 복구에 집중 투자하여 DTEK, Kernel과 같은 기업들이 국제기구 지원 아래 재건 사업에 참여하도록 독려했습니다. 전쟁이 장기화됨에 따라 우크라이나 재건 계획은 Bechtel 등 해외 건설사의 관심을 모으고 있습니다.", "influence_chains": [{"politician": "Volodymyr Zelensky", "policy": "서방 군사지원 외교", "industry_or_sector": "방위산업/국제", "companies": ["Lockheed Martin", "BAE Systems"], "impact_description": "젤렌스키 대통령은 연일 미국과 NATO 동맹국을 상대로 무기 지원을 호소하여, HIMARS 로켓과 전차, 포탄 등이 대거 우크라이나로 지원되었습니다. 그에 따라 미 방산업체 록히드마틴은 HIMARS 생산라인을 증설해 주문량을 늘렸고, 영국 BAE 시스템즈는 우크라이나에 곡사포와 장갑차 수출이 증가하면서 2022~2023년 실적이 크게 향상되었습니다. 젤렌스키의 외교 행보는 서방 방산기업들에게 예상치 못한 특수를 안겨준 셈입니다.", "evidence": [{"source_title": "우크라 전쟁 특수, 미 방산업체 실적 급등", "url": "https://www.wsj.com/articles/lockheed-martin-earnings-ukraine-war-11670969844"}, {"source_title": "BAE Systems, 우크라 지원에 힘입어 신규 수주 기록", "url": "https://www.bloomberg.com/news/articles/2023-07-27/bae-systems-lands-record-orders-on-ukraine-boost-raises-outlook"}]}, {"politician": "Volodymyr Zelensky", "policy": "반부패·재벌 개혁", "industry_or_sector": "금융/철강", "companies": ["PrivatBank", "Metinvest"], "impact_description": "젤렌스키 집권 초기부터 부패 척결과 올리가르히 축소에 방점을 찍어왔습니다. 2016년 부실사태를 맞은 최대 민영은행 프리바트뱅크를 국유화하고, 2021년에는 올리가르히(재벌) 등록법을 제정하여 철강재벌 리나트 아흐메토프가 소유한 Metinvest 등 거대 기업들의 정치 영향력을 제한했습니다. 이러한 조치는 국제통화기금(IMF) 지원 조건이기도 했으며, 우크라이나 금융시스템 안정과 대외신인도 제고에 기여했으나 올리가르히 경제력 집중은 여전히 과제로 남아있습니다.", "evidence": [{"source_title": "우크라이나, 최대은행 PrivatBank 국유화", "url": "https://www.reuters.com/article/us-ukraine-crisis-privatbank-idUSKBN1480RX"}, {"source_title": "Zelenskiy signs law curbing oligarchs' influence", "url": "https://www.bloomberg.com/news/articles/2021-11-05/ukraine-s-zelenskiy-signs-law-curbing-oligarchs-influence"}]}, {"politician": "Volodymyr Zelensky", "policy": "인프라 재건 및 에너지 복구", "industry_or_sector": "전력/건설", "companies": ["DTEK", "Bechtel"], "impact_description": "전쟁으로 파괴된 인프라를 복구하기 위해 젤렌스키 대통령은 2023년부터 '우크라이나 재건 계획'을 추진하고 있습니다. 최대 민간 전력회사 DTEK는 정부 및 국제 원조로 피해입은 발전소와 송전망을 긴급 복구하여 작동시켰고, 미국 건설사 Bechtel은 우크라이나 정부와 재건 사업 협력 MOU를 체결하고 향후 철도·교량 재건 입찰 참여를 준비 중입니다. 이러한 노력은 전시에도 불구하고 국민 생활을 지탱하고, 향후 수백조원 규모로 예상되는 재건 시장에서 글로벌 기업들의 관심을 모으고 있습니다.", "evidence": [{"source_title": "DTEK restores power for millions amid ongoing strikes", "url": "https://news.yahoo.com/ukraines-dtek-restores-power-millions-123456789.html"}, {"source_title": "Ukraine signs deal with Bechtel on reconstruction projects", "url": "https://www.reuters.com/world/europe/ukraine-signs-deal-with-bechtel-cooperate-reconstruction-projects-2023-05-22/"}]}], "notes": "젤렌스키 대통령의 임기 중 2022년 이후 전쟁상황이 기업환경에 막대한 영향을 주었으며, 본 분석은 그 가운데서도 주요한 경제적 연쇄 효과를 추린 것입니다. 우크라이나의 재건은 진행형으로, 향후 국제사회의 지원과 기업들의 참여에 따라 성과가 가시화될 전망입니다."}} +{"question": "Fumio Kishida", "gold_report": {"report_title": "기시다 후미오 일본 총리의 정치·경제 영향력 네트워크 분석", "time_range": "2021–2025년 11월 24일 기준", "question_answer": "기시다 총리는 방위비를 대폭 증액하여 미쓰비시중공업 등 방산기업에 새로운 성장 기회를 제공했고, 핵심전략산업(반도체·배터리)에 보조금을 지급하여 일본 기업의 국내 투자와 TSMC 등의 유치를 이끌었습니다. 또한 '새로운 자본주의' 기치 하에 기업들에 임금 인상과 투자 확대를 독려하여 소니, 도요타 등에서 기록적인 임금인상 합의를 끌어냈습니다. 이러한 정책들은 장기 정체에 빠진 일본 경제에 변화를 주려는 시도로 평가되나, 재원 마련과 구조개혁의 한계로 효과가 부분적이라는 지적도 있습니다.", "influence_chains": [{"politician": "Fumio Kishida", "policy": "방위비 증액 정책", "industry_or_sector": "방위산업", "companies": ["Mitsubishi Heavy Industries", "IHI Corporation"], "impact_description": "2022년 기시다 내각은 안보환경 악화를 이유로 GDP 대비 방위비를 1%대에서 2%로 올리기로 결정했습니다. 이로써 미쓰비시중공업은 장거리 미사일 개발과 함정 건조 등 새로운 방위사업을 수주하여 주가가 2023년에 크게 상승했고, 항공엔진 제조사 IHI도 전투기 엔진 및 우주방위 관련 예산 증가로 연구개발 기회가 확대되었습니다. 방위산업 전반에 수십년 만의 특수가 찾아와 일본 기업들의 방산 부문 투자가 늘어나는 계기가 되었습니다.", "evidence": [{"source_title": "일본, 방위비 2배로…미쓰비시重 등 방산주 강세", "url": "https://www.wsj.com/articles/japan-defense-stocks-surge-on-budget-hike-11671234567"}, {"source_title": "IHI, 전투기 엔진 개발 참여...방위비 증액 수혜", "url": "https://asia.nikkei.com/Business/Aerospace-Defense/IHI-s-military-engine-unit-set-for-lift-off-under-Japan-defense-plan"}]}, {"politician": "Fumio Kishida", "policy": "산업부흥 보조금 (반도체 등)", "industry_or_sector": "반도체/배터리", "companies": ["TSMC Japan", "Toyota-Panasonic (Prime Planet Energy)"], "impact_description": "기시다 총리는 공급망 안보와 첨단 산업 육성을 위해 해외 첨단기업 유치와 국내 설비 투자에 막대한 보조금을 지급했습니다. 세계 1위 파운드리 TSMC는 구마모토현에 소니와 합작으로 반도체 공장을 건설하며 일본 정부로부터 약 4,760억 엔의 지원을 받아 2024년 가동 예정이고, 도요타-파나소닉 배터리 합작사 Prime Planet Energy는 차량용 배터리 공장 증설에 정부 지원금을 확보해 생산능력을 확대하고 있습니다. 이같은 산업 정책은 일본 제조업의 기술 주권을 강화하고 하이테크 부문의 고용을 창출하는 효과를 거두고 있습니다.", "evidence": [{"source_title": "TSMC, 일본 소니와 구마모토에 반도체 공장…정부 4760억엔 지원", "url": "https://www.reuters.com/technology/tsmc-plans-build-second-japan-chip-plant-report-2023-02-24/"}, {"source_title": "일본, 배터리 공장 7곳에 3300억엔 보조금 지원", "url": "https://asia.nikkei.com/Business/Energy/Japan-to-subsidize-battery-plants-by-Panasonic-Toshiba-and-GS-Yuasa"}]}, {"politician": "Fumio Kishida", "policy": "신자본주의 (임금인상 촉구)", "industry_or_sector": "경영/노동", "companies": ["Toyota", "Sony"], "impact_description": "기시다 총리는 '새로운 자본주의' 슬로건 아래 기업들에게 임금 인상과 사내유보 활용을 촉구했습니다. 그 결과 2023년 춘투(봄철 임금교섭)에서 도요타는 약 20년만에 최고 수준의 임금인상을 단행했고, 소니도 기본급 7% 인상과 보너스 확대를 결정하여 노동자들의 실질임금 상승을 이루었습니다. 이는 일본 경제의 구조적 과제였던 임금 정체를 완화하고 소비 진작에 기여할 조짐을 보였으나, 한편으로 기업 수익성 압박과 중소기업 미흡 등 한계도 지적됩니다.", "evidence": [{"source_title": "도요타, 기시다 요청에 화답…전 직원 임금 9% 인상", "url": "https://www.japantimes.co.jp/news/2023/02/23/business/corporate-business/toyota-wage-hike-agreement/"}, {"source_title": "소니, 26년만에 최고 임금인상…기시다 '임금UP' 가속", "url": "https://www.bloomberg.com/news/articles/2023-03-29/sony-to-raise-base-pay-by-7-highest-hike-in-two-decades"}]}], "notes": "기시다 후미오 총리의 경제정책은 아베노믹스 이후 일본의 새로운 방향 모색으로 볼 수 있습니다. 방위비 증액과 산업지원은 안보와 성장 두 마리 토끼를 잡으려는 전략이며, 임금인상 유도는 디플레이션 탈출을 위한 사회적 노력의 일환입니다. 정책 효과는 아직 진행형으로, 향후 일본 경제의 활력 회복 여부에 따라 평가가 달라질 것입니다."}} +{"question": "Mohammed bin Salman", "gold_report": {"report_title": "무함마드 빈 살만 사우디 왕세자의 정치·경제 영향력 네트워크 분석", "time_range": "2016–2025년 11월 24일 기준", "question_answer": "무함마드 빈 살만 왕세자는 'Vision 2030'을 통해 Saudi Aramco 상장과 석유산업 민영화로 막대한 자금을 조달하고, NEOM 스마트시티 등 초대형 프로젝트를 추진하여 건설·관광 분야에 Bechtel, Bouygues 등 글로벌 기업을 끌어들였습니다. 또한 OPEC+ 감산을 주도하여 유가를 부양함으로써 Aramco와 SABIC 등 사우디 에너지·석유화학 기업의 수익을 극대화했습니다. 동시에 Public Investment Fund(PIF)를 활용해 Lucid Motors, SoftBank Vision Fund 등에 투자하여 사우디 경제를 다각화하려는 노력을 기울이고 있습니다.", "influence_chains": [{"politician": "Mohammed bin Salman", "policy": "Vision 2030 경제개혁", "industry_or_sector": "국부펀드/투자", "companies": ["Saudi Aramco", "Lucid Motors"], "impact_description": "2016년 발표된 Vision 2030에 따라 MBS는 국영 석유회사 Saudi Aramco 지분 일부를 2019년 국내 상장시켜 약 294억 달러를 조달하며 세계 최대 IPO를 기록했습니다:contentReference[oaicite:44]{index=44}. 이를 통해 확보한 자금은 사우디 국부펀드(PIF)에 투입되어 전기차 기업 Lucid Motors 지분 인수 등 해외 첨단산업 투자로 이어졌습니다. 그 결과 Lucid는 사우디에 공장 건설을 약속받고 PIF로부터 10억 달러 추가 투자를 유치하는 등 사우디의 전략적 투자 파트너로 부상했습니다. 이러한 경제개혁 조치는 사우디 경제의 탈석유화를 촉진하고 있습니다.", "evidence": [{"source_title": "사우디 아람코 IPO, 세계 최고 시가총액 기업 등극", "url": "https://www.reuters.com/article/us-saudi-aramco-ipo-idUSKBN1YI14V"}, {"source_title": "사우디 PIF, Lucid 모터스에 추가 투자…현지 생산 추진", "url": "https://www.bloomberg.com/news/articles/2023-05-03/saudi-arabia-s-pif-nears-deal-for-new-funding-for-ev-maker-lucid"}]}, {"politician": "Mohammed bin Salman", "policy": "OPEC+ 감산 및 유가 정책", "industry_or_sector": "석유/화학", "companies": ["Saudi Aramco", "SABIC"], "impact_description": "MBS는 2017년 이후 러시아 등 산유국과 OPEC+ 동맹을 맺어 산유량 조절을 주도했습니다. 특히 2020년 팬데믹과 2022년 우크라이나 전쟁 시기에 대규모 감산 합의를 이끌어내어 국제 유가를 부양함으로써, Saudi Aramco의 2022년 순이익이 전년 대비 2배 이상 폭증하고:contentReference[oaicite:45]{index=45} 석유화학 기업 SABIC도 고유가로 인한 원료가격 상승분을 판매가에 전가해 수익 개선을 누렸습니다. 유가 상승은 사우디 재정을 흑자로 돌려놓았고, MBS는 이를 재투자해 미래 사업에 재원을 투입하는 선순환을 만들고 있습니다.", "evidence": [{"source_title": "사우디 아람코, 2022년 사상 최대 1611억달러 순이익 기록", "url": "https://www.bbc.com/news/business-64932727"}, {"source_title": "OPEC+ 감산 결정, 글로벌 유가 4%↑…사우디 주도", "url": "https://www.reuters.com/markets/commodities/opec-surprise-output-cuts-send-oil-prices-soaring-2023-04-02/"}]}, {"politician": "Mohammed bin Salman", "policy": "초대형 프로젝트(NEOM 등)", "industry_or_sector": "건설/관광", "companies": ["Bechtel", "Marriott International"], "impact_description": "빈 살만 왕세자는 5000억 달러 규모 미래형 도시 '네옴(Neom)'과 홍해 관광단지 등 초대형 프로젝트를 추진하여 글로벌 건설·관광기업을 사우디로 불러들이고 있습니다. 미국 건설사 Bechtel은 네옴의 첨단 신도시 '더 라인(The Line)' 건설관리 계약을 체결했고:contentReference[oaicite:46]{index=46}, 메리어트 등 세계적 호텔 체인은 홍해 프로젝트에 고급 리조트를 운영하기로 하는 등 사우디 관광산업 진출을 확대하고 있습니다. 이러한 메가프로젝트는 사우디 건설업에 활황을 가져와 현지 건설사와 외국 기업 모두에게 큰 기회가 되고 있습니다.", "evidence": [{"source_title": "Bechtel lands contract for NEOM The Line project", "url": "https://www.constructionweekonline.com/projects-tenders/bechtel-neom-the-line-project-management"}, {"source_title": "Marriott to open three luxury resorts in Saudi Red Sea project", "url": "https://www.hoteliermiddleeast.com/business/marriott-red-sea-saudi"}]}], "notes": "MBS의 주도로 사우디는 석유 중심에서 탈피해 미래 성장동력을 찾고자 노력 중이며, 그 과정에서 국내외 기업들의 참여를 적극 유도하고 있습니다. 정책 추진은 왕정체제의 강력한 드라이브로 단기간에 성과를 내고 있으나, 정치적 위험과 인권 문제 등이 외국 투자에 변수로 작용할 수 있습니다."}} diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/dev_test/influence_model_responses.jsonl b/usecase/solar-political-influence-analyzer/src/ai-engine/dev_test/influence_model_responses.jsonl new file mode 100644 index 0000000..cced58d --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/dev_test/influence_model_responses.jsonl @@ -0,0 +1,19 @@ +{"query": "박근혜", "gold_report": {"report_title": "박근혜 전 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2013–2017", "question_answer": "박근혜 전 대통령은 창조경제와 문화융성 정책을 통해 사물인터넷·3D프린팅 등 신산업 분야 스타트업과 한류 콘텐츠 기업들의 성장을 도모했습니다. 또한 중동 순방 경제외교를 통해 대형 건설사의 해외수주를 지원했고, 부동산 활성화를 위한 규제 완화로 건설경기에 긍정적인 영향을 미쳤습니다. 그러나 최순실 사태로 일부 기업과의 부정적 연결 고리가 드러나며 정책 추진에 대한 신뢰성이 타격을 입었습니다.", "influence_chains": [{"politician": "박근혜", "policy": "창조경제 산업육성", "industry_or_sector": "ICT/신산업", "companies": ["TPC(티피씨)", "효성ITX"], "impact_description": "박근혜 정부는 ICT 기반 창조경제를 내세워 사물인터넷, 3D프린팅 등 4차산업혁명 관련 기업을 지원했습니다. 그 영향으로 3D 프린터 제조사 TPC 등 관련주들이 정책 발표 직후 급등하는 등 수혜를 입었고:contentReference[oaicite:19]{index=19}:contentReference[oaicite:20]{index=20}, 효성ITX 등 일부 IT기업 주가는 창조경제 언급 때마다 상승세를 보였습니다. 이는 정부의 규제 완화와 R&D 지원에 대한 기대감이 해당 기업들의 성장 모멘텀으로 작용한 사례입니다.", "evidence": [{"source_title": "[상반기 달군 테마주] 朴대통령 “창조경제” 발언에 사물인터넷株 '고공행진'", "url": "https://www.etoday.co.kr/news/view/932921"}]}, {"politician": "박근혜", "policy": "문화융성 정책", "industry_or_sector": "문화콘텐츠/미디어", "companies": ["CJ E&M", "팬엔터테인먼트"], "impact_description": "한류 확산과 문화콘텐츠 산업 육성을 위한 문화융성 정책으로, CJ E&M과 팬엔터테인먼트 같은 드라마·예능 제작사는 정부의 펀드 조성 및 해외진출 지원에 힘입어 사업 확장에 긍정적 영향을 받았습니다:contentReference[oaicite:21]{index=21}:contentReference[oaicite:22]{index=22}. 국내 미디어 기업들은 정책 수혜 기대 속에 투자와 제작이 활성화되었으며, 문화콘텐츠 수출 증대로 이어지는 성과를 거두었습니다.", "evidence": [{"source_title": "신정부 정책 수혜株..코스닥을 주목하라 - 뉴스토마토", "url": "https://www.newstomato.com/ReadNews.aspx?no=333218"}]}, {"politician": "박근혜", "policy": "중동 순방 경제외교", "industry_or_sector": "건설/인프라", "companies": ["현대건설", "대우건설"], "impact_description": "박근혜 정부 시절 적극적인 정상외교를 통해 중동지역 인프라 사업을 수주하도록 지원한 결과, 현대건설과 대우건설 등 국내 대형 건설사들이 이란·중동 시장에서 대규모 공사 계약을 체결하는 성과를 거두었습니다. 2015년 이란 방문 당시 수십조 원 규모의 MOU가 체결되는 등 이러한 경제외교는 건설주에 호재로 작용하여 주가 상승을 이끌기도 했습니다.", "evidence": [{"source_title": "박근혜 대통령, 경제사절단과 순방 성과 논의 / YTN", "url": "https://www.ytn.co.kr/_ln/0101_201603171803123166"}]}, {"politician": "박근혜", "policy": "부동산 규제 완화", "industry_or_sector": "건설/부동산", "companies": ["현대산업개발", "호반건설"], "impact_description": "취득세 영구 인하, 분양가 상한제 탄력운영 등 부동산 활성화 정책을 펼치며 주택시장이 회복되자, HDC현대산업개발과 호반건설 등 국내 건설사들의 분양 실적과 주가에 긍정적 효과가 나타났습니다:contentReference[oaicite:23]{index=23}:contentReference[oaicite:24]{index=24}. 정부가 다주택자 양도세 중과 폐지 등 추가 부동산 대책을 내놓을 것이라는 전망 속에 건설업종 전반에 투자심리가 개선되었습니다.", "evidence": [{"source_title": "신정부 정책 수혜株..코스닥을 주목하라 - 뉴스토마토", "url": "https://www.newstomato.com/ReadNews.aspx?no=333218"}]}], "notes": "2013–2017년 박근혜 정부 기간을 대상으로 하였으며, 정책 발표와 해외 순방 시점의 업계 동향을 중심으로 서술했습니다. 창조경제 추진과 문화융성 정책은 초기 시장 기대를 모았으나, 말기에 불거진 국정농단 사건으로 일부 기업과 정책 간의 부정적 영향도 고려해야 합니다."}, "model_response": {"report_title": "박근혜 정부의 정치-경제 영향력 네트워크 분석", "time_range": "2013–2017", "question_answer": "박근혜 대통령은 창조경제 이니셔티브를 중심으로 첨단 산업 및 스타트업 분야에 영향을 미쳤으며, 삼성, SK 그룹, 현대와 같은 대기업들과의 정치적-경제적 네트워크를 형성했습니다. 이 정책은 최순실 게이트와 같은 부패 사건으로 이어졌고, 대기업들은 정부 지원을 받는 대가로 로비 활동을 통해 특혜를 얻었습니다. 주요 증거로는 네이버 단독 보도와 나무위키의 창조경제 관련 문서가 있습니다.", "influence_chains": [{"politician": "박근혜", "policy": "창조경제 이니셔티브", "industry_or_sector": "첨단 산업 및 스타트업", "companies": ["Samsung", "SK Group", "Hyundai"], "impact_description": "창조경제 정책을 통해 대기업들이 정부 지원을 받고 로비 활동을 통해 특혜를 얻었으며, 최순실 게이트와 같은 부패 사건으로 연결됨", "evidence": [{"source_title": "[단독] `창조경제 수혜` 이창환…父 이영복 로비 도왔나", "url": "https://n.news.naver.com/mnews/article/009/0003851382?sid=101"}, {"source_title": "창조경제 (r737 판) - 나무위키", "url": "https://namu.wiki/w/%EC%B0%BD%EC%A1%B0%EA%B2%BD%EC%A0%9C?uuid=615b40ad-ed25-42ed-93ea-06841939a135"}]}, {"politician": "박근혜", "policy": "창조경제 이니셔티브", "industry_or_sector": "대기업 및 재벌", "companies": ["Samsung", "SK Group", "Hyundai"], "impact_description": "대기업들이 최순실 재단 등에 기부금을 제공하고 정부로부터 규제 완화 및 합병 승인 등의 특혜를 받음", "evidence": [{"source_title": "[단독] `창조경제 수혜` 이창환…父 이영복 로비 도왔나", "url": "https://n.news.naver.com/mnews/article/009/0003851382?sid=101"}, {"source_title": "창조경제 (r737 판) - 나무위키", "url": "https://namu.wiki/w/%EC%B0%BD%EC%A1%B0%EA%B2%BD%EC%A0%9C?uuid=615b40ad-ed25-42ed-93ea-06841939a135"}]}], "notes": "박근혜 정부의 창조경제 정책은 표면적으로는 스타트업과 중소기업 지원을 목표로 했으나, 실제로는 대기업들의 로비 활동과 부패 사건으로 이어졌으며, 이는 최순실 게이트로 인해 폭로됨. 정책 효과는 제한적이었고, 경제 성장률 저하와 사회적 비판을 초래함."}} +{"query": "이명박", "gold_report": {"report_title": "이명박 전 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2008–2013", "question_answer": "이명박 전 대통령은 4대강 개발 사업을 추진하여 삼성물산 등 대형 건설사가 대규모 토목 공사를 수주하는 혜택을 누렸으며, 해외 자원개발과 원전 수출 외교로 한국전력, 현대건설 등이 글로벌 프로젝트에 참여하는 성과를 거두었습니다. 한편 법인세 인하와 친기업 정책을 통해 대기업들의 투자 환경을 개선시켰으나, 부작용으로 부의 양극화 논란도 야기되었습니다.", "influence_chains": [{"politician": "이명박", "policy": "4대강 사업 추진", "industry_or_sector": "건설/토목", "companies": ["삼성물산", "현대건설"], "impact_description": "이명박 정부의 4대강 정비 사업으로 국내 주요 건설사들이 대규모 준설과 보 건설 공사를 맡아 막대한 공사 물량을 수행했습니다. 특히 삼성물산은 4대강 사업 최대 수혜 기업으로 지목될 만큼 많은 공사를 수주하여 매출 증대에 기여했고:contentReference[oaicite:25]{index=25}, 현대건설을 비롯한 대형 건설사들도 토목 매출이 크게 늘어나며 단기적인 호황을 누렸습니다.", "evidence": [{"source_title": "4대강사업 최대 수혜는 '삼성건설'", "url": "https://ko.wikipedia.org/wiki/4%EB%8C%80%EA%B0%95_%EC%A0%95%EB%B9%84_%EC%82%AC%EC%97%85"}]}, {"politician": "이명박", "policy": "원전 수출 외교", "industry_or_sector": "에너지/원자력", "companies": ["한국전력", "현대건설"], "impact_description": "2009년 이명박 정부는 UAE에 한국형 원자력발전소 4기를 수출하는 대형 계약(약 20조 원 규모)을 따냈습니다:contentReference[oaicite:26]{index=26}. 이 원전 수주 성공으로 한국전력은 글로벌 원전사업 주관사로서 국제 위상이 높아졌고, 현대건설 등 참여 건설사들은 해외 원전 건설 공사를 수행하며 수익과 기술경쟁력을 확보하는 성과를 올렸습니다. 이는 대통령의 적극적인 비즈니스 외교가 결정적인 역할을 한 사례입니다:contentReference[oaicite:27]{index=27}.", "evidence": [{"source_title": "임종석 UAE 방문 논란…한국전력 2009년 UAE 원전 수주", "url": "https://weekly.chosun.com/client/news/viw.asp?ctcd=C09&nNewsNumb=002587100013"}, {"source_title": "아랍에미리트(UAE) 원전의 진실 - 동아일보", "url": "https://www.donga.com/news/Politics/article/all/20180106/88052120/1"}]}, {"politician": "이명박", "policy": "법인세 인하 등 친기업 정책", "industry_or_sector": "재계/대기업", "companies": ["삼성전자", "현대자동차"], "impact_description": "이명박 정부는 법인세 최고세율을 25%에서 22%로 인하하고 각종 규제를 완화하는 친기업 정책을 펼쳤습니다. 그 결과 삼성전자, 현대자동차 등 대기업들은 세 부담 경감으로 이익이 증가하고 잉여현금이 늘어나 대규모 투자와 배당을 확대했습니다. 다만 이러한 혜택은 주로 대기업에 집중되어 중소기업 및 소득분배 측면에서는 한계가 있다는 지적도 있었습니다.", "evidence": [{"source_title": "20대 기업 법인세 부담 감소…투자 대비 배당↑", "url": "https://www.hankyung.com/economy/article/201301244074g"}]}], "notes": "2008–2013년 이명박 정부 기간 동안의 주요 경제정책 영향을 정리했습니다. 당시 대규모 국책사업과 해외사업 성과에 초점을 맞추었으며, 정책의 긍정적 효과와 함께 논란이 된 부분(예: 4대강 환경 문제, 부의 편중 현상)도 존재함을 유의해야 합니다."}, "model_response": {"report_title": "이명박 대통령의 정치-경제 영향력 네트워크 분석", "time_range": "2008–2013", "question_answer": "이명박 대통령은 4대강 복원 프로젝트와 녹색성장 정책을 통해 건설 및 에너지 산업과 밀접한 관계를 형성했습니다. 4대강 프로젝트는 현대건설, 삼성물산, 대우건설 등 주요 건설사들과 계약을 체결했으며, 입찰 조작 스캔들로 이어졌습니다. 녹색성장 정책은 재생에너지 및 원자력 에너지 분야에 투자했으며, 한화엔지니어링과 두산에너빌리티 같은 기업들이 혜택을 받았습니다. 이명박 대통령은 건설사 로비 의혹과 관련된 수사를 받았으나, 직접적인 개입은 명확히 입증되지 않았습니다.", "influence_chains": [{"politician": "이명박", "policy": "4대강 복원 프로젝트", "industry_or_sector": "건설업", "companies": ["Hyundai Engineering & Construction", "Samsung C&T", "Daewoo Construction", "GS Engineering", "SK Engineering & Construction"], "impact_description": "이명박 정부의 4대강 사업은 현대건설, 삼성물산, 대우건설 등 주요 건설사들과 1조 원 규모의 계약을 체결했으며, 입찰 조작 스캔들로 8개 기업이 1.115조 원의 벌금을 부과받았습니다. 이 프로젝트는 건설사들에게 막대한 수익을 제공했으나, 환경 파괴와 안전 문제로 비판을 받았습니다.", "evidence": [{"source_title": "Four Rivers Project Contracts (CAUON)", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQF0ttKnDQMaQEoM-rAH2ifbsCxDsLz-Hp_WLNJikbuY_pzP-XB_RmIJlB3gOXOapuvZ3Hhd3AAjNgYkKuDc3Xd_AjM6BO4APcWYVTF0_5Ub48Xm8gxASEyqSVBW4vkMwhVXB7XqCAf3SWWfL2lZBJ7PmrMZTFA="}, {"source_title": "Hyundai and Daewoo Bid-Rigging (Korea Times)", "url": "https://www.koreatimes.co.kr/business/companies/20120606/hyundai-daewoo-face-trouble-overseas"}, {"source_title": "‘4대강 건설사’ 25곳 압수수색…비자금·로비의혹 수사 예고", "url": "https://n.news.naver.com/mnews/article/028/0002188190?sid=102"}]}, {"politician": "이명박", "policy": "저탄소 녹색성장 정책", "industry_or_sector": "에너지", "companies": ["Global Green Growth Institute (GGGI)", "Hanwha Engineering", "Doosan Enerbility"], "impact_description": "이명박 정부의 녹색성장 정책은 재생에너지 및 원자력 에너지 분야에 투자했으며, 한화엔지니어링과 두산에너빌리티 같은 기업들이 혜택을 받았습니다. 녹색성장연구소(GGGI) 설립으로 국제적 협력도 강화되었습니다.", "evidence": [{"source_title": "Lee Myung-bak’s Green Growth (Korea Herald)", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGHg7pRnxTKj4nhSUBQkSW397WQyYnuJr9IRraMy1ij0kz02SxpnIgKKh91_j2bgbfOk4jkFsl2VYL0BUXXswVqDzaJ98iHiIle7Wtq8JYAxpTMGhtbEsvcxiQIs6tcGVRelPI3PRlY"}, {"source_title": "Green Growth and Nuclear Energy (Stanford)", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQG3Ec0leADZ3d7GlN0yKQVfrDhKhI_q1IW7_BTEVCezKP-KsScMdJjWU9syFo0Vjk6_MNx1RmSlRJmAMNTaVbfmMKPT_qFwqveb2nRQGIVwqPZsRYkqD61fkjqe5V-UAhjcN_ZTYvqtzPOFMqhpZ5T0XL5AkbmV6WMfDIiDJwH0WR8I0p6HMoa0bqFYWlnaE7bLpWw60CeNdkblMLIPl5NvyZu-Lbfs2_1FKCQ="}]}], "notes": "이명박 대통령의 건설 및 에너지 정책과의 연관성은 명확한 증거를 바탕으로 확인되었으나, 일부 기업과의 직접적인 로비 관계는 추가 조사가 필요할 수 있습니다. 4대강 프로젝트와 관련된 건설사들의 입찰 조작은 법적 처벌을 받았으나, 이명박 대통령 본인의 직접적인 개입은 명확히 입증되지 않았습니다."}} +{"query": "안철수", "gold_report": {"report_title": "안철수 의원의 정치·경제 영향력 네트워크 분석", "time_range": "2025년 11월 24일 기준", "question_answer": "안철수 의원은 벤처기업인 출신답게 ICT 산업과 스타트업 육성을 강조하여 안랩 등 소프트웨어 기업과 코스닥 벤처시장에 긍정적 영향을 미쳤습니다. 4차 산업혁명 및 코로나19 대응 과정에서 IT 혁신과 백신 개발 지원을 주창하며 관련 업계의 성장을 뒷받침했습니다. 다만 정치 행보에 따른 테마주 변동성도 커, 총리설 등으로 안랩 주가가 급등락하는 모습이 나타났습니다.", "influence_chains": [{"politician": "안철수", "policy": "소프트웨어·스타트업 육성", "industry_or_sector": "IT/벤처", "companies": ["안랩", "카카오벤처스"], "impact_description": "안철수 의원은 창업 활성화와 코딩교육 강화 등 IT 인재 양성 정책을 지속적으로 주장해왔습니다. 이러한 흐름 속에 그의 경영철학이 반영된 보안기업 안랩은 국내 소프트웨어 육성 분위기에서 꾸준한 성장을 이어갔습니다. 또한 안 의원이 벤처 생태계 조성을 강조함에 따라 카카오벤처스 등 스타트업 투자업계에도 긍정적 인식이 확산되어 투자가 활성화되는 효과가 있었습니다.", "evidence": [{"source_title": "안랩, 소프트웨어정책 영향으로 성장세 지속", "url": "https://www.sisajournal.com/news/articleView.html?idxno=235310"}]}, {"politician": "안철수", "policy": "코로나19 백신 개발 지원", "industry_or_sector": "제약/백신", "companies": ["SK바이오사이언스"], "impact_description": "의사 출신인 안철수 의원은 코로나19 국면에서 국내 백신 개발의 중요성을 역설하며 범정부 지원을 촉구했습니다. 그에 따라 SK바이오사이언스는 정부로부터 임상시험 비용 지원과 행정절차 간소화 혜택을 받아 국산 백신 개발을 가속화할 수 있었고:contentReference[oaicite:29]{index=29}:contentReference[oaicite:30]{index=30}, 결과적으로 국내 백신 주권 확보와 해당 기업의 위상 제고로 이어졌습니다.", "evidence": [{"source_title": "정부, 코로나19 치료제·백신 개발 임상 비용 940억원 지원 - 정책브리핑", "url": "https://www.korea.kr/news/policyNewsView.do?newsId=148878275"}]}, {"politician": "안철수", "policy": "정치 테마주 변동", "industry_or_sector": "주식시장/테마주", "companies": ["안랩"], "impact_description": "안철수 의원의 정치적 입지 변화는 최대주주로 있는 안랩 주가에 직결되었습니다. 2022년 대통령직 인수위원장 시절 ‘안철수 총리 기용설’이 돌자 안랩 주가가 보름 만에 148% 급등하며 사상 최고가를 경신했고:contentReference[oaicite:31]{index=31}, 이후 총리직 고사 소식에 9% 이상 폭락하는 등:contentReference[oaicite:32]{index=32} 정치 테마주로서 급등락을 반복했습니다. 이는 정치인의 입지가 기업가치와 시장 심리에 미친 대표적 사례입니다.", "evidence": [{"source_title": "'안철수 총리설'에 안랩 주가 고공행진…10년 만에 역대 최고가", "url": "https://www.sisajournal.com/news/articleView.html?idxno=235310"}, {"source_title": "안철수 총리직 고사에....안랩 주가 9%대 폭락", "url": "https://www.chosun.com/economy/stock-finance/2022/03/30/ISPOPMI45JBQ5BEQXZE77YD7FM/"}]}], "notes": "안철수 의원의 영향력은 기업인에서 정치인으로 변모한 특이한 경력에서 비롯되며, IT산업 정책과 주식시장 테마 양측면이 혼재되어 있습니다. 분석은 2025년 기준 공개된 자료와 시장 반응을 토대로 했습니다."}, "model_response": {"report_title": "안철수의 정치-경제 영향력 네트워크 분석", "time_range": "2012–2025", "question_answer": "안철수는 국민의당 창당 및 대통령 후보 활동을 통해 과학기술·반도체·IT 산업 규제 완화 정책을 추진했으며, 이는 AhnLab, 삼성, SK하이닉스 등 기업과 이해관계가 일치합니다. AhnLab 최대주주(28.57% 지분)로서 사이버보안 정책 연계 가능성이 있으며, 2017년 대선 당시 AhnLab 임원의 정치후원금 기부로 인해 이해상충 논란이 존재했습니다.", "influence_chains": [{"politician": "안철수", "policy": "AI, 반도체, 미래 모빌리티 등 5대 전략 산업 육성 및 규제 완화", "industry_or_sector": "과학기술·반도체·IT", "companies": ["AhnLab", "Samsung", "SK하이닉스"], "impact_description": "안철수의 과학기술 정책(규제 완화)은 AhnLab의 사이버보안 사업과 반도체·IT 업계(삼성, SK하이닉스 등)에 긍정적 영향을 미쳤으며, AhnLab 임원의 정치후원금 기부는 기업-정치인 관계 상징성을 부각시켰다.", "evidence": [{"source_title": "안철수 AhnLab 이해관계 정치자금 기업 후원", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEweT1o9Q8N5aWCKl9ONPuSr80NuSX4LSMSeR9AsOE_7rsirafkhlZVf17iP9eHENzDd9ga3ZGb57hSDZyOgnYN-sbKCwiLCuAdReO47bGqMp3vIeebN9dOYVZQvCa3qYLG5CfN3Cko2OI="}, {"source_title": "안철수 지분 보유 현황", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHq5b7U8oRhaGTYVnU95IRDBGVx8ImrDWNWGZFPLT7raFtQUhai_4h5WpNN0w5m6bo2hvjtrbM850L6TibiOYyjhPy2XjipJa5KsOoE-brA3H9eVuOXGwod8XOybOXvncwyqi7_AMKxX6XY1rXpNQry3Bi1askj60ik5uU="}, {"source_title": "안철수의 과학기술 정책(규제 완화)이 반도체·IT 업계와 긍정적 반응 유도", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGxAm6Q5dmlbxiuugfscpdXW7CErWYJILwoiU1_Sy92L6uLbe3kOyK2nmFUD-EKIS1cMI5R8t_UNs2yJIIR5OmDjLLYaMLcqmcoS5L22Be036M87bI22uYoreJvrKQpJiR0cyQYWjxVkKEnSPRiKo85y5wGq2M="}]}], "notes": "안랩과 정책 간 직접적 로비 증거는 부재하며, 규제 개혁이 특정 기업에 미친 영향에 대한 구체적 데이터 필요"}} +{"query": "이준석", "gold_report": {"report_title": "이준석 전 국민의힘 대표의 정치·경제 영향력 네트워크 분석", "time_range": "2025년 11월 24일 기준", "question_answer": "이준석 전 대표는 2030 세대의 목소리를 대변하며 플랫폼 경제와 가상자산 등 신산업에 우호적인 태도를 보여 관련 업계 담론을 선도했습니다. 승차공유 등 모빌리티 혁신에 대한 규제 완화를 주장하여 쏘카 등 스타트업의 입지를 언급했고, 젊은 층의 관심이 높은 암호화폐 제도화 필요성을 제기하며 업비트 등 거래소에 간접적인 긍정 여론을 형성했습니다. 다만 직접 정책 집행 권한이 없어 실질 영향은 제한적이었습니다.", "influence_chains": [{"politician": "이준석", "policy": "공유 모빌리티 규제 완화 주장", "industry_or_sector": "모빌리티/스타트업", "companies": ["타다(VCNC)", "쏘카"], "impact_description": "이준석 전 대표는 택시산업과 승차공유 서비스의 공정 경쟁을 강조하며, 스타트업 타다 금지법 통과에 반대 의견을 꾸준히 제시했습니다:contentReference[oaicite:33]{index=33}. 그의 주장들은 쏘카 등 모빌리티 플랫폼 기업이 규제 완화 여론을 얻는 데 기여했고, 관련 업계에 혁신 필요성을 환기시켰습니다. 비록 당장의 정책 변화로 이어지진 않았으나, 미래 세대 정치 담론으로 모빌리티 혁신이 부상하는 효과가 있었습니다.", "evidence": [{"source_title": "두 달 택시 몰아본 이준석 “카풀 반대할 수밖에 없더라” - 서울신문", "url": "https://www.seoul.co.kr/news/newsView.php?id=20181213500020"}]}, {"politician": "이준석", "policy": "가상자산 제도화 및 세대공감", "industry_or_sector": "금융/가상자산", "companies": ["업비트", "빗썸"], "impact_description": "젊은 층의 투자열풍을 의식한 이준석 전 대표는 암호화폐 과세 유예와 제도권 편입의 필요성을 역설했습니다. 이러한 행보는 국내 최대 가상자산 거래소 업비트와 빗썸 등에게 우호적인 환경 조성으로 이어져, 관련 업계는 정치권 논의에 힘입어 일정 기간 투자심리가 개선되는 효과를 누렸습니다. 이는 정치권에서 가상자산이 공식 의제로 다뤄지는 데 일조한 사례로 평가됩니다.", "evidence": [{"source_title": "이준석 “가상자산 과세, 청년층 의견 더 들어야” - 코인데스크코리아", "url": "http://www.coindeskkorea.com/news/articleView.html?idxno=75211"}]}], "notes": "이준석 전 대표는 입법 권한은 없었지만 당대표로서 담론 형성과 여론에 영향을 미쳤습니다. 본 분석에서는 그의 주장과 이에 따른 산업계 분위기 변화를 다루었으며, 실제 정책 실현 여부와는 구분됩니다."}, "model_response": {"report_title": "이준석의 정치-경제 영향력 네트워크 분석 (2025년 11월 기준)", "time_range": "2025년 11월", "question_answer": "이준석은 반도체 산업 지원, 게임 규제 완화, AI 규제기준국가제 도입 등의 정책을 통해 SK하이닉스, 넥슨, NC소프트, 카카오게임즈, 네이버 클라우드 등 주요 기업과 연결되어 있습니다. 그의 정치적 영향력은 개혁신당을 중심으로 한 제3의 정치 세력 구축에 있으며, 경제 정책에서는 지방 세제 자율권 확대 및 리쇼어링 정책을 강조하고 있습니다.", "influence_chains": [{"politician": "이준석", "policy": "반도체 특별법 지원 및 52시간 근무제 유연화", "industry_or_sector": "반도체 산업", "companies": ["SK하이닉스"], "impact_description": "이준석은 SK하이닉스 이천공장을 방문해 반도체 산업 지원을 위한 정책 협력을 논의했으며, 52시간 근무제 유연화 및 반도체 특별법 지원을 통해 글로벌 경쟁력 강화를 추진했습니다.", "evidence": [{"source_title": "[2025 폴리뉴스·상생과통일포럼 제25차 산업포럼] 정치인 축사 모음···", "url": "https://www.polinews.co.kr/news/articleView.html?idxno=714590"}]}, {"politician": "이준석", "policy": "게임 산업 규제 완화", "industry_or_sector": "게임 산업", "companies": ["넥슨", "NC소프트", "카카오게임즈"], "impact_description": "이준석은 게임을 '제2의 반도체 산업'으로 규정하며 블록체인 게임 규제 정비, 확률형 아이템 역차별 해소, 웹보드 결제 한도 완화 등을 통해 게임 산업 육성을 추진했습니다.", "evidence": [{"source_title": "이준석 “게임, 제2의 반도체 산업... 규제 완화로 세계 시장 10% 점유”", "url": "https://www.msn.com/ko-kr/news/other/%EC%9D%B4%EC%A4%80%EC%84%9D-%EA%B2%8C%EC%9E%84-%EC%A0%9C2%EC%9D%98-%EB%B0%98%EB%8F%84%EC%B2%B4-%EC%82%B0%EC%97%85-%EA%B7%9C%EC%A0%9C-%EC%99%80%ED%99%94%EB%A1%9C-%EC%84%B8%EA%B3%84-%EC%8B%9C%EC%9E%A5-10-%EC%A0%90%EC%9C%A0/ar-AA1FtwCQ"}]}, {"politician": "이준석", "policy": "규제기준국가제 도입", "industry_or_sector": "AI/데이터 산업", "companies": ["네이버 클라우드"], "impact_description": "이준석은 '규제기준국가제' 도입을 통해 AI·반도체 분야의 해외 규제 수준 벤치마킹을 추진하며 네이버 클라우드 등 AI 인프라 기업과의 협력 가능성을 제시했습니다.", "evidence": [{"source_title": "[2025 폴리뉴스·상생과통일포럼 제25차 산업포럼] 정치인 축사 모음···", "url": "https://www.polinews.co.kr/news/articleView.html?idxno=714590"}]}], "notes": "이준석의 정책-산업-기업 연결성은 주로 반도체, 게임, AI 분야에서 확인되었으며, 특정 기업과의 직접적인 로비 또는 정책 수혜 증거는 추가 조사가 필요합니다. 지방 분권 및 리쇼어링 정책은 잠재적 수혜 기업을 특정하지 못했습니다."}} +{"query": "심상정", "gold_report": {"report_title": "심상정 의원의 정치·경제 영향력 네트워크 분석", "time_range": "2025년 11월 24일 기준", "question_answer": "심상정 의원은 노동존중 사회를 기치로 최저임금 인상과 비정규직의 정규직화 등을 주도하며 대기업의 무노조 경영을 강하게 비판해 삼성전자 등 기업의 노동관행 변화를 촉구했습니다. 또한 그린뉴딜과 탈탄소 정책을 앞장서 제안하여 석탄발전 축소와 재생에너지 확대에 영향을 미쳤습니다. 이처럼 노동·환경 분야에서 진보적 의제를 선도하며 관련 기업들의 경영 전략에도 일정 부분 자극을 주었습니다.", "influence_chains": [{"politician": "심상정", "policy": "노조할 권리 보장 투쟁", "industry_or_sector": "대기업/노동", "companies": ["삼성전자"], "impact_description": "심상정 의원은 국회에서 삼성의 '무노조 경영'을 집요하게 문제삼으며 2013년 삼성의 노조탄압 문건을 폭로하는 등 노조할 권리 보장에 앞장섰습니다:contentReference[oaicite:34]{index=34}. 이러한 노력은 삼성전자에 노조 설립이 현실화되는 계기를 마련했고, 법원도 삼성의 조직적 노조와해 행위를 유죄로 인정하여 삼성으로 하여금 무노조 경영 원칙을 폐기하고 노동조합을 받아들이도록 압력을 가했습니다:contentReference[oaicite:35]{index=35}:contentReference[oaicite:36]{index=36}.", "evidence": [{"source_title": "심상정이 노동절 앞두고 또다시 '삼성' 지목한 이유 - 오마이뉴스", "url": "http://www.ohmynews.com/NWS_Web/View/at_pg.aspx?CNTN_CD=A0002429571"}, {"source_title": "심상정 “삼성 노조와해 유죄…반헌법적 무노조 황제경영 원칙 폐기해야”", "url": "http://www.lawleader.co.kr/news/articleView.html?idxno=3823"}]}, {"politician": "심상정", "policy": "최저임금 인상 및 정규직화", "industry_or_sector": "소매/서비스", "companies": ["이마트", "CJ대한통운"], "impact_description": "정의당의 심상정 의원은 최저임금의 가파른 인상을 강력히 지지하고 공공부문 비정규직의 정규직 전환을 추진했습니다. 그 결과 대형마트 이마트는 급격한 인건비 상승으로 무인계산대 도입 등 구조조정을 검토하게 되었고, 택배회사 CJ대한통운은 분류인력 직고용 등 고용구조 변화를 단행했습니다. 이처럼 노동자의 처우 개선 정책은 해당 기업들의 비용 구조와 운영 방식에 직접적 영향을 미쳤습니다.", "evidence": [{"source_title": "심상정 의원 “최저임금 1만원 시대, 대기업도 사회적 책임 다해야”", "url": "https://www.khan.co.kr/economy/economy-general/article/201807181453001"}]}, {"politician": "심상정", "policy": "녹색뉴딜·탈탄소 정책", "industry_or_sector": "에너지/환경", "companies": ["한국남동발전", "두산중공업"], "impact_description": "심상정 의원은 일찍이 Green New Deal을 주장하며 석탄발전소 폐쇄와 재생에너지 전환을 촉구했습니다. 이로 인해 석탄 발전을 주력으로 하던 한국남동발전은 영흥화력 등의 조기 폐지와 LNG 전환 계획을 수립했고, 원전·석탄 플랜트 기업 두산중공업(현 두산에너빌리티)은 정부의 탈석탄 기조 속에서 경영 위기를 겪기도 했으나 이후 신재생 사업으로 사업 방향을 선회했습니다. 이러한 변화는 진보정당의 환경 의제 선도가 기업 전략 재편에 영향을 준 사례입니다.", "evidence": [{"source_title": "심상정 “2050 탄소중립 위해 석탄발전 중단 로드맵 시급”", "url": "https://www.edaily.co.kr/news/read?newsId=03715206625924472&mediaCodeNo=257"}]}], "notes": "심상정 의원의 영향력은 입법보다는 의제 설정과 여론 압박을 통한 간접적인 효과가 크며, 본 분석에서는 노동·환경 분야에서 기업에 미친 영향을 위주로 서술했습니다. 정치인의 발언과 실제 정책 실현 간에는 차이가 있을 수 있습니다."}, "model_response": {"report_title": "심상정 의원의 정치-경제 영향력 네트워크 분석", "time_range": "2004–2024", "question_answer": "심상정 의원은 노동운동가 출신으로 정의당 대표를 역임하며 주 4일 근무제, 산재보험 확대, 재벌 개혁, 그린노믹스 등 주요 정책을 추진했습니다. 이 정책들은 제조업 노동 환경 개선, 재생에너지 산업 지원, 대기업 규제 강화, 플랫폼 산업 규제 등에 영향을 미쳤습니다. 특히 포스코, 삼성, 현대, SK, 이마트, 네이버, 카카오, 업비트, 위메이드 등 기업과 산업에 간접적 영향을 주었으나, 공식적 기업 파트너십은 확인되지 않았습니다.", "influence_chains": [{"politician": "심상정", "policy": "주 4일 근무제, 산재보험 확대, 재벌 개혁, 그린노믹스", "industry_or_sector": "제조업, 에너지, 재벌, 플랫폼, 중소기업, 암호화폐", "companies": ["포스코", "현대", "삼성", "SK", "이마트", "네이버", "카카오", "업비트", "위메이드"], "impact_description": "심상정 의원의 주 4일 근무제, 산재보험 확대, 재벌 개혁, 그린노믹스 정책은 제조업 노동 환경 개선, 재생에너지 산업 지원, 대기업 규제 강화, 플랫폼 산업 규제 등에 영향을 미쳤다. 특히 포스코 하청 노동자 문제 해결, 삼성·현대 등 재벌 기업의 지배 구조 개혁 압력, SK·이마트 등 중소기업 지원 정책 수혜, 네이버·카카오 등 플랫폼 기업 규제 강화, 업비트·위메이드 등 암호화폐 관련 정책 수혜주 형성에 간접적 영향을 주었다.", "evidence": [{"source_title": "Wikipedia (Sim Sang-jung)", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGFGaUODF8w2qRkV1kF4a6DVWx9hO81nHVf9wmGWrJTKnYxIYNXH02w91a_fk3XOUkCHF-NepLw85bz-ZiSYv5NKheMD6aDwzXBKe7xm4hTqa8HOyscO5Pw3fShWqtb0SOYW2zKlwREwM2mAuanHpQEX6VFbw=="}, {"source_title": "대선 테마주 및 정책 수혜주 분석", "url": "https://n.news.naver.com/mnews/article/024/0000073207?sid=101"}]}], "notes": "공식적 기업 파트너십은 확인되지 않았으나, 정책 추진으로 인해 특정 산업 및 기업에 간접적 영향을 미친 것으로 분석됨. 산업재해 사망자 증가(2025년 3분기)와 같은 정책 한계도 존재함."}} +{"query": "Joe Biden", "gold_report": {"report_title": "Joe Biden 미국 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2021–2025년 11월 24일 기준", "question_answer": "조 바이든 대통령은 인플레이션 감축법(IRA)과 반도체 지원법(CHIPS Act) 등 대규모 산업 육성 정책을 통해 미국 내 전기차·배터리 및 반도체 기업에 막대한 지원을 제공했습니다. 이로써 Tesla와 LG Energy Solution 등이 세액공제 혜택으로 생산 투자를 늘리고, Intel과 TSMC는 첨단 공장 건설에 나섰습니다. 또한 동맹국들과 협력하여 글로벌 공급망을 재편하고, 친환경 에너지 전환을 추진함으로써 관련 기업들의 성장을 견인하고 있습니다.", "influence_chains": [{"politician": "Joe Biden", "policy": "인플레이션 감축법(IRA)", "industry_or_sector": "전기차/배터리", "companies": ["Tesla", "LG Energy Solution"], "impact_description": "2022년 제정된 IRA는 북미산 전기차에 대한 세액공제 혜택을 부여하여 Tesla 등 미국 전기차 제조사의 판매 경쟁력을 높였습니다. 또한 배터리 핵심광물 요건을 정함으로써 LG Energy Solution 등 한국 배터리 업체가 미국 현지공장 투자를 확대하도록 유인했습니다:contentReference[oaicite:37]{index=37}:contentReference[oaicite:38]{index=38}. 그 결과 Tesla는 미국 시장 점유율을 공고히 했고 LG에너지솔루션은 현지 생산을 늘려 IRA 인센티브를 확보하는 등 양사 모두 수혜를 입었습니다.", "evidence": [{"source_title": "\"미국이 제조업 미래 가질 것\"…바이든, 연일 'IRA 성과' 자축", "url": "https://news.nate.com/view/20220915n03449"}, {"source_title": "LG엔솔, 美 IRA 훈풍 업고 600MWh급 ESS 수주 - 글로벌이코노믹", "url": "https://m.g-enews.com/article/Industry/2023/07/20230707113056852699375367"}]}, {"politician": "Joe Biden", "policy": "CHIPS 및 과학법", "industry_or_sector": "반도체/제조", "companies": ["Intel", "TSMC"], "impact_description": "2022년 통과된 CHIPS Act를 통해 미국은 반도체 공장 건설에 527억 달러 보조금을 투입하여 자국 내 생산을 장려했습니다. 이에 Intel은 오하이오 등에 신규 팹 건설을 발표했고, TSMC도 애리조나에 첨단 파운드리 공장을 착공하는 등 적극 호응했습니다. 이 법안은 미국 내 반도체 생산능력 확충으로 공급망 안보를 강화하고, 관련 기업들에게 대규모 투자를 촉발하는 효과를 가져왔습니다.", "evidence": [{"source_title": "바이든, \"메이드 인 아메리카 반도체\" 인텔 공장 방문", "url": "https://www.voakorea.com/a/biden-intel-ohio-chips/6359882.html"}, {"source_title": "TSMC, 미국 애리조나에 3나노 공장 추가 투자", "url": "https://www.bbc.com/korean/news-63896506"}]}, {"politician": "Joe Biden", "policy": "동맹 공급망 및 친환경 정책", "industry_or_sector": "에너지/인프라", "companies": ["General Motors", "First Solar"], "impact_description": "바이든 대통령은 동맹국들과 협력하여 핵심 광물 공급망을 구축하고 친환경 인프라 투자를 확대했습니다. 이를 통해 General Motors는 호주·캐나다 업체와 배터리 핵심광물 공급 계약을 맺어 전기차 생산을 안정화했고, 태양광 패널 기업 First Solar는 IRA의 재생에너지 투자 세액공제에 힘입어 미국 내 신규 공장을 건설했습니다. 이 같은 국제 공조와 친환경 정책은 관련 기업들의 장기적 성장 기반을 강화했습니다.", "evidence": [{"source_title": "바이든, 호주·캐나다와 핵심광물 동맹 강화…GM 리튬 확보", "url": "https://www.reuters.com/business/autos-transportation/gm-signs-lithium-supply-agreement-with-australias-controlled-thermal-resources-2021-07-02/"}, {"source_title": "First Solar, IRA 타고 미 남부에 태양광 패널 공장 신설", "url": "https://www.nytimes.com/2023/08/11/business/energy-environment/first-solar-manufacturing-ira.html"}]}], "notes": "2021년 취임 이후 바이든 행정부의 주요 경제정책에 따른 기업 영향을 분석했습니다. 대규모 재정 지원 법안들은 아직 진행 중인 사안으로, 여기서 언급된 효과는 2025년 현재 가시화된 초기 성과를 토대로 작성되었습니다."}, "model_response": {"report_title": "조 바이든 대통령의 정치·경제·기업 연결성 분석", "time_range": "2021–2025", "question_answer": "조 바이든 대통령은 반도체, 청정 에너지, 의료, 자동차 등 다양한 산업 분야에서 주요 정책을 추진하며 기업들과 밀접한 관계를 유지하고 있습니다. CHIPS and Science Act, 인플레이션 감소법(IRA), 메디케어 약품 가격 협상 제도 등이 대표적인 정책으로, Intel, TSMC, Tesla, Pfizer, GM Korea 등 다양한 기업들에게 직접적인 영향을 미쳤습니다. 또한, 한국 기업들인 Samsung, SK Hynix, GM Korea도 미국 정책에 따라 생산 및 수출 전략을 조정해야 했습니다.", "influence_chains": [{"politician": "Joe Biden", "policy": "CHIPS and Science Act", "industry_or_sector": "반도체 및 첨단 제조", "companies": ["Intel", "TSMC", "Samsung", "Micron"], "impact_description": "CHIPS and Science Act를 통해 반도체 생산 및 연구 개발에 대한 대규모 투자가 이루어졌으며, Intel, TSMC, Samsung, Micron과 같은 기업들이 미국 내 신규 또는 확장된 제조 시설을 발표했습니다. 이 정책은 반도체 공급망 강화와 기술 경쟁력 확보를 목표로 합니다.", "evidence": [{"source_title": "economictimes.com", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGiY_SMRlUEiUd67ljy9su31Mbzs9M6iUQpmLHbiW8Tw8CDGwdiBIShqXXCj2igzlAR5FkWID8xdS2DfIoZztkWZw9NhpWwg_DS9pBaHe-LdHWA-hXPkvMOQWk8aOPGeko2sjfcS3VjGQW1czs8X17IoVqhPNYvsCJuZVWqPruShmtShXYEdhi15QdUnuMlRqEnZ0NTW51FBNJ5G8r60OYR4Xre39p5ARi-L2saAHosphz_RilRAlQ5Ij07Xfodihvexao6DfrK6UW3jj4ytdbEeBiJQSKhI9jsSJKB_Z8vTe06uRC0AISXR1j1UXzj-hUE"}, {"source_title": "cfr.org", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEp8Yj4KD5eUY2deNwDwSfCHX5WDQqMFIDw0WezyNoMHlTjOWEtrazHvdxPI9KjsoTzgYkUzzwvWuh9NglNxnByQwnD40joadtfOf7eWnoUDLgi0IN3Gfj3o4VdEHZa0W9yMeYk3cD6U_7mggGDoAHX9PuMIHx-p-RUCiEDcYi3ukiCljJAvhXPQc5izIiPWLAP5Q=="}]}, {"politician": "Joe Biden", "policy": "Inflation Reduction Act", "industry_or_sector": "청정 에너지 및 전기차", "companies": ["Tesla", "Panasonic", "GM"], "impact_description": "인플레이션 감소법(IRA)은 전기차 및 배터리 생산에 대한 세제 혜택을 제공하여 Tesla, Panasonic, GM과 같은 기업들이 미국 내 생산 시설을 확장하도록 유도했습니다. 이 정책은 청정 에너지 전환과 국내 제조업 활성화를 목표로 합니다.", "evidence": [{"source_title": "pv-magazine-usa.com", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEP7-IeP-Yp2s5u5-XwI7fTxqNH7lfInYfhhoc4TPfeeXX7c1-dToDfAmyknXn-MVKT3QzAYL6AQj_bsysd5hNN3UWcIOvDCYdbUpXfpXk4n58V8pNGVkKiEMeu56Ry3cdKht9kd4w8FGnWG8Va2uFlGr8r-hqn_P0kvFWmVkDQK_Nxrg5GCLa0knX4ZCNDgEpDeVXdcZjr8dvvBuYbEvjQmGxFTtn8RmE4boHsvTOHe2lxBYKOJBQjRCEnNTZ4J3g="}, {"source_title": "investingnews.com", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGYLlsnOiPL4Hug5_V7HFi1NAflv_Jio0LdkViLqsaeWEVUX30F9itOqPQOQnQE7hkwNOTyKsFpPpXFxifXKu8Z7x56DCRS87mVmHxKZs3IkPHHCFLwIqTZ87Xdo-VtLe6kGxkqf2sSt2K173rWaymdOW6qrPBzx9AecIk="}]}, {"politician": "Joe Biden", "policy": "Medicare Drug Price Negotiations", "industry_or_sector": "의료 및 제약", "companies": ["Pfizer", "Eli Lilly", "Moderna"], "impact_description": "메디케어 약품 가격 협상 제도는 Pfizer, Eli Lilly, Moderna와 같은 제약 회사들의 미국 내 매출에 영향을 미쳤습니다. 이 정책은 고령층의 약품 비용 절감을 목표로 합니다.", "evidence": [{"source_title": "cfr.org", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEp8Yj4KD5eUY2deNwDwSfCHX5WDQqMFIDw0WezyNoMHlTjOWEtrazHvdxPI9KjsoTzgYkUzzwvWuh9NglNxnByQwnD40joadtfOf7eWnoUDLgi0IN3Gfj3o4VdEHZa0W9yMeYk3cD6U_7mggGDoAHX9PuMIHx-p-RUCiEDcYi3ukiCljJAvhXPQc5izIiPWLAP5Q=="}, {"source_title": "investingnews.com", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGYLlsnOiPL4Hug5_V7HFi1NAflv_Jio0LdkViLqsaeWEVUX30F9itOqPQOQnQE7hkwNOTyKsFpPpXFxifXKu8Z7x56DCRS87mVmHxKZs3IkPHHCFLwIqTZ87Xdo-VtLe6kGxkqf2sSt2K173rWaymdOW6qrPBzx9AecIk="}]}, {"politician": "Joe Biden", "policy": "CHIPS and Science Act", "industry_or_sector": "반도체", "companies": ["Samsung", "SK Hynix"], "impact_description": "CHIPS and Science Act의 인센티브와 수출 통제 정책은 Samsung과 SK Hynix와 같은 한국 기업들에게 영향을 미쳤습니다. 이 정책은 미국 내 반도체 생산 확대와 대중국 첨단 칩 수출 제한을 목표로 합니다.", "evidence": [{"source_title": "cfr.org", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEp8Yj4KD5eUY2deNwDwSfCHX5WDQqMFIDw0WezyNoMHlTjOWEtrazHvdxPI9KjsoTzgYkUzzwvWuh9NglNxnByQwnD40joadtfOf7eWnoUDLgi0IN3Gfj3o4VdEHZa0W9yMeYk3cD6U_7mggGDoAHX9PuMIHx-p-RUCiEDcYi3ukiCljJAvhXPQc5izIiPWLAP5Q=="}, {"source_title": "investingnews.com", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGYLlsnOiPL4Hug5_V7HFi1NAflv_Jio0LdkViLqsaeWEVUX30F9itOqPQOQnQE7hkwNOTyKsFpPpXFxifXKu8Z7x56DCRS87mVmHxKZs3IkPHHCFLwIqTZ87Xdo-VtLe6kGxkqf2sSt2K173rWaymdOW6qrPBzx9AecIk="}]}, {"politician": "Joe Biden", "policy": "Inflation Reduction Act", "industry_or_sector": "자동차", "companies": ["GM Korea"], "impact_description": "GM Korea는 미국 내 전기차 생산 확대와 관세 위험으로 인해 국내 시장 점유율이 감소(12%에서 1.8%로)하였으며, 2025년 2월 15일까지 서비스 센터 폐쇄 계획을 발표했습니다.", "evidence": [{"source_title": "investingnews.com", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGYLlsnOiPL4Hug5_V7HFi1NAflv_Jio0LdkViLqsaeWEVUX30F9itOqPQOQnQE7hkwNOTyKsFpPpXFxifXKu8Z7x56DCRS87mVmHxKZs3IkPHHCFLwIqTZ87Xdo-VtLe6kGxkqf2sSt2K173rWaymdOW6qrPBzx9AecIk="}, {"source_title": "dawn.com", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHyw1yUq4HOu5vkSdxM2WuHp9dkcZ2kXncvM1xfxhVkQP151CY9dXwcDufm94RdDXDpvtk_URPk2_G0AC17xZMardpA1lXOmKxjk2DAPE2EA-ztZ7jL3rYtuhWeCg=="}]}], "notes": "이 보고서는 2025년 11월 25일 기준으로 조 바이든 대통령의 주요 정책, 관련 산업 및 기업, 그리고 정치적·경제적 영향 네트워크를 분석한 것입니다. 모든 정보는 제공된 연구 자료를 기반으로 하며, 각 정책별 영향을 받은 기업 및 산업에 대한 구체적인 증거를 포함하고 있습니다."}} +{"query": "Xi Jinping", "gold_report": {"report_title": "Xi Jinping 중국 국가주석의 정치·경제 영향력 네트워크 분석", "time_range": "2012–2025년 11월 24일 기준", "question_answer": "시진핑 주석은 일대일로 전략을 통해 중국 국영 건설기업들의 해외 인프라 수주를 획기적으로 늘렸고, 기술굴기 정책으로 SMIC 등 반도체 기업의 자립을 추진했습니다. 동시에 공동부유 기치 아래 빅테크 기업들에 대한 강도 높은 규제를 단행하여 Alibaba와 Tencent의 성장에 제동을 걸었습니다. 이러한 정책들은 중국 경제에 국가의 역할을 강화하여 국유기업이 부상하고 민영 기술기업은 구조조정과 사회공헌 압력을 받는 등 명암이 교차하는 영향을 미쳤습니다.", "influence_chains": [{"politician": "Xi Jinping", "policy": "일대일로(一带一路) 전략", "industry_or_sector": "해외인프라/건설", "companies": ["중국교통건설공사(CCCC)", "중국철도건설공사(CRCC)"], "impact_description": "2013년 시작된 시진핑 주석의 일대일로 구상은 아시아, 아프리카, 유럽의 140여 개국에 걸친 대규모 인프라 투자로, 중국교통건설공사와 중국철도건설공사 같은 국영 건설사가 해외 도로·항만·철도 공사를 대거 수주하는 결과를 낳았습니다. 예컨대 CCCC는 파키스탄 과다르 항만과 아프리카 여러 나라의 도로 건설을 수행했고, CRCC는 동남아 고속철 등 프로젝트를 맡아 매출 급증과 국제적 영향력 확대를 누렸습니다.", "evidence": [{"source_title": "중국 '일대일로' 10년, 누적 투자 1천조 돌파", "url": "https://www.xinhuanet.com/english/2023-08/17/c_1319807381.htm"}, {"source_title": "Rail giant CRCC thrives on Belt and Road projects", "url": "https://www.globaltimes.cn/content/1207394.shtml"}]}, {"politician": "Xi Jinping", "policy": "빅테크 규제와 공동부유", "industry_or_sector": "인터넷/플랫폼", "companies": ["Alibaba", "Tencent"], "impact_description": "2020년 말 Ant그룹 상장 중단을 시작으로 시진핑 정부는 플랫폼 독점과 자본확장을 억제하기 위한 빅테크 규제를 본격화했습니다. 이에 따라 알리바바는 독점행위로 182억 위안(약 3조원)의 과징금을 부과받았고:contentReference[oaicite:39]{index=39}:contentReference[oaicite:40]{index=40}, 텐센트 역시 신규 게임 서비스 인가 지연과 반독점 조사로 성장세가 둔화되었습니다. 이 공동부유 기조 속에 두 기업은 수익의 사회 환원을 확대하고 사업 구조를 보수적으로 조정하게 되어, 중국 인터넷 업계 전반에 걸쳐 긴장과 변화가 일어났습니다.", "evidence": [{"source_title": "中, 알리바바에 반독점법 위반 벌금 3조원 부과…사상최대 규모", "url": "https://news.nate.com/view/20210410n02051"}, {"source_title": "중국 게임산업 규제에 텐센트 실적 타격", "url": "https://www.reuters.com/technology/tencent-quarterly-revenue-falls-first-time-weaker-ad-gaming-sales-2022-08-17/"}]}, {"politician": "Xi Jinping", "policy": "기술굴기와 자립화", "industry_or_sector": "반도체/통신", "companies": ["SMIC", "화웨이"], "impact_description": "미중 기술패권 경쟁이 심화되자, 시진핑 주석은 핵심 기술 자립을 위해 막대한 국가자금을 투입했습니다. 중국 파운드리 업체 SMIC는 국가의 지원 아래 14nm 공정 양산에 성공하며 일부 국산화 성과를 거뒀고, 제재를 받은 화웨이는 자체 운영체제와 5G 장비 국산 부품 개발에 집중했습니다. 이러한 기술굴기 노력으로 미국 제재에도 불구하고 화웨이는 2023년 7nm 칩을 탑재한 스마트폰을 출시하는 등 자급 능력을 일정 부분 입증했습니다.", "evidence": [{"source_title": "SMIC receives government funds to boost chip self-sufficiency", "url": "https://www.ft.com/content/35c4e7fa-519a-4d44-9a02-414a2caba90b"}, {"source_title": "화웨이, 자체 칩 탑재 '메이트60' 출시…미국 제재 돌파구", "url": "https://www.hani.co.kr/arti/economy/it/1108186.html"}]}], "notes": "시진핑 주석 집권 하 중국 경제는 고속성장에서 질적 발전 및 안보 중시로 전환되고 있습니다. 본 분석은 대표적 사례로 국영기업의 약진과 민영기업 규제를 다루었으며, 중국 정부의 강력한 개입이 기업 운명에 직접 영향을 주는 특성을 반영합니다."}, "model_response": {"report_title": "시진핑 주석의 정책, 산업, 기업 간 영향 관계 분석", "time_range": "2013–2025", "question_answer": "시진핑 주석은 '중국제조 2025', '일대일로 이니셔티브', '공동부유', '반도체 자립', '사이버보안 및 데이터 통제' 등 주요 정책을 통해 첨단 기술, 인프라, 금융, 반도체, 데이터 관리 등 다양한 산업 분야에 영향을 미쳤습니다. 주요 기업으로는 SMIC, 화웨이, 알리바바, 텐센트, BYD, CATL, PowerChina, CCCC, COSCO 등이 있으며, 이들은 정책 지원을 통해 기술 발전과 글로벌 시장 진출을 가속화했습니다. 시진핑 주석은 권력 집중화와 국영 기업 통제를 통해 정치-경제적 영향 네트워크를 강화하고 있습니다.", "influence_chains": [{"politician": "Xi Jinping", "policy": "Made in China 2025", "industry_or_sector": "첨단 기술 산업", "companies": ["SMIC", "Huawei", "YMTC", "Baidu", "Alibaba", "Tencent", "BYD", "CATL", "CRRC", "Sinopharm"], "impact_description": "Made in China 2025 정책은 반도체, AI, 로봇, 항공우주 등 첨단 기술 산업에서 국내 기업의 경쟁력 강화를 목표로 하며, SMIC, 화웨이, YMTC, 바이두, 알리바바, 텐센트, BYD, CATL, CRRC, 시노팜 등이 주요 수혜 기업으로 부상했습니다.", "evidence": [{"source_title": "xinhuanet.com", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQE2TqEnW__-tCn6xomyL1M1_6T4YrMJY78V-B6qhOtntZOpCKyUIVuYminrUPJznb-g7PqOtszW9Kmsh5opnB7Jj6rkmaxRo5k4oyzJ4qucUpQJVkRXE1CVdG0C2okCaTap-lK_3qlOQQ7dgdi1lqdDWzM1Cd8="}]}, {"politician": "Xi Jinping", "policy": "Belt and Road Initiative", "industry_or_sector": "인프라 및 건설", "companies": ["PowerChina", "CCCC", "COSCO", "Sinohydro", "China Three Gorges Group", "Power Construction Corporation of China", "China Communications Construction Company (CCCC)", "China Railway Group Limited (CREC)", "China Railway Construction Corporation (CRCC)", "China State Construction Engineering Corporation (CSCEC)", "China Energy Engineering Corporation (CEEC)", "East Hope Group", "Xinfa Group", "Longi Green Energy"], "impact_description": "일대일로 이니셔티브는 인프라 개발을 통해 PowerChina, CCCC, COSCO, 시노하이드로, 차이나 쓰리게이지 그룹, 파워 컨스트럭션 코퍼레이션 오브 차이나, 차이나 커뮤니케이션스 컨스트럭션 컴퍼니(CCCC), 차이나 레일웨이 그룹 리미티드(CREC), 차이나 레일웨이 컨스트럭션 코퍼레이션(CRCC), 차이나 스테이트 컨스트럭션 엔지니어링 코퍼레이션(CSCEC), 차이나 에너지 엔지니어링 코퍼레이션(CEEC) 등 국영 기업과 이스트 호프 그룹, 신파 그룹, 롱기 그린 에너지 등 민간 기업의 해외 진출을 지원했습니다.", "evidence": [{"source_title": "bbc.co.uk", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQFMYOwh5E8EKxuQ2QyaxeGgzw4vQwiIXNyS9fKciWWq3sn7_3y8e1dAL08BlgVHTPvNEglv2KltwHhE7bSpNfDCM0SSlzyIac4DRgwHDuDI2YRuTDMh3VmQg1CAzjRo74ZY_skpYLOg"}, {"source_title": "scio.gov.cn", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGg-igo1h1H2wLUpd3J-hCoMbVMEV_S9TCCATN4B3wMHi-EgENazdXayFuHg8AUPmlNCpZRqKsA_aPujdJEuKbJXpyLCrpsa1UNf7YZufSzV47mjwEVdRf0LuW_oQPN6_2i89v6afGsH8eIO0RMhd95pDfJvr7zN8qweYejZpE3L1TPMACxgfA3_0_SfjM="}]}, {"politician": "Xi Jinping", "policy": "Common Prosperity", "industry_or_sector": "기술 및 금융", "companies": ["Alibaba", "Tencent"], "impact_description": "공동부유 정책은 기술, 부동산, 교육 분야에 대한 규제 강화를 통해 알리바바와 텐센트 등 기업이 공동부유 이니셔티브에 자금을 지원하도록 유도했습니다.", "evidence": [{"source_title": "xinhuanet.com", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQE2TqEnW__-tCn6xomyL1M1_6T4YrMJY78V-B6qhOtntZOpCKyUIVuYminrUPJznb-g7PqOtszW9Kmsh5opnB7Jj6rkmaxRo5k4oyzJ4qucUpQJVkRXE1CVdG0C2okCaTap-lK_3qlOQQ7dgdi1lqdDWzM1Cd8="}]}, {"politician": "Xi Jinping", "policy": "Semiconductor Self-Sufficiency", "industry_or_sector": "반도체 및 첨단 기술", "companies": ["SMIC", "Yangtze Memory Technologies (YMTC)", "Huawei", "Baidu", "Alibaba", "Tencent", "BYD", "CATL"], "impact_description": "반도체 자립 정책은 SMIC, 양쯔 메모리 테크놀로지(YMTC), 화웨이, 바이두, 알리바바, 텐센트, BYD, CATL 등 국내 반도체 기업에 1,500억 달러의 국가 기금을 지원하여 기술 자립을 촉진했습니다.", "evidence": [{"source_title": "scio.gov.cn", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGg-igo1h1H2wLUpd3J-hCoMbVMEV_S9TCCATN4B3wMHi-EgENazdXayFuHg8AUPmlNCpZRqKsA_aPujdJEuKbJXpyLCrpsa1UNf7YZufSzV47mjwEVdRf0LuW_oQPN6_2i89v6afGsH8eIO0RMhd95pDfJvr7zN8qweYejZpE3L1TPMACxgfA3_0_SfjM="}]}, {"politician": "Xi Jinping", "policy": "Cybersecurity and Data Control", "industry_or_sector": "사이버보안 및 데이터 관리", "companies": ["Apple", "Huawei", "Tencent"], "impact_description": "사이버보안 및 데이터 통제 정책은 데이터 현지화 법률을 통해 애플, 화웨이, 텐센트 등 기업의 데이터 관리 방식을 규제하며 국내 기술 생태계 강화를 도모했습니다.", "evidence": [{"source_title": "xinhuanet.com", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQE2TqEnW__-tCn6xomyL1M1_6T4YrMJY78V-B6qhOtntZOpCKyUIVuYminrUPJznb-g7PqOtszW9Kmsh5opnB7Jj6rkmaxRo5k4oyzJ4qucUpQJVkRXE1CVdG0C2okCaTap-lK_3qlOQQ7dgdi1lqdDWzM1Cd8="}]}], "notes": "본 보고서는 2025년 11월 25일 기준으로 수집된 정보를 바탕으로 작성되었습니다. 시진핑 주석과 관련된 정책, 산업, 기업 간의 영향 관계는 공개된 자료를 기반으로 분석되었으나, 일부 정보는 간접적인 추론에 의존한 부분이 있을 수 있습니다. 특히, 정치적 동맹 관계와 국영 기업 간 연계는 공식 발표보다는 언론 보도 및 전문가 분석을 참조하였습니다."}} +{"query": "Vladimir Putin", "gold_report": {"report_title": "Vladimir Putin 러시아 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2000–2025년 11월 24일 기준", "question_answer": "블라디미르 푸틴 대통령은 에너지 국유화와 자원무기화를 통해 Gazprom과 Rosneft 등 국영 에너지 기업을 러시아 경제의 핵심으로 부상시켰습니다. 2022년 우크라이나 침공 이후에는 군수산업에 대한 수요가 폭증하여 Kalashnikov Concern 등의 방산업체가 내수와 수출 모두 급증하는 효과를 보았습니다. 동시에 서방의 제재로 러시아 경제는 위축되었지만, 정부는 수입대체 정책으로 국내 제조업 육성을 추진하며 제한된 범위 내에서 일부 IT·농업 기업의 성장을 도모하고 있습니다.", "influence_chains": [{"politician": "Vladimir Putin", "policy": "에너지 국유화·자원 무기화", "industry_or_sector": "에너지/가스", "companies": ["Gazprom", "Rosneft"], "impact_description": "푸틴 대통령은 집권 초부터 민영화되었던 에너지 자산을 재국유화하거나 국가 통제권을 강화했습니다. 천연가스 기업 가스프롬과 석유기업 로스네프트는 크렘린의 지원 아래 해외 파이프라인 건설과 OPEC+ 협조를 통해 막대한 수익을 올렸습니다. 특히 2006년 우크라이나 가스 차단 사태 등 자원을 외교무기로 활용하면서 Gazprom은 유럽 시장 지배력을 높였고:contentReference[oaicite:41]{index=41}, Rosneft는 국유화된 Yukos 자산 인수로 국내 1위 석유사가 되는 등 푸틴 정책의 최대 수혜자가 되었습니다.", "evidence": [{"source_title": "푸틴, Yukos 해체 후 로스네프트 국영 석유왕국 건설", "url": "https://www.wsj.com/articles/SB119705486110361204"}, {"source_title": "러시아 가스프롬, 우크라이나 파이프라인 분쟁 일지", "url": "https://www.bbc.com/russian/russia/2014/06/140616_gas_dispute_timeline"}]}, {"politician": "Vladimir Putin", "policy": "우크라이나 침공과 군수산업", "industry_or_sector": "방위산업", "companies": ["Kalashnikov Concern", "Uralvagonzavod"], "impact_description": "2022년 2월 푸틴 대통령의 우크라이나 침공 이후 러시아 군수산업은 전시에 준하는 생산증대로 특수를 누렸습니다. 소총과 드론을 만드는 칼라시니코프 콘체른사는 정부로부터 막대한 군수품 주문을 받아 생산량이 크게 늘었고, 전차 제조사 우랄바곤자보드는 손실 기업에서 전쟁 기간 핵심 군수업체로 급부상했습니다. 내수 수요로 매출이 급증함과 동시에 제재로 서방 부품 조달이 어렵지만, 정부의 전폭적 지원 아래 이들 업체는 러시아 경제에서 차지하는 비중이 한층 높아졌습니다.", "evidence": [{"source_title": "우크라이나 전쟁 1년, 러시아 군수산업 '밤낮없이 가동'", "url": "https://www.nytimes.com/2023/02/18/world/europe/russia-weapons-industry-war.html"}, {"source_title": "제재 속에서도 러 전차공장 Uralvagonzavod 생산 확대", "url": "https://www.reuters.com/world/europe/despite-sanctions-russia-is-making-materiel-faster-than-west-2023-08-18/"}]}, {"politician": "Vladimir Putin", "policy": "수입대체산업 육성", "industry_or_sector": "제조/기술", "companies": ["Yandex", "Ростсельмаш(Rostselmash)"], "impact_description": "2014년 크림 합병 이후 서방 제재가 시작되자 푸틴 정부는 '수입대체(Импортозамещение)' 정책을 내걸고 국내 산업 보호에 나섰습니다. 검색포털 얀덱스는 구글 제한 조치의 반사이익으로 러시아 인터넷 시장 점유율을 60% 이상으로 높였고, 농기계 제조사 Rostselmash는 외산 농기계 대체를 위한 보조금 지원으로 러시아 내 트랙터 시장의 65%를 차지하게 되었습니다. 제재 하에서 자립을 도모한 이 정책은 제한적 성공을 거두었지만 첨단 반도체 등에서는 여전히 취약점을 드러냈습니다.", "evidence": [{"source_title": "러시아, 제재 대응 수입대체 정책 강화", "url": "https://www.economist.com/europe/2018/07/05/russia-is-struggling-to-replace-western-imports"}, {"source_title": "Yandex Becomes Unlikely Beneficiary of Russia's Tech Clampdown", "url": "https://www.ft.com/content/c0e7d9a2-3fa3-11e9-b896-fe36ec32aece"}]}], "notes": "푸틴 집권기의 러시아 경제는 에너지와 군수에 크게 의존하며, 외부 제재에 적응하는 형태로 전개되었습니다. 본 보고서는 그 중 눈에 띄는 사례들을 추려냈으며, 러시아 기업들은 국가정책 방향에 따라 흥망이 좌우되는 경향이 강함을 보여줍니다."}, "model_response": {"report_title": "블라디미르 푸틴의 정치-경제 영향력 네트워크 분석 (2025년 11월 25일 기준)", "time_range": "2025년 11월 25일 기준", "question_answer": "블라디미르 푸틴은 에너지, 방위, 기술 분야에서 국가 주도의 정책을 통해 로스테크, 알마즈-안테이, 로스네프트, 스베르뱅크 등 주요 기업들과 긴밀히 연결되어 있습니다. 그의 정책은 전쟁 경제 유지, 제재 회피, 기술 주권 확보를 목표로 하며, 북한·인도·사우디아라비아 등 비서구 국가와의 협력을 통해 영향력을 확장하고 있습니다. 그러나 서방 제재로 인해 군사-산업 복합체의 생산 역량이 점차 약화되고 있습니다.", "influence_chains": [{"politician": "블라디미르 푸틴", "policy": "에너지 및 제재 회피 정책", "industry_or_sector": "에너지", "companies": ["Rosneft", "Lukoil"], "impact_description": "푸틴 정부의 에너지 정책은 서방 제재 회피를 위한 대체 수출 경로 확보를 목표로 하며, 로스네프트와 루코일은 인도 및 아시아 시장으로의 석유 수출 확대를 통해 전쟁 경제를 지속하고 있습니다. 미국 제재로 인해 인도는 러시아산 원유 수입을 중단했으나, 다른 시장으로 다각화를 시도하고 있습니다.", "evidence": [{"source_title": "The Moscow Times", "url": "https://www.themoscowtimes.com/2025/11/20/sberbank-using-ai-to-cut-20-of-staff-by-end-of-2025-gref-says-a91184"}, {"source_title": "lvivherald.com, government.ru, euractiv.com, usip.org, jpost.com, cepa.org, debuglies.com, thehindu.com, world-nuclear-news.org, jamestown.org, meduza.io, fdd.org, carnegieendowment.org, youtube.com, elliptic.co, rbc.ua, espreso.tv, arctictoday.com, cbc.ca, theguardian.com, themoscowtimes.com, mayerbrown.com, www.gov.uk, kremlin.ru", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQFXI5Uz28roaJVOUF8n_0SCRSydFrbEX-1nB_OB0gMflhl5JLQYAG4BizimFBBLRVraCKgOG2cdxCpkiGzJTeDpdb6lLqeb8_26MsyOb7UcowupCV3bZE2qAc58c9-bxt9JMBqE86uV_19mIzRUEXmrEm_l12Y8q9Bx3Tx3uhYvrmTFauVcQ8kDY2NDOAqG12BA7MfITJxdUrLLT_nkUsAzoYYyksz8C4865xMtMW5eC3OxDNU="}]}, {"politician": "블라디미르 푸틴", "policy": "기술 주권 및 AI 개발 정책", "industry_or_sector": "기술/금융", "companies": ["Sberbank"], "impact_description": "푸틴 정부의 기술 주권 정책은 AI 개발을 촉진하며, 스베르뱅크는 2025년 말까지 직원 20%를 감축하고 AI 투자를 확대했습니다. 이는 러시아 내 기술 자립과 디지털 전환을 가속화하는 데 기여하고 있습니다.", "evidence": [{"source_title": "The Moscow Times", "url": "https://www.themoscowtimes.com/2025/11/20/sberbank-using-ai-to-cut-20-of-staff-by-end-of-2025-gref-says-a91184"}, {"source_title": "lvivherald.com, government.ru, euractiv.com, usip.org, jpost.com, cepa.org, debuglies.com, thehindu.com, world-nuclear-news.org, jamestown.org, meduza.io, fdd.org, carnegieendowment.org, youtube.com, elliptic.co, rbc.ua, espreso.tv, arctictoday.com, cbc.ca, theguardian.com, themoscowtimes.com, mayerbrown.com, www.gov.uk, kremlin.ru", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQFXI5Uz28roaJVOUF8n_0SCRSydFrbEX-1nB_OB0gMflhl5JLQYAG4BizimFBBLRVraCKgOgOG2cdxCpkiGzJTeDpdb6lLqeb8_26MsyOb7UcowupCV3bZE2qAc58c9-bxt9JMBqE86uV_19mIzRUEXmrEm_l12Y8q9Bx3Tx3uhYvrmTFauVcQ8kDY2NDOAqG12BA7MfITJxdUrLLT_nkUsAzoYYyksz8C4865xMtMW5eC3OxDNU="}]}, {"politician": "블라디미르 푸틴", "policy": "군사-산업 복합체 강화 정책", "industry_or_sector": "방위 산업", "companies": ["Rostec", "Almaz-Antey"], "impact_description": "푸틴의 군사-산업 복합체 정책은 로스테크와 알마즈-안테이를 중심으로 무기 생산 및 수출을 확대했으나, 서방 제재로 인해 핵심 부품 수입에 어려움을 겪고 있습니다. 북한과의 무기 거래 및 인도와의 방산 협력(예: S-400 시스템 공급)을 통해 제재 회피를 시도하고 있습니다.", "evidence": [{"source_title": "ridl.io", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHV4TXzVfSU9-t3M09Tfl4dkV-8-hC1abl7t5aPRY2gmqhNfzuSQhFFRuez2Bp4sXCiJt3BFg1dkI4wKsn89JDI2UMh3oLSgdbenGgA2IPFN10xenbWC2y5LrF6Qw85r1f7YKgSMnM1eYMrfYIZjXslzJJif72kTowYAcYs"}, {"source_title": "ukrainesarmsmonitor.substack.com", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQF0D2oMJSmoTYK-HfWV0Ud8xRwhCCrdJ7CRurwnmISwnDmPq5x2wA4Y4P1-j4Kl3q0HQTZmRhe4cNwuJM4kFTaeUuODEdUvyjxrH1081prQWFmHiTJU7V8ab5nIUThGeIQp22afji-UYksk0PePIsE="}]}], "notes": "푸틴의 영향력 네트워크는 에너지, 방위, 기술 분야에서 국가 주도의 산업 정책과 제재 회피 전략을 중심으로 구축되었습니다. 그러나 서방 제재로 인해 핵심 기술 및 부품 수입에 어려움을 겪으며, 북한·인도·사우디아라비아 등 비서구 국가와의 협력을 확대하고 있습니다. 일부 데이터는 간접 추론에 기반할 수 있습니다."}} +{"query": "Narendra Modi", "gold_report": {"report_title": "나렌드라 모디 정부의 정치·경제·기업 연결성 분석", "time_range": "2014–2025", "question_answer": "나렌드라 모디 총리의 재임 기간 동안 그의 정부는 'Make in India', 'Digital India', 'Production Linked Incentive (PLI) Scheme' 등의 주요 정책을 통해 제조업, 디지털 인프라, 재생에너지 등 다양한 산업 분야에서 기업 성장을 촉진했습니다. 아다니 그룹, 릴라이언스 인더스트리, 타타 그룹 등 주요 기업들은 정부 정책 지원을 받아 시장 확장과 기술 혁신을 이루었습니다. 그러나 특정 재벌과의 밀접한 관계로 인해 친목 자본주의 논란도 제기되었습니다.", "influence_chains": [{"politician": "Narendra Modi", "policy": "Make in India (2014)", "industry_or_sector": "제조업", "companies": ["Tata Motors", "Mahindra & Mahindra", "Tata Steel", "Tata Electronics", "Bharat Forge", "Berger Paints", "Apollo Tyres", "Elecon Engineering", "Borosil Renewables", "Gokaldas Exports", "H&M", "Netflix", "Jeep", "Saudi Aramco", "Ikea", "MG Motor", "Uniqlo"], "impact_description": "Make in India 정책은 제조업 분야에서 국내 및 외국 기업의 투자를 촉진하여 자동차, 전자제품, 방위산업, 중장비 등 다양한 산업의 성장을 이끌었습니다. 주요 기업들은 정부 지원을 통해 생산 역량을 확대하고 글로벌 시장 진출을 가속화했습니다.", "evidence": [{"source_title": "Wikipedia – Narendra Modi", "url": "[https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHz8TERwR87btMOqqwFLGLxSG4pfIdi0t7yygDAhr6FEkdiiV5zcBhH-E0PIbFTOq3FO_JJEOg-8slP-EuXwtLIPbrsGODE8tZ5bu8t2ckck9K8Eb2maRDVsCxYC75Pfyw1AajvAYBvBGRPRZAyIgkm_PYEzCxUnWBpF5WJnEh3CgXfff-DQMqx](https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHz8TERwR87btMOqqwFLGLxSG4pfIdi0t7yygDAhr6FEkdiiV5zcBhH-E0PIbFTOq3FO_JJEOg-8slP-EuXwtLIPbrsGODE8tZ5bu8t2ckck9K8Eb2maRDVsCxYC75Pfyw1AajvAYBvBGRPRZAyIgkm_PYEzCxUnWBpF5WJnEh3CgXfff-DQMqx)"}]}, {"politician": "Narendra Modi", "policy": "Digital India (2015)", "industry_or_sector": "디지털 인프라", "companies": ["Reliance Jio Infocomm Ltd.", "Tata Consultancy Services (TCS)", "Google", "Microsoft"], "impact_description": "Digital India 정책은 디지털 인프라 구축과 전자정부 서비스 확대를 통해 IT 및 핀테크 산업의 성장을 촉진했습니다. 주요 기업들은 정부의 디지털 전환 정책에 발맞춰 기술 혁신과 시장 확장을 이루었습니다.", "evidence": [{"source_title": "Wikipedia – Narendra Modi", "url": "[https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHz8TERwR87btMOqqwFLGLxSG4pfIdi0t7yygDAhr6FEkdiiV5zcBhH-E0PIbFTOq3FO_JJEOg-8slP-EuXwtLIPbrsGODE8tZ5bu8t2ckck9K8Eb2maRDVsCxYC75Pfyw1AajvAYBvBGRPRZAyIgkm_PYEzCxUnWBpF5WJnEh3CgXfff-DQMqx](https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHz8TERwR87btMOqqwFLGLxSG4pfIdi0t7yygDAhr6FEkdiiV5zcBhH-E0PIbFTOq3FO_JJEOg-8slP-EuXwtLIPbrsGODE8tZ5bu8t2ckck9K8Eb2maRDVsCxYC75Pfyw1AajvAYBvBGRPRZAyIgkm_PYEzCxUnWBpF5WJnEh3CgXfff-DQMqx)"}]}, {"politician": "Narendra Modi", "policy": "Production Linked Incentive (PLI) Scheme", "industry_or_sector": "전자제품, 제약, 섬유, 자동차 부품", "companies": ["Apple", "Samsung", "LG"], "impact_description": "PLI 제도는 전자제품, 제약, 섬유, 자동차 부품 등 14개 핵심 분야에서 생산 및 판매와 연계된 재정 인센티브를 제공하여 글로벌 기업들의 인도 내 생산 확대를 유도했습니다.", "evidence": [{"source_title": "Wikipedia – Narendra Modi", "url": "[https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHz8TERwR87btMOqqwFLGLxSG4pfIdi0t7yygDAhr6FEkdiiV5zcBhH-E0PIbFTOq3FO_JJEOg-8slP-EuXwtLIPbrsGODE8tZ5bu8t2ckck9K8Eb2maRDVsCxYC75Pfyw1AajvAYBvBGRPRZAyIgkm_PYEzCxUnWBpF5WJnEh3CgXfff-DQMqx](https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHz8TERwR87btMOqqwFLGLxSG4pfIdi0t7yygDAhr6FEkdiiV5zcBhH-E0PIbFTOq3FO_JJEOg-8slP-EuXwtLIPbrsGODE8tZ5bu8t2ckck9K8Eb2maRDVsCxYC75Pfyw1AajvAYBvBGRPRZAyIgkm_PYEzCxUnWBpF5WJnEh3CgXfff-DQMqx)"}]}, {"politician": "Narendra Modi", "policy": "Infrastructure Projects (PM Gati Shakti, Sagarmala, Bharatmala)", "industry_or_sector": "건설, 엔지니어링", "companies": ["Larsen & Toubro (L&T)", "IRB Infrastructure Developers", "PNC Infratech", "Adani Group"], "impact_description": "PM Gati Shakti, Sagarmala, Bharatmala 등의 인프라 프로젝트는 도로, 항만, 공항, 철도 등 교통 인프라를 현대화하여 건설 및 엔지니어링 산업의 성장을 이끌었습니다.", "evidence": [{"source_title": "Wikipedia – Narendra Modi", "url": "[https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHz8TERwR87btMOqqwFLGLxSG4pfIdi0t7yygDAhr6FEkdiiV5zcBhH-E0PIbFTOq3FO_JJEOg-8slP-EuXwtLIPbrsGODE8tZ5bu8t2ckck9K8Eb2maRDVsCxYC75Pfyw1AajvAYBvBGRPRZAyIgkm_PYEzCxUnWBpF5WJnEh3CgXfff-DQMqx](https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHz8TERwR87btMOqqwFLGLxSG4pfIdi0t7yygDAhr6FEkdiiV5zcBhH-E0PIbFTOq3FO_JJEOg-8slP-EuXwtLIPbrsGODE8tZ5bu8t2ckck9K8Eb2maRDVsCxYC75Pfyw1AajvAYBvBGRPRZAyIgkm_PYEzCxUnWBpF5WJnEh3CgXfff-DQMqx)"}]}, {"politician": "Narendra Modi", "policy": "Renewable Energy Initiatives", "industry_or_sector": "재생에너지", "companies": ["Tata Power", "Adani Group"], "impact_description": "재생에너지 정책은 청정 에너지 확대와 수입 의존도 감소를 목표로 태양광 및 풍력 터빈 제조 분야에서 주요 기업들의 성장을 지원했습니다.", "evidence": [{"source_title": "Wikipedia – Narendra Modi", "url": "[https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHz8TERwR87btMOqqwFLGLxSG4pfIdi0t7yygDAhr6FEkdiiV5zcBhH-E0PIbFTOq3FO_JJEOg-8slP-EuXwtLIPbrsGODE8tZ5bu8t2ckck9K8Eb2maRDVsCxYC75Pfyw1AajvAYBvBGRPRZAyIgkm_PYEzCxUnWBpF5WJnEh3CgXfff-DQMqx](https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHz8TERwR87btMOqqwFLGLxSG4pfIdi0t7yygDAhr6FEkdiiV5zcBhH-E0PIbFTOq3FO_JJEOg-8slP-EuXwtLIPbrsGODE8tZ5bu8t2ckck9K8Eb2maRDVsCxYC75Pfyw1AajvAYBvBGRPRZAyIgkm_PYEzCxUnWBpF5WJnEh3CgXfff-DQMqx)"}]}, {"politician": "Narendra Modi", "policy": "경제 개발 정책", "industry_or_sector": "항만, 공항, 전력, 석탄, 방위산업", "companies": ["Adani Group"], "impact_description": "아다니 그룹은 정부의 경제 개발 비전과 연계되어 항만, 공항, 전력, 석탄 채굴, 방위산업 등 다양한 분야에서 빠르게 성장했으나, 정부와의 밀접한 관계로 인해 친목 자본주의 논란이 제기되었습니다.", "evidence": [{"source_title": "Adani Watch – Adani Group’s Expansion", "url": "[https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQFJDuBmZSxDyxtWsnXlK1QjaQEz1LZclTqQFaWhu2vdLez3duEXPGd0eUaYkWYkPC00x-ejA8qvjRv384ZVMBpxnLHS1bKAMY2M3_PT_g_1I-BXEApxUiNN6TQq3w8SkOCcC5IJSXkaSYb92iIM6KMTlmXXCwoN0BeXDR7aq9PGalrFeSXq04f_kqMMWq5tMEH9bNhn](https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQFJDuBmZSxDyxtWsnXlK1QjaQEz1LZclTqQFaWhu2vdLez3duEXPGd0eUaYkWYkPC00x-ejA8qvjRv384ZVMBpxnLHS1bKAMY2M3_PT_g_1I-BXEApxUiNN6TQq3w8SkOCcC5IJSXkaSYb92iIM6KMTlmXXCwoN0BeXDR7aq9PGalrFeSXq04f_kqMMWq5tMEH9bNhn)"}, {"source_title": "The Guardian – Adani Group and Modi", "url": "[https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGI9DP6hpfS9oWWo-eGlm7XsPlNrvXRUS94Euzq1fxjEvt2wdg7LSMOdwLyiHSfcO9_hW4tW3aSl5vGtmuPO2AjTmyaNyfgzuIYtsE2Crh5intBios5zpwX25EQ5nP7Ak9ZIL0VS27SxvQSCim7V1i6O1xPTtLXrmYPLnDqCig5KZAMs1BX8UAV2xcASI9sBKcNnh1pCaP9bKhZTjTUD9EjXOP929JMGLmIDl99MUkusv2NJv_d81948g==](https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGI9DP6hpfS9oWWo-eGlm7XsPlNrvXRUS94Euzq1fxjEvt2wdg7LSMOdwLyiHSfcO9_hW4tW3aSl5vGtmuPO2AjTmyaNyfgzuIYtsE2Crh5intBios5zpwX25EQ5nP7Ak9ZIL0VS27SxvQSCim7V1i6O1xPTtLXrmYPLnDqCig5KZAMs1BX8UAV2xcASI9sBKcNnh1pCaP9bKhZTjTUD9EjXOP929JMGLmIDl99MUkusv2NJv_d81948g==)"}]}, {"politician": "Narendra Modi", "policy": "친기업 정책", "industry_or_sector": "통신, 녹색 에너지", "companies": ["Reliance Industries"], "impact_description": "릴라이언스 인더스트리는 디지털 연결성(릴라이언스 지오)과 녹색 에너지 분야에서 투자를 확대하며 모디 정부의 친기업 정책 지원을 받았습니다. 이 기간 동안 시가총액이 크게 증가했습니다.", "evidence": [{"source_title": "Wikipedia – Narendra Modi", "url": "[https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHz8TERwR87btMOqqwFLGLxSG4pfIdi0t7yygDAhr6FEkdiiV5zcBhH-E0PIbFTOq3FO_JJEOg-8slP-EuXwtLIPbrsGODE8tZ5bu8t2ckck9K8Eb2maRDVsCxYC75Pfyw1AajvAYBvBGRPRZAyIgkm_PYEzCxUnWBpF5WJnEh3CgXfff-DQMqx](https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHz8TERwR87btMOqqwFLGLxSG4pfIdi0t7yygDAhr6FEkdiiV5zcBhH-E0PIbFTOq3FO_JJEOg-8slP-EuXwtLIPbrsGODE8tZ5bu8t2ckck9K8Eb2maRDVsCxYC75Pfyw1AajvAYBvBGRPRZAyIgkm_PYEzCxUnWBpF5WJnEh3CgXfff-DQMqx)"}]}, {"politician": "Narendra Modi", "policy": "Make in India", "industry_or_sector": "자동차, 철강, 통신, 소프트웨어, 전자제품", "companies": ["Tata Group"], "impact_description": "타타 그룹은 'Make in India' 정책에 따라 자동차, 철강, 통신, 소프트웨어, 전자제품 제조 분야에서 기여하며 정부의 친기업 정책을 지지했습니다. 반도체 제조 공장 투자도 진행했습니다.", "evidence": [{"source_title": "Wikipedia – Narendra Modi", "url": "[https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHz8TERwR87btMOqqwFLGLxSG4pfIdi0t7yygDAhr6FEkdiiV5zcBhH-E0PIbFTOq3FO_JJEOg-8slP-EuXwtLIPbrsGODE8tZ5bu8t2ckck9K8Eb2maRDVsCxYC75Pfyw1AajvAYBvBGRPRZAyIgkm_PYEzCxUnWBpF5WJnEh3CgXfff-DQMqx](https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHz8TERwR87btMOqqwFLGLxSG4pfIdi0t7yygDAhr6FEkdiiV5zcBhH-E0PIbFTOq3FO_JJEOg-8slP-EuXwtLIPbrsGODE8tZ5bu8t2ckck9K8Eb2maRDVsCxYC75Pfyw1AajvAYBvBGRPRZAyIgkm_PYEzCxUnWBpF5WJnEh3CgXfff-DQMqx)"}]}], "notes": "모디 정부의 정책은 제조업, 디지털 인프라, 재생에너지 등 다양한 분야에서 기업 성장을 촉진했으나, 아다니 그룹과 같은 특정 재벌의 급속한 성장으로 인해 친목 자본주의 논란이 제기되었습니다. 일부 정책의 경우 고용 창출 부족 및 소득 불평등 확대 등의 비판도 존재합니다."}} +{"query": "Rishi Sunak", "gold_report": {"report_title": "Rishi Sunak 영국 총리의 정치·경제 영향력 네트워크 분석", "time_range": "2020–2025년 11월 24일 기준", "question_answer": "리시 수낙 총리는 재무장관 시절 코로나19 직격탄을 맞은 경제를 살리기 위해 대규모 임금 보조(Furlough) 정책을 펼쳐 British Airways, 마크스앤드스펜서 등 기업들이 고용을 유지하도록 도왔습니다. 총리 재직 중에는 영국을 AI 혁신 허브로 만들겠다며 AI 안전 서밋을 개최하고 반도체 연구에 투자하여 DeepMind, Graphcore 같은 첨단기업에 우호적 환경을 조성했습니다. 또한 브렉시트 이후 금융규제 개혁을 추진해 런던 금융시장의 경쟁력을 높이려 시도하고 있습니다.", "influence_chains": [{"politician": "Rishi Sunak", "policy": "코로나 고용유지 지원(Furlough)", "industry_or_sector": "항공/소매", "companies": ["British Airways", "Marks & Spencer"], "impact_description": "수낙 총리가 재무장관으로 있던 2020년, 영국 정부는 코로나19 봉쇄로 타격받은 기업 직원을 대상으로 인건비의 80%를 보전해주는 Furlough 제도를 도입했습니다. 그 결과 국제선 운항이 중단된 British Airways는 대규모 정리해고를 피하고 수만 명의 직원을 유지할 수 있었으며, 매장 영업이 막혔던 유통업체 Marks & Spencer도 인력 유지를 통해 팬데믹 후 빠른 영업 재개가 가능했습니다. 이 조치는 18개월간 114억 파운드 규모로 투입되어 실업률 급등을 억제하는 효과를 냈습니다.", "evidence": [{"source_title": "영국 코로나 휴직지원에 900만명 혜택…BA 등 대규모 해고 방지", "url": "https://www.bbc.com/news/business-52528304"}, {"source_title": "Marks & Spencer says furlough scheme crucial to survival", "url": "https://www.theguardian.com/business/2020/may/20/marks-spencer-ms-coronavirus-lockdown"}]}, {"politician": "Rishi Sunak", "policy": "AI·반도체 혁신 지원", "industry_or_sector": "첨단기술/반도체", "companies": ["DeepMind", "Graphcore"], "impact_description": "수낙 총리는 2023년 영국에서 최초의 AI 안전 정상회의를 주최하고, AI 연구 및 반도체 설계 분야에 10억 파운드 이상을 투자하겠다고 발표했습니다. 구글 산하의 인공지능 연구소 DeepMind는 정부의 규제 완화와 런던을 AI 글로벌 허브로 만들겠다는 약속 속에 연구 인력을 확충하고 있고, 영국 팹리스 반도체 스타트업 Graphcore는 정부 지원금과 주문형 반도체 연구 인프라 조성 계획에 힘입어 Nvidia와 경쟁할 수 있는 AI칩 개발에 박차를 가하고 있습니다. 이러한 지원으로 영국 첨단기술 업계는 브렉시트 이후에도 투자 유치를 이어가고 있습니다.", "evidence": [{"source_title": "UK to invest £1 billion in supercomputer and AI chips", "url": "https://www.ft.com/content/2b3f0d58-e1fb-4a8c-a6f7-4f4a7b9becec"}, {"source_title": "Sunak's AI Summit draws DeepMind, OpenAI to UK", "url": "https://www.bloomberg.com/news/articles/2023-10-31/sunak-s-ai-summit-draws-pitches-from-google-s-deepmind-and-openai"}]}, {"politician": "Rishi Sunak", "policy": "금융규제 개혁(에든버러 개혁)", "industry_or_sector": "금융/핀테크", "companies": ["Barclays", "Revolut"], "impact_description": "브렉시트 이후 금융 경쟁력 강화를 위해 수낙 총리는 2022년 말 '에든버러 개혁' 계획을 발표해 EU 규제였던 은행 자기자본 규제 등 일부를 완화하고 핀테크 혁신을 장려했습니다. 이에 따라 Barclays 같은 대형은행은 파생상품 거래 등에서 규제비용이 줄어들 것으로 기대하고 있고, 디지털은행 Revolut는 보다 유연한 규제 환경 속에서 신규 라이선스 취득과 해외 진출에 탄력이 붙을 전망입니다. 다만 이러한 개혁이 2008년 금융위기 이후 강화된 투자자 보호 장치를 약화시킬 수 있다는 우려도 있습니다.", "evidence": [{"source_title": "영국, ‘에든버러 개혁’으로 EU 금융규제 대체…런던 경쟁력 강화 시도", "url": "https://www.economist.com/britain/2022/12/09/britain-unveils-its-biggest-package-of-financial-reforms-in-decades"}, {"source_title": "핀테크 Revolut, 영국 규제 완화 기대 속 성장 가속", "url": "https://www.ft.com/content/0d7451ec-5325-4f50-8af1-349172226ec7"}]}], "notes": "리시 수낙 총리의 경제정책은 팬데믹 대응부터 브렉시트 후속조치까지 폭넓게 전개되었습니다. 영국의 구조적 도전을 마주한 상황에서 단기 응급조치(코로나 지원)와 중장기 경쟁력 강화 전략(AI, 금융)이 혼재되어 있으며, 그 실효성은 향후 몇 년간의 성과에 따라 평가될 것입니다."}, "model_response": {"report_title": "리시 수낵의 정치-경제 영향력 네트워크 분석", "time_range": "2022–2025", "question_answer": "리시 수낵은 에너지, 기술, 금융, 의료 등 다양한 분야에서 정책 및 기업 네트워크와 연결되어 있다. 그의 정책은 Shell, BP, Infosys, Microsoft, Goldman Sachs 등 주요 기업에 영향을 미쳤으며, 보수당 정치 자금 및 로비 네트워크를 통해 간접적 영향력을 행사하고 있다. 특히, 초과이익세 정책은 에너지 기업에 부정적 영향을 주었고, NHS 계약 및 AI 규제 정책은 기술 및 의료 분야와 밀접한 관련이 있다.", "influence_chains": [{"politician": "Rishi Sunak", "policy": "초과이익세(2023-2030)", "industry_or_sector": "에너지", "companies": ["Shell", "BP"], "impact_description": "Rishi Sunak의 2023-2030년 에너지 기업에 대한 초과이익세 정책은 Shell과 BP를 포함한 42개 기업의 신규 투자 계획을 위협했으며, 2000억 파운드 규모의 총 에너지 투자(재생에너지 포함)에 부정적인 영향을 미쳤다. 세금 재조정은 에너지 안보와 탈탄소화 노력을 저해할 수 있다는 분석이 있다.", "evidence": [{"source_title": "UK Windfall Taxes", "url": "https://taxfoundation.org/blog/uk-windfall-taxes/"}]}, {"politician": "Rishi Sunak", "policy": "NHS 계약 정책", "industry_or_sector": "기술/의료", "companies": ["Infosys"], "impact_description": "Rishi Sunak의 부인 Akshata Murty가 Infosys에 5억 9천만 파운드의 지분을 보유하고 있으며, 이 회사는 NHS와 2억 5천만 파운드 규모의 계약을 체결했다. 이는 이해 상충 문제를 제기하고 있다.", "evidence": [{"source_title": "Corporate Watch: Rishi Sunak's ties to Infosys", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGpaczbS4f1h444dSqJj9iKr5-9PTx6mL78SkaPsrXL3zplrsoOn_zlaLuEMURFgfB4t1_kUYZJX7gafH8Il6QU_9nZwTXoCIRi9n-Aeo2dYeVQi0BAdPB9xn7chISsAvOHORxd0oWJXX9rkmQKXUm7iFMAfsChy835U-AynN4jgZaJxv2Q0Ti77YfrJom6I27Wfo-RHcRzSBXIQAkjow="}]}, {"politician": "Rishi Sunak", "policy": "AI 및 금융 규제 정책", "industry_or_sector": "기술/금융", "companies": ["Microsoft", "Anthropic", "Goldman Sachs"], "impact_description": "Rishi Sunak은 총리직 이후 Microsoft, Anthropic, Goldman Sachs의 고문으로 활동하며 거시경제 및 지정학 전략 분야에서 영향력을 행사하고 있다. ACOBA의 제한으로 인해 영국 정부에 대한 로비는 금지되어 있다.", "evidence": [{"source_title": "The Guardian: Rishi Sunak's post-premiership roles", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEHJ1-yXyJn0V2rpyzeWgyG45_GVXqCDiJqGm4_HrdO_gQoF1L_x_wo-EXKU1lQEo9fWNIU4gl9rSBZ3q0kF3WXWjP28Fq17RYlYINHVyX9eg5VwG-6C8-nQ_SNM_NBntxxxuV5T4ABYFwnM4KB97bg1e9rS5faqTDZaaqEvWXvhgMMx_sviByQbe4lJ83QPBGRTAUHkk5Rk80D-NhJ_CIK_On491uS8i0NavDzP6MKcDU="}]}, {"politician": "Rishi Sunak", "policy": "보수당 정치 자금 정책", "industry_or_sector": "자동차/부동산/화학", "companies": ["Mansour Group", "Telereal Trillium", "Indorama Ventures"], "impact_description": "Rishi Sunak의 보수당 지도부 시절 Mohamed Mansour(Mansour Group), Graham Edwards(Telereal Trillium), Amit Lohia(Indorama Ventures) 등으로부터 대규모 정치 자금을 지원받았다. 이는 정책 결정에 간접적인 영향을 미칠 수 있다.", "evidence": [{"source_title": "The Guardian: Conservative Party donations", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEHJ1-yXyJn0V2rpyzeWgyG45_GVXqCDiJqGm4_HrdO_gQoF1L_x_wo-EXKU1lQEo9fWNIU4gl9rSBZ3q0kF3WXWjP28Fq17RYlYINHVyX9eg5VwG-6C8-nQ_SNM_NBntxxxuV5T4ABYFwnM4KB97bg1e9rS5faqTDZaaqEvWXvhgMMx_sviByQbe4lJ83QPBGRTAUHkk5Rk80D-NhJ_CIK_On491uS8i0NavDzP6MKcDU="}]}, {"politician": "Rishi Sunak", "policy": "건강 정책", "industry_or_sector": "의료", "companies": ["Orchard Therapeutics", "Guardant Health", "Independent Healthcare Providers Network"], "impact_description": "Rishi Sunak 정부는 로비 회사 Evoke Incisive Health의 창립 파트너인 Bill Morgan을 건강 정책 고문으로 임명했다. 이 회사는 Orchard Therapeutics, Guardant Health, Independent Healthcare Providers Network 등을 대표하며, 민간 의료 부문에 대한 영향력을 행사하고 있다.", "evidence": [{"source_title": "The Guardian: Rishi Sunak's government appointments", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEHJ1-yXyJn0V2rpyzeWgyG45_GVXqCDiJqGm4_HrdO_gQoF1L_x_wo-EXKU1lQEo9fWNIU4gl9rSBZ3q0kF3WXWjP28Fq17RYlYINHVyX9eg5VwG-6C8-nQ_SNM_NBntxxxuV5T4ABYFwnM4KB97bg1e9rS5faqTDZaaqEvWXvhgMMx_sviByQbe4lJ83QPBGRTAUHkk5Rk80D-NhJ_CIK_On491uS8i0NavDzP6MKcDU="}]}], "notes": "Rishi Sunak은 2024년 11월 이후 야당 지도자로 활동 중이며, 현재 정책들은 그의 총리 재임 기간(2022-2024) 및 이후 활동을 반영한다. 일부 연결 관계는 간접적 또는 잠재적 이해 상충 가능성을 포함하고 있다."}} +{"query": "Emmanuel Macron", "gold_report": {"report_title": "Emmanuel Macron 프랑스 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2017–2025년 11월 24일 기준", "question_answer": "에마뉘엘 마크롱 대통령은 노동시장 유연화와 연금개혁을 단행하여 프랑스 기업들의 인건비 부담을 덜고 고용을 늘리는 기반을 마련했으며, 친환경 정책으로 프랑스 전력공사(EDF)의 원전 투자와 르노 등의 전기차 전환에 박차를 가했습니다. 또한 EU 차원에서 디지털세 추진과 반도체·배터리 육성에 앞장서며 유럽 기업들의 기술 주권을 강화했습니다. 다만 연금개혁에 따른 국민 반발로 사회적 갈등이 일시적으로 기업 활동에 불확실성을 주기도 했습니다.", "influence_chains": [{"politician": "Emmanuel Macron", "policy": "노동법 개혁", "industry_or_sector": "산업 전반/고용", "companies": ["TotalEnergies", "Carrefour"], "impact_description": "2017년 마크롱 정부는 노조와 사회적 합의를 거쳐 해고 절차 완화, 노조교섭 단위 축소 등 노동법 개혁을 실시했습니다. 이에 따라 TotalEnergies 같은 대기업은 인건비 유연성이 높아져 신규 고용과 구조조정에 신속히 대응할 수 있게 되었고, 소매체인 까르푸는 점포 운영시간 연장과 주말 노동투입 등 생산성 향상 방안을 원활히 시행할 수 있었습니다. 이 개혁 이후 프랑스 실업률은 10%대에서 7%대로 하락하며 기업들의 고용여건이 개선되었습니다.", "evidence": [{"source_title": "마크롱 노동개혁 후 프랑스 실업률 최저치 기록", "url": "https://www.reuters.com/article/us-france-reform-employment-idUSKCN1M01R3"}, {"source_title": "Carrefour welcomes new labor flexibility under Macron", "url": "https://www.ft.com/content/2e3f4d62-d353-11e7-a303-9060cb1e5f44"}]}, {"politician": "Emmanuel Macron", "policy": "연금개혁 추진", "industry_or_sector": "공공재정/시장", "companies": ["BNP Paribas", "AXA"], "impact_description": "2023년 마크롱 대통령은 연금정년을 62세에서 64세로 상향하는 개혁을 강행하여 장기적으로 재정안정과 노동인구 증가를 도모했습니다. 이에 프랑스 최대 은행 BNP파리바는 국가신용도 유지와 금리안정의 간접 혜택을 기대할 수 있었고, 대형 보험사 AXA는 민영 연금상품 수요 증가에 대비해 상품 개발을 서둘렀습니다. 다만 연금개혁 과정에서 대규모 파업이 발생해 단기적으로 소비와 생산에 지장을 초래하기도 했습니다.", "evidence": [{"source_title": "프랑스 연금개혁 통과…BNP파리바 등 금융권 '환영'", "url": "https://www.bloomberg.com/news/articles/2023-04-14/bnp-paribas-says-pension-reform-is-good-for-france-s-economy"}, {"source_title": "AXA sees opportunities in Macron pension reform", "url": "https://www.reuters.com/business/finance/insurer-axa-sees-opportunity-french-pension-reform-2023-01-23/"}]}, {"politician": "Emmanuel Macron", "policy": "친환경·산업 주권 정책", "industry_or_sector": "에너지/제조", "companies": ["EDF", "STMicroelectronics"], "impact_description": "마크롱 대통령은 파리협정 이행과 에너지 안보 강화를 위해 원전 부흥과 배터리·반도체 등 전략산업 육성을 추진했습니다. 이에 따라 프랑스전력公(EDF)은 신규 원자로 건설과 노후원전 수명연장에 정부 지원을 받아 대규모 투자를 진행하고, 유럽 반도체 기업 ST마이크로일렉트로닉스는 프랑스 정부 보조금을 통해 그르노블 공장 증설 및 차세대 칩 R&D에 박차를 가했습니다. 이 같은 정책으로 프랑스는 유럽 배터리 연합 및 반도체 동맹의 중심에 서서 관련 기업들의 공급망 자립을 도왔습니다.", "evidence": [{"source_title": "Macron bets on nuclear revival, EDF to build new reactors", "url": "https://www.ft.com/content/039e8c38-0b9e-11ea-b2d6-9bf4d1957a67"}, {"source_title": "STMicro to get French aid for chip plant expansion", "url": "https://www.reuters.com/technology/france-italy-pledge-funds-stmicroelectronics-chip-plant-2022-07-11/"}]}], "notes": "에마뉘엘 마크롱 정부는 친시장 개혁과 유럽 차원의 산업 전략을 병행하였습니다. 노동 및 연금개혁은 단기 사회 갈등에도 불구하고 중장기적으로 기업 활력을 높이는 데 기여했고, 프랑스 주도의 EU 산업정책은 공급망 다변화 시대에 자국 기업 보호 및 육성으로 이어지고 있습니다."}, "model_response": {"report_title": "에마뉘엘 마크롱 대통령의 정치·경제·기업 연결성 분석", "time_range": "2017–2025", "question_answer": "에마뉘엘 마크롱 대통령은 에너지 전환, 방위 산업, 항공우주 분야에서 TotalEnergies, Renault, Airbus, Dassault Aviation 등 주요 기업들과 긴밀히 협력하며 정책을 추진했습니다. 또한 MEDEF(프랑스 고용주 연맹)와의 협력을 통해 친기업 정책을 강화했으며, 이는 기업 투자 유치 및 산업 경쟁력 강화에 기여했습니다. 마크롱 정부는 우크라이나 지원, 수소 기술 개발, Rafale 전투기 수출 등 전략적 파트너십을 통해 프랑스의 경제적·정치적 영향력을 확대했습니다.", "influence_chains": [{"politician": "Emmanuel Macron", "policy": "에너지 전환 정책", "industry_or_sector": "에너지", "companies": ["TotalEnergies"], "impact_description": "에마뉘엘 마크롱 대통령은 TotalEnergies와의 협력을 통해 프랑스의 에너지 전환 정책을 추진했으며, 이는 지속 가능한 항공 연료(SAF) 공급 및 수소 연구 개발에 기여했습니다. 마크롱은 TotalEnergies가 프랑스 경제에 중요하다고 강조하며 주요 상장을 유지하도록 촉구했습니다.", "evidence": [{"source_title": "totalenergies.com", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHWsWaNd-56tg2DpcQCzLFC47nf5D-9DV-B7s5rhPCsl64Slj_-SMbC5ShUb8nj1Jk6d6cR5LDV5pHz_6Wic0APvHO9_8mfpRXnQ0lIvO-GeskQfK6B4pvvd4i01Gb_ZSAJ6qDlA0u5lLvn0flL91FV8DG5w4kkee0tzTThEJghO46DOHCiNpToJzwaSr9MjPyan2kahwmBf9klWqtHNaQHjYvjnerxNGuF8VtTjJ1zyhbX6INqqo05a1dz7JZE"}, {"source_title": "theguardian.com", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHCP0_wWHbov-PR6ogtTc_R8bOnL85EdbjwaD59eUf1EmRf6Zyx6pBZ-jTQxdnbUABQpuUnPbZFqevsCucIZhXhXqYb_sCQNAwTLP1Sccv0P2E9Y34nv6cZI1zC1dbMS_3kJKVCfIa2ZaFXr576CN7I4i0-nlynxgK_Xskmk-pz28FNyBRaT9ds1I9WcjscyBjmvaWf5qnCxoz-Skc1KMdxgE7aV3-y4tOGSYG9Tiup8okPH206QjPItHix0x_e"}]}, {"politician": "Emmanuel Macron", "policy": "방위 산업 전략", "industry_or_sector": "자동차 및 방위 산업", "companies": ["Renault"], "impact_description": "마크롱 정부는 Renault와 협력하여 우크라이나를 위한 드론 생산을 추진했으며, Rafale 전투기 공식 차량으로 Renault를 지정하는 등 방위 산업 파트너십을 강화했습니다.", "evidence": [{"source_title": "autovistagroup.com", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQELh15E7PvLOduOkWbZUe1GIvZa8_eB2CL8GZGJpCJ5p45ys81F_d_cx-QlsJVgATSDmaAWXY_8J307av4tg_NMBtlITmp34ib5-v0NN3yhfbxCMkhnj-C1j9TGj9Z73cp141QP278dfgpQloRWYiI26JgZ8032LK_TgLVxHNLa27k6xe1HUMGuVttegOIwhKLwZbUDwFmFsi3sjclI-5kAIhzo9bBHmLZPXgPn"}, {"source_title": "dronexl.co", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHlei8j4hausI_WGX30z8W5M1ovw1jUyHLEZidHupnfFZpJBp8EHhbppC5ejl6UZu_5SQWV5eFyMX7BfSUuHabjW63yrtGU7joiSxfBTtf2tEd_qidW8Yf3hh2pOMs6Xp65aimTTRLfWTWfZqXGW6NLRZhyWvbJ76SUZVq_Hc8aXC156HNWfw=="}]}, {"politician": "Emmanuel Macron", "policy": "프랑스 2030 투자 계획", "industry_or_sector": "항공우주", "companies": ["Airbus"], "impact_description": "마크롱 정부는 Airbus와 협력하여 수소 연료 전지 항공기 개발을 포함한 '프랑스 2030' 전략을 추진했으며, 이는 항공우주 산업에 40억 유로를 투자하는 등 저탄소 항공기 개발을 가속화했습니다.", "evidence": [{"source_title": "sciencebusiness.net", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHbw--LeBzQVbXvgIeDmUjJ_mE3pKSn6opGWMhr7WalXBsnqLa47__EGEPFChX_ohj5_pHcftnf6zPS5fgmoDIOFt4dsxJuvDFdEb1fV44c12bTwgIfrDOKTjXxX6HZZUwplxkwsXu4d2hBoT5L2U71lQ0W2OU9XA6E7EgK218HV422fP1z0srsauDeQUpoK0E6Z3-Uyv5H5gKb0z7ebQs76Q=="}, {"source_title": "aviationweek.com", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQFvLSh0JPBG31aWx5cB566OMTc7ntfH4R_2JZP-doVJsc5xrWRvQ8vU51KeW41PqQGirIAceJivH3qyiy9M8Sz0tgL23uq4iVVhN7WMlYzBEjDuDORH5tEkFRt6SSUFnElhx7XOyR0VLJAK1UxASYf_5NVrIscvO55hYtbQj4PGH5oyeDf-ux2AJSQ6-19H01BlkC9A06KSlbfAk6t2QFPE7EFoxkbU"}]}, {"politician": "Emmanuel Macron", "policy": "유럽 방위 전략", "industry_or_sector": "방위 산업", "companies": ["Dassault Aviation"], "impact_description": "마크롱 정부는 Dassault Aviation의 Rafale 전투기 수출을 지원하며 우크라이나와의 방위 협력을 강화했고, 이는 프랑스의 군사적 자율성 확보에 기여했습니다.", "evidence": [{"source_title": "news.kbs.co.kr", "url": "https://news.kbs.co.kr/news/pc/view/view.do?ncd=8307350"}]}, {"politician": "Emmanuel Macron", "policy": "경제 개혁 정책", "industry_or_sector": "경제 정책", "companies": ["MEDEF"], "impact_description": "마크롱 정부는 MEDEF(프랑스 최대 고용주 연맹)와 긴밀히 협력하여 노동 시장 유연성 및 세제 개혁 등 친기업 정책을 추진했으며, 이는 기업 투자 유치에 기여했습니다.", "evidence": [{"source_title": "n.news.naver.com", "url": "https://n.news.naver.com/mnews/article/421/0008377402?sid=100"}]}], "notes": "마크롱 대통령의 정책 및 기업 관계는 에너지 전환, 방위 산업, 항공우주 분야에서 두드러지며, MEDEF와의 협력을 통해 친기업 정책을 지속적으로 추진했습니다. 일부 로비 활동은 공개되지 않았으나, 기업과의 긴밀한 협력이 정책 결정에 영향을 미친 것으로 분석됩니다."}} +{"query": "Volodymyr Zelensky", "gold_report": {"report_title": "Volodymyr Zelensky 우크라이나 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2019–2025년 11월 24일 기준", "question_answer": "볼로디미르 젤렌스키 대통령은 2022년 러시아 침공에 맞서 서방의 군사지원을 이끌어내며 Lockheed Martin, BAE Systems 등 글로벌 방산 기업들의 수주가 급증하는 간접 효과를 주었습니다. 국내적으로는 반부패 개혁과 올리가르히(재벌) 견제를 추진하여 PrivatBank 국유화 등 금융 부문의 투명성을 높였고, 전시경제 하에서도 전력·농업 인프라 복구에 집중 투자하여 DTEK, Kernel과 같은 기업들이 국제기구 지원 아래 재건 사업에 참여하도록 독려했습니다. 전쟁이 장기화됨에 따라 우크라이나 재건 계획은 Bechtel 등 해외 건설사의 관심을 모으고 있습니다.", "influence_chains": [{"politician": "Volodymyr Zelensky", "policy": "서방 군사지원 외교", "industry_or_sector": "방위산업/국제", "companies": ["Lockheed Martin", "BAE Systems"], "impact_description": "젤렌스키 대통령은 연일 미국과 NATO 동맹국을 상대로 무기 지원을 호소하여, HIMARS 로켓과 전차, 포탄 등이 대거 우크라이나로 지원되었습니다. 그에 따라 미 방산업체 록히드마틴은 HIMARS 생산라인을 증설해 주문량을 늘렸고, 영국 BAE 시스템즈는 우크라이나에 곡사포와 장갑차 수출이 증가하면서 2022~2023년 실적이 크게 향상되었습니다. 젤렌스키의 외교 행보는 서방 방산기업들에게 예상치 못한 특수를 안겨준 셈입니다.", "evidence": [{"source_title": "우크라 전쟁 특수, 미 방산업체 실적 급등", "url": "https://www.wsj.com/articles/lockheed-martin-earnings-ukraine-war-11670969844"}, {"source_title": "BAE Systems, 우크라 지원에 힘입어 신규 수주 기록", "url": "https://www.bloomberg.com/news/articles/2023-07-27/bae-systems-lands-record-orders-on-ukraine-boost-raises-outlook"}]}, {"politician": "Volodymyr Zelensky", "policy": "반부패·재벌 개혁", "industry_or_sector": "금융/철강", "companies": ["PrivatBank", "Metinvest"], "impact_description": "젤렌스키 집권 초기부터 부패 척결과 올리가르히 축소에 방점을 찍어왔습니다. 2016년 부실사태를 맞은 최대 민영은행 프리바트뱅크를 국유화하고, 2021년에는 올리가르히(재벌) 등록법을 제정하여 철강재벌 리나트 아흐메토프가 소유한 Metinvest 등 거대 기업들의 정치 영향력을 제한했습니다. 이러한 조치는 국제통화기금(IMF) 지원 조건이기도 했으며, 우크라이나 금융시스템 안정과 대외신인도 제고에 기여했으나 올리가르히 경제력 집중은 여전히 과제로 남아있습니다.", "evidence": [{"source_title": "우크라이나, 최대은행 PrivatBank 국유화", "url": "https://www.reuters.com/article/us-ukraine-crisis-privatbank-idUSKBN1480RX"}, {"source_title": "Zelenskiy signs law curbing oligarchs' influence", "url": "https://www.bloomberg.com/news/articles/2021-11-05/ukraine-s-zelenskiy-signs-law-curbing-oligarchs-influence"}]}, {"politician": "Volodymyr Zelensky", "policy": "인프라 재건 및 에너지 복구", "industry_or_sector": "전력/건설", "companies": ["DTEK", "Bechtel"], "impact_description": "전쟁으로 파괴된 인프라를 복구하기 위해 젤렌스키 대통령은 2023년부터 '우크라이나 재건 계획'을 추진하고 있습니다. 최대 민간 전력회사 DTEK는 정부 및 국제 원조로 피해입은 발전소와 송전망을 긴급 복구하여 작동시켰고, 미국 건설사 Bechtel은 우크라이나 정부와 재건 사업 협력 MOU를 체결하고 향후 철도·교량 재건 입찰 참여를 준비 중입니다. 이러한 노력은 전시에도 불구하고 국민 생활을 지탱하고, 향후 수백조원 규모로 예상되는 재건 시장에서 글로벌 기업들의 관심을 모으고 있습니다.", "evidence": [{"source_title": "DTEK restores power for millions amid ongoing strikes", "url": "https://news.yahoo.com/ukraines-dtek-restores-power-millions-123456789.html"}, {"source_title": "Ukraine signs deal with Bechtel on reconstruction projects", "url": "https://www.reuters.com/world/europe/ukraine-signs-deal-with-bechtel-cooperate-reconstruction-projects-2023-05-22/"}]}], "notes": "젤렌스키 대통령의 임기 중 2022년 이후 전쟁상황이 기업환경에 막대한 영향을 주었으며, 본 분석은 그 가운데서도 주요한 경제적 연쇄 효과를 추린 것입니다. 우크라이나의 재건은 진행형으로, 향후 국제사회의 지원과 기업들의 참여에 따라 성과가 가시화될 전망입니다."}, "model_response": {"report_title": "볼로디미르 젤렌스키의 정책, 산업, 기업 연결성 분석 (2022–2025)", "time_range": "2022–2025", "question_answer": "볼로디미르 젤렌스키는 2022년 침공 이후 우크라이나의 경제 회복, 방산 파트너십, 국제 원조 의존도 형성에서 핵심적인 역할을 수행했다. 그의 정책은 에너지 부문 개혁, 미국·프랑스와의 방산 협력, 국내 방산 생산 확대, EU 재정 지원 등을 포함하며, 이는 주요 기업 및 산업에 직접적인 영향을 미쳤다. 그러나 부패 스캔들로 인해 국제 원조 감소와 정치적 취약성이 발생했다.", "influence_chains": [{"politician": "Volodymyr Zelensky", "policy": "에너지 부문 전면 개편", "industry_or_sector": "에너지", "companies": ["Energoatom", "Naftogaz", "Ukrhydroenergo", "Gas Transmission System Operator of Ukraine"], "impact_description": "젤렌스키 대통령의 에너지 부문 개혁 정책은 부패 스캔들 이후 주요 국영 에너지 기업들을 전면 개편하는 결과를 초래했으며, 이는 국제 원조 감소와 정치적 취약성으로 이어졌다.", "evidence": [{"source_title": "livemint.com", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGmBnAEnbe7yXuSKDVxfcdZL61WuTE6rCTJSS7GBk-9w7d646PGV05mO0JX4BJ4PiZxqFgweAtX9-GpLstiYAem90WDy7-Y082TW1SzkShMWaNg4Nam9btN1YDaIxklqO47t06XPk8Mtq1SCViYI5Mzen3MEOX7q-GJyDP7MZdhvOA3PtmW2-bUcWPNFzzP0I_HoqzVwBiZgTeYLul0dvKmOnlAytyf8s_bXbbl"}, {"source_title": "arabnews.com", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQE1EZx_IhXTdCgeSLErI3zzJ39LKRy1KEfORy2sBBZFUGHKUy3jagbs3fbjCRyP1i8VsMROo1OG_-E0dLYZfKTyZmjdFlWLqR3ZICHIh56Y_yquZ2Mnj23TQECDA6rXDJS0q_LRDXaWwt8WszqnbIaeBAm8Gui5cJP3bAgTICRJghnbOTdWrNdT-KIWbET0AltarUwMLtrCRuGhmuNQ"}, {"source_title": "eunews.it", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQG4tTi6Pl6UjlEyygyJ7meafmmxd_L7WH0YCkmOv2FqI0yfejD7_HesASz922CibiBUQEvlbTqiBtJ2810eVKitIrxqwxKIGxqtn3mwuAvb8yO8sZ9tCpr8lOkIDIxO9ndgmUBWm3IELVFjBMt1rhme5yhjTgWVbWysvDwxTsuBf-YrVteDqcD3AhjT2xC8bF935xj0ON7vHeo="}]}, {"politician": "Volodymyr Zelensky", "policy": "방산 파트너십 강화", "industry_or_sector": "방산", "companies": ["Lockheed Martin", "Dassault Aviation"], "impact_description": "미국 및 프랑스와의 방산 협력은 우크라이나의 군사 능력을 직접적으로 강화했으며, 국내 방산 생산 확대에 기여했다.", "evidence": [{"source_title": "modern.az", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQG6bhq_CKcfQWDMo7CXvMpMWbvdla-AuMgOwag38KeOKLwOoVd49NJp0gQEJ_e2fSpRWyHxwKPkiptctdtQvJYr3vPIKUURJKbwzKK-pJMbxmGSS7xnTq8WquS1OmyeqJiEjQM="}, {"source_title": "eunews.it", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQFbAcfYD3dvmm06bS9TlzoEb4wNE_Jcc_-UTvw1rYP1NAPWGZKHKdmdGFnnuYCo82Vgu2TzAxHE96xTNA7_4XQYmS4Uy8AehI8m_d-aJdhYvv05QjJJCFqHScIN_KKe8WP7fkTqwLF_RamTC-gceJycxojsGHbo50qOatwYSHeeuqdmnaMuDX6tKhcMLFqavm5XWxqF-AXx"}]}, {"politician": "Volodymyr Zelensky", "policy": "국내 방산 생산 확대", "industry_or_sector": "방산", "companies": ["RTX Corporation", "Lockheed Martin", "Northrop Grumman", "BAE Systems", "Saab", "Indra Group", "Flensburger Fahrzeugbau Gesellschaft (FFG)", "Escribano Mechanical & Engineering (EM&E)", "Tecnove", "Practika", "KNDS", "MBDA", "D&M Holding Company", "Amentum Services, Inc.", "AeroVironment, Inc.", "Kongsberg Defence & Aerospace", "Romarm", "CZ Colt Group", "Quantum Systems", "Hellenic Defence Systems"], "impact_description": "우크라이나의 방산 산업 역량 10배 증가와 2025년 말까지 전선 무기의 50% 국내 생산 목표 달성에 기여했으며, 연간 350억 달러 규모의 드론 및 미사일 생산 잠재력을 창출했다.", "evidence": [{"source_title": "mod.gov.ua", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGmBnAEnbe7yXuSKDVxfcdZL61WuTE6rCTJSS7GBk-9w7d646PGV05mO0JX4BJ4PiZxqFgweAtX9-GpLstiYAem90WDy7-Y082TW1SzkShMWaNg4Nam9btN1YDaIxklqO47t06XPk8Mtq1SCViYI5Mzen3MEOX7q-GJyDP7MZdhvOA3PtmW2-bUcWPNFzzP0I_HoqzVwBiZgTeYLul0dvKmOnlAytyf8s_bXbbl"}, {"source_title": "armyinform.com.ua", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQFi9TaiY7iJlfJ-hw4MtDESCwyxCw157o0DEHkIv0bxcOYDqXhsUjz122_yA-ogosFK26Eyp1yFHZDmrVS7n2ze0-7isHtPjZhaORse-mn-KTImOmgfAR3fUKib5NLZCvRG6DCYfqu-Ust5SukjE9eU6pEgeFDcVorvsmrRWF40uKE9pVdIGzkFSuTVeCeQ0NDDA_HeBK8J2Wg=="}, {"source_title": "eunews.it", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQFbAcfYD3dvmm06bS9TlzoEb4wNE_Jcc_-UTvw1rYP1NAPWGZKHKdmdGFnnuYCo82Vgu2TzAxHE96xTNA7_4XQYmS4Uy8AehI8m_d-aJdhYvv05QjJJCFqHScIN_KKe8WP7fkTqwLF_RamTC-gceJycxojsGHbo50qOatwYSHeeuqdmnaMuDX6tKhcMLFqavm5XWxqF-AXx"}]}, {"politician": "Volodymyr Zelensky", "policy": "EU 우크라이나 시설", "industry_or_sector": "국제 원조", "companies": ["EU Ukraine Facility"], "impact_description": "EU 우크라이나 시설은 4년간 500억 유로의 예측 가능한 재정 지원을 제공했으나, 2025년 지원금은 개혁 미완성으로 감소했다.", "evidence": [{"source_title": "washingtonpost.com", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHcsNEdBZptmVNqIxLv396hpJMz05t-Xh6-2XrbOiKwvkWC6SeA6PBngV-sAUAm7VEzHXR7nzkfR1hbPxamN0iBFGEcruO1X7QVbLbsbZnVaQmBuyI70fvXZdEOEhtaSswiuf4FEQgf6jRjBxzVDCDquhCv"}]}], "notes": "특정 수혜 기업 정보는 공개된 출처에 명시되어 있지 않으며, 원조는 부문 또는 정부 수준에서 보고됨. 에너지 부문 부패 스캔들 관련 인물인 티무르 민디치, 헤르만 할루셴코, 스비틀라나 흐린추크는 기업 목록에 포함되지 않음."}} +{"query": "Fumio Kishida", "gold_report": {"report_title": "기시다 후미오 일본 총리의 정치·경제 영향력 네트워크 분석", "time_range": "2021–2025년 11월 24일 기준", "question_answer": "기시다 총리는 방위비를 대폭 증액하여 미쓰비시중공업 등 방산기업에 새로운 성장 기회를 제공했고, 핵심전략산업(반도체·배터리)에 보조금을 지급하여 일본 기업의 국내 투자와 TSMC 등의 유치를 이끌었습니다. 또한 '새로운 자본주의' 기치 하에 기업들에 임금 인상과 투자 확대를 독려하여 소니, 도요타 등에서 기록적인 임금인상 합의를 끌어냈습니다. 이러한 정책들은 장기 정체에 빠진 일본 경제에 변화를 주려는 시도로 평가되나, 재원 마련과 구조개혁의 한계로 효과가 부분적이라는 지적도 있습니다.", "influence_chains": [{"politician": "Fumio Kishida", "policy": "방위비 증액 정책", "industry_or_sector": "방위산업", "companies": ["Mitsubishi Heavy Industries", "IHI Corporation"], "impact_description": "2022년 기시다 내각은 안보환경 악화를 이유로 GDP 대비 방위비를 1%대에서 2%로 올리기로 결정했습니다. 이로써 미쓰비시중공업은 장거리 미사일 개발과 함정 건조 등 새로운 방위사업을 수주하여 주가가 2023년에 크게 상승했고, 항공엔진 제조사 IHI도 전투기 엔진 및 우주방위 관련 예산 증가로 연구개발 기회가 확대되었습니다. 방위산업 전반에 수십년 만의 특수가 찾아와 일본 기업들의 방산 부문 투자가 늘어나는 계기가 되었습니다.", "evidence": [{"source_title": "일본, 방위비 2배로…미쓰비시重 등 방산주 강세", "url": "https://www.wsj.com/articles/japan-defense-stocks-surge-on-budget-hike-11671234567"}, {"source_title": "IHI, 전투기 엔진 개발 참여...방위비 증액 수혜", "url": "https://asia.nikkei.com/Business/Aerospace-Defense/IHI-s-military-engine-unit-set-for-lift-off-under-Japan-defense-plan"}]}, {"politician": "Fumio Kishida", "policy": "산업부흥 보조금 (반도체 등)", "industry_or_sector": "반도체/배터리", "companies": ["TSMC Japan", "Toyota-Panasonic (Prime Planet Energy)"], "impact_description": "기시다 총리는 공급망 안보와 첨단 산업 육성을 위해 해외 첨단기업 유치와 국내 설비 투자에 막대한 보조금을 지급했습니다. 세계 1위 파운드리 TSMC는 구마모토현에 소니와 합작으로 반도체 공장을 건설하며 일본 정부로부터 약 4,760억 엔의 지원을 받아 2024년 가동 예정이고, 도요타-파나소닉 배터리 합작사 Prime Planet Energy는 차량용 배터리 공장 증설에 정부 지원금을 확보해 생산능력을 확대하고 있습니다. 이같은 산업 정책은 일본 제조업의 기술 주권을 강화하고 하이테크 부문의 고용을 창출하는 효과를 거두고 있습니다.", "evidence": [{"source_title": "TSMC, 일본 소니와 구마모토에 반도체 공장…정부 4760억엔 지원", "url": "https://www.reuters.com/technology/tsmc-plans-build-second-japan-chip-plant-report-2023-02-24/"}, {"source_title": "일본, 배터리 공장 7곳에 3300억엔 보조금 지원", "url": "https://asia.nikkei.com/Business/Energy/Japan-to-subsidize-battery-plants-by-Panasonic-Toshiba-and-GS-Yuasa"}]}, {"politician": "Fumio Kishida", "policy": "신자본주의 (임금인상 촉구)", "industry_or_sector": "경영/노동", "companies": ["Toyota", "Sony"], "impact_description": "기시다 총리는 '새로운 자본주의' 슬로건 아래 기업들에게 임금 인상과 사내유보 활용을 촉구했습니다. 그 결과 2023년 춘투(봄철 임금교섭)에서 도요타는 약 20년만에 최고 수준의 임금인상을 단행했고, 소니도 기본급 7% 인상과 보너스 확대를 결정하여 노동자들의 실질임금 상승을 이루었습니다. 이는 일본 경제의 구조적 과제였던 임금 정체를 완화하고 소비 진작에 기여할 조짐을 보였으나, 한편으로 기업 수익성 압박과 중소기업 미흡 등 한계도 지적됩니다.", "evidence": [{"source_title": "도요타, 기시다 요청에 화답…전 직원 임금 9% 인상", "url": "https://www.japantimes.co.jp/news/2023/02/23/business/corporate-business/toyota-wage-hike-agreement/"}, {"source_title": "소니, 26년만에 최고 임금인상…기시다 '임금UP' 가속", "url": "https://www.bloomberg.com/news/articles/2023-03-29/sony-to-raise-base-pay-by-7-highest-hike-in-two-decades"}]}], "notes": "기시다 후미오 총리의 경제정책은 아베노믹스 이후 일본의 새로운 방향 모색으로 볼 수 있습니다. 방위비 증액과 산업지원은 안보와 성장 두 마리 토끼를 잡으려는 전략이며, 임금인상 유도는 디플레이션 탈출을 위한 사회적 노력의 일환입니다. 정책 효과는 아직 진행형으로, 향후 일본 경제의 활력 회복 여부에 따라 평가가 달라질 것입니다."}, "model_response": {"report_title": "기시다 후미오 총리의 정치·경제 영향력 네트워크 분석", "time_range": "2022–2025", "question_answer": "기시다 후미오 총리는 반도체 보조금 정책(TSMC, Rapidus), 그린 트랜스포메이션(GX) 정책(Panasonic, Toyota), GDP 대비 2% 방위비 지출 정책(Mitsubishi Heavy Industries, Lockheed Martin) 등을 통해 주요 산업 및 기업과 긴밀히 연결되어 있으며, 이는 일본의 경제·외교 정책 이니셔티브에 직접적인 영향을 미치고 있습니다.", "influence_chains": [{"politician": "기시다 후미오", "policy": "반도체 보조금 정책", "industry_or_sector": "반도체", "companies": ["TSMC", "Rapidus"], "impact_description": "일본 반도체 산업 부활 및 공급망 확보에 기여", "evidence": [{"source_title": "Asahi Shimbun", "url": "https://www.asahi.com/ajw/articles/14911017"}]}, {"politician": "기시다 후미오", "policy": "2050 탄소중립 정책", "industry_or_sector": "그린 트랜스포메이션(GX)", "companies": ["Panasonic", "Toyota"], "impact_description": "재생에너지 및 전기차 시장 성장 촉진", "evidence": [{"source_title": "Asahi Shimbun", "url": "https://www.asahi.com/ajw/articles/14911017"}]}, {"politician": "기시다 후미오", "policy": "GDP 대비 2% 방위비 지출 정책", "industry_or_sector": "방위 산업", "companies": ["Mitsubishi Heavy Industries", "Lockheed Martin"], "impact_description": "자위대 현대화 및 세계 3위 군사 지출국 달성", "evidence": [{"source_title": "Reuters", "url": "https://www.reuters.com/world/asia-pacific/pacifist-japan-unveils-unprecedented-320-bln-military-build-up-2022-12-16/"}]}], "notes": "추가 정책(예: '신자본주의') 및 기업(예: Toshiba, SoftBank)에 대한 심층 분석이 필요할 수 있음"}} +{"query": "Mohammed bin Salman", "gold_report": {"report_title": "무함마드 빈 살만 사우디 왕세자의 정치·경제 영향력 네트워크 분석", "time_range": "2016–2025년 11월 24일 기준", "question_answer": "무함마드 빈 살만 왕세자는 'Vision 2030'을 통해 Saudi Aramco 상장과 석유산업 민영화로 막대한 자금을 조달하고, NEOM 스마트시티 등 초대형 프로젝트를 추진하여 건설·관광 분야에 Bechtel, Bouygues 등 글로벌 기업을 끌어들였습니다. 또한 OPEC+ 감산을 주도하여 유가를 부양함으로써 Aramco와 SABIC 등 사우디 에너지·석유화학 기업의 수익을 극대화했습니다. 동시에 Public Investment Fund(PIF)를 활용해 Lucid Motors, SoftBank Vision Fund 등에 투자하여 사우디 경제를 다각화하려는 노력을 기울이고 있습니다.", "influence_chains": [{"politician": "Mohammed bin Salman", "policy": "Vision 2030 경제개혁", "industry_or_sector": "국부펀드/투자", "companies": ["Saudi Aramco", "Lucid Motors"], "impact_description": "2016년 발표된 Vision 2030에 따라 MBS는 국영 석유회사 Saudi Aramco 지분 일부를 2019년 국내 상장시켜 약 294억 달러를 조달하며 세계 최대 IPO를 기록했습니다:contentReference[oaicite:44]{index=44}. 이를 통해 확보한 자금은 사우디 국부펀드(PIF)에 투입되어 전기차 기업 Lucid Motors 지분 인수 등 해외 첨단산업 투자로 이어졌습니다. 그 결과 Lucid는 사우디에 공장 건설을 약속받고 PIF로부터 10억 달러 추가 투자를 유치하는 등 사우디의 전략적 투자 파트너로 부상했습니다. 이러한 경제개혁 조치는 사우디 경제의 탈석유화를 촉진하고 있습니다.", "evidence": [{"source_title": "사우디 아람코 IPO, 세계 최고 시가총액 기업 등극", "url": "https://www.reuters.com/article/us-saudi-aramco-ipo-idUSKBN1YI14V"}, {"source_title": "사우디 PIF, Lucid 모터스에 추가 투자…현지 생산 추진", "url": "https://www.bloomberg.com/news/articles/2023-05-03/saudi-arabia-s-pif-nears-deal-for-new-funding-for-ev-maker-lucid"}]}, {"politician": "Mohammed bin Salman", "policy": "OPEC+ 감산 및 유가 정책", "industry_or_sector": "석유/화학", "companies": ["Saudi Aramco", "SABIC"], "impact_description": "MBS는 2017년 이후 러시아 등 산유국과 OPEC+ 동맹을 맺어 산유량 조절을 주도했습니다. 특히 2020년 팬데믹과 2022년 우크라이나 전쟁 시기에 대규모 감산 합의를 이끌어내어 국제 유가를 부양함으로써, Saudi Aramco의 2022년 순이익이 전년 대비 2배 이상 폭증하고:contentReference[oaicite:45]{index=45} 석유화학 기업 SABIC도 고유가로 인한 원료가격 상승분을 판매가에 전가해 수익 개선을 누렸습니다. 유가 상승은 사우디 재정을 흑자로 돌려놓았고, MBS는 이를 재투자해 미래 사업에 재원을 투입하는 선순환을 만들고 있습니다.", "evidence": [{"source_title": "사우디 아람코, 2022년 사상 최대 1611억달러 순이익 기록", "url": "https://www.bbc.com/news/business-64932727"}, {"source_title": "OPEC+ 감산 결정, 글로벌 유가 4%↑…사우디 주도", "url": "https://www.reuters.com/markets/commodities/opec-surprise-output-cuts-send-oil-prices-soaring-2023-04-02/"}]}, {"politician": "Mohammed bin Salman", "policy": "초대형 프로젝트(NEOM 등)", "industry_or_sector": "건설/관광", "companies": ["Bechtel", "Marriott International"], "impact_description": "빈 살만 왕세자는 5000억 달러 규모 미래형 도시 '네옴(Neom)'과 홍해 관광단지 등 초대형 프로젝트를 추진하여 글로벌 건설·관광기업을 사우디로 불러들이고 있습니다. 미국 건설사 Bechtel은 네옴의 첨단 신도시 '더 라인(The Line)' 건설관리 계약을 체결했고:contentReference[oaicite:46]{index=46}, 메리어트 등 세계적 호텔 체인은 홍해 프로젝트에 고급 리조트를 운영하기로 하는 등 사우디 관광산업 진출을 확대하고 있습니다. 이러한 메가프로젝트는 사우디 건설업에 활황을 가져와 현지 건설사와 외국 기업 모두에게 큰 기회가 되고 있습니다.", "evidence": [{"source_title": "Bechtel lands contract for NEOM The Line project", "url": "https://www.constructionweekonline.com/projects-tenders/bechtel-neom-the-line-project-management"}, {"source_title": "Marriott to open three luxury resorts in Saudi Red Sea project", "url": "https://www.hoteliermiddleeast.com/business/marriott-red-sea-saudi"}]}], "notes": "MBS의 주도로 사우디는 석유 중심에서 탈피해 미래 성장동력을 찾고자 노력 중이며, 그 과정에서 국내외 기업들의 참여를 적극 유도하고 있습니다. 정책 추진은 왕정체제의 강력한 드라이브로 단기간에 성과를 내고 있으나, 정치적 위험과 인권 문제 등이 외국 투자에 변수로 작용할 수 있습니다."}, "model_response": {"report_title": "모하메드 빈 살만의 정책, 산업, 기업 연결성 분석", "time_range": "2025년 11월 기준", "question_answer": "모하메드 빈 살만(MBS)은 사우디 비전 2030을 중심으로 경제 다각화, 관광 성장, 에너지 전환을 추진하며 PIF(공공투자펀드), 아람코, SABIC 등 주요 기업을 통해 정치·경제적 영향력을 확장하고 있습니다. NEOM, 레드 시 프로젝트와 같은 메가 프로젝트를 통해 글로벌 기술·건설 기업과 협력하며, 미국, 중국, 이스라엘 등과의 전략적 파트너십을 바탕으로 경제·지정학적 네트워크를 구축했습니다. PIF의 글로벌 투자(Uber, Lucid Motors, Jio Platforms)와 아람코의 수소 프로젝트, SABIC의 수입 대체 정책은 사우디 경제 구조 변화를 주도하고 있습니다.", "influence_chains": [{"politician": "Mohammed bin Salman", "policy": "사우디 비전 2030", "industry_or_sector": "에너지, 관광, 기술, 인프라, 제조", "companies": ["NEOM", "Red Sea Project", "Uber", "Lucid Motors", "Jio Platforms", "Air Products", "ACWA Power", "Larsen & Toubro", "Volocopter", "Candela", "Jumeirah", "Six Senses", "Hyundai", "Aramco", "SABIC"], "impact_description": "모하메드 빈 살만(MBS)은 사우디 비전 2030을 통해 경제 다각화, 관광 성장, 일자리 창출, PIF 확장을 주도했습니다. NEOM, 레드 시 프로젝트, 아람코, SABIC 등 주요 기업 및 프로젝트를 통해 에너지, 관광, 기술 분야에서 글로벌 영향력을 확대했습니다. PIF의 글로벌 투자(Uber, Lucid Motors, Jio Platforms)와 아람코의 수소 프로젝트, SABIC의 수입 대체 정책은 사우디 경제 구조 변화를 이끌었습니다.", "evidence": [{"source_title": "Saudi Vision 2030", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQFB3y_dbI0eWwiwLpCLToCuJAss8cKSOQt0F6SQqS50Gp_HN5kzHp8GJ5f4uY6iOv24yLKW_9_xrSJ_9BuMCe-0Qbsy9AiQx2U9SnU1HxYfX1P7mVjTqw-YhEDy"}, {"source_title": "Public Investment Fund (PIF)", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQE-aGDFkkTUQAlTSceJGl7--RdMYPvRGy9bZcy4wrNcla9d7sNs41yGH26RMXNiu2WXeUSal4Vqt9uSqEFO5X3j54POAjuxJsNpZunLyPHsvA5EpAKGLq2O9_jwJpWuNZhPtP-EOw"}, {"source_title": "Saudi Aramco", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGVrwCynZ8nuaNSGgtkwGsS4XN-qppRH-YTsu2242R5RRQCPUG6j2oc4UCLVjOKRtS85c5RPxGcGH3IAfI4-NP5jyU6VYDgx_dLjDiSr7QhaPCNGdQPoUyb0apkX6WfF5GQjrkvMx5kRd_yY81gHIYEhI70GZ13PlMFz8UAYQZbM1b8KU6A9g3XhYTxTg8if1-n0anTPvM720hQgrouDqomh9ugZes"}, {"source_title": "SABIC", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQH5onDkrAevvffM6Q4-GKQItpTfAMKXCkU0-IIn5yIlV5hfgiGHWAu3gbVe7KYU3hcrVG7Hib93rPgkls0rshP-Pj68PXaypweDWMLW8aV0gI0LO6YYQKFOGa2-uhGctn6Jv6L4qNBV5nRIX0Gyvka5seAZCXyzOSmHfj4o"}]}], "notes": ""}} +{"query": "윤석열", "gold_report": {"report_title": "윤석열 전 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2025년 11월 24일 기준", "question_answer": "윤석열 전 대통령은 원전 확대 정책으로 두산에너빌리티와 한국전력 등 원전 관련 기업에 수혜를 주었으며, 동시에 원전 중심 기조는 한화솔루션의 태양광 사업에 부정적 영향을 미쳤습니다. 또한 국방비 증액과 기술 육성 정책으로 방산 및 첨단산업 기업의 성장에 기여했으며, 미국·일본과의 동맹 강화 및 중동 경제협력 확대를 통해 국제적 영향력을 도모했습니다.", "influence_chains": [{"politician": "윤석열", "policy": "원전 확대 정책", "industry_or_sector": "에너지/원전", "companies": ["두산에너빌리티"], "impact_description": "윤석열 정부가 신한울 3·4호기 건설 등 원전 사업을 재개하면서 두산에너빌리티가 원전 주기기 제작 수주와 SMR 기술 개발 지원을 받는 등 직접적 수혜를 입었습니다:contentReference[oaicite:0]{index=0}. 글로벌 에너지 위기 속 원전 수요 증가로 해당 기업의 재무 실적도 개선되었습니다.", "evidence": [{"source_title": "윤석열 정책 수혜주 2편] 전 두산중공업(현 두산에너빌리티), 친원전 ...", "url": "https://contents.premium.naver.com/richplatform/therichplatform/contents/220416185027884GB"}]}, {"politician": "윤석열", "policy": "원전 중심 에너지정책", "industry_or_sector": "신재생에너지/태양광", "companies": ["한화솔루션"], "impact_description": "원전 위주의 에너지 정책으로 국내 태양광 수요가 위축되면서 한화솔루션의 태양광 사업 실적이 부진해졌습니다. 한편 미국의 IRA 정책 등에 힘입어 한화솔루션은 베트남·미국에 투자하며 해외 시장을 공략했고, 국방 분야 SMR 추진으로 일부 수혜를 보았습니다:contentReference[oaicite:1]{index=1}:contentReference[oaicite:2]{index=2}.", "evidence": [{"source_title": "엇갈린 K-태양광 실적⋯OCI 웃고 한화 울고", "url": "https://www.etoday.co.kr/news/view/2524466"}, {"source_title": "[이재명 시대, 이 기업을 주목하라]⑩ 한화솔루션ㆍOCI홀딩스", "url": "https://www.dnews.co.kr/uhtml/view.jsp?idxno=202507031419058310351"}]}, {"politician": "윤석열", "policy": "국방·기술 육성 정책", "industry_or_sector": "방위산업/첨단기술", "companies": ["한화에어로스페이스"], "impact_description": "윤석열 정부는 국방예산 증액과 12대 국가전략기술 육성을 추진하여 한화에어로스페이스 등 방위산업 기업의 수주 확대와 R&D 투자를 뒷받침했습니다:contentReference[oaicite:3]{index=3}:contentReference[oaicite:4]{index=4}. 이를 통해 국내 방산업체들은 첨단 무기 개발과 수출에 탄력을 받았습니다.", "evidence": [{"source_title": "尹 취임 2년차, 정책수혜株가 뜬다…방산·원전·콘텐츠株 주목 - 한국경제", "url": "https://www.hankyung.com/economy/article/2023050451426"}]}], "notes": "모든 정보는 2025년 11월 24일 기준이며, 윤석열 전 대통령의 정책들은 현재 이재명 정부에서 수정 또는 재평가되고 있습니다. 일부 데이터는 언론 보도와 간접 추론을 기반으로 합니다."}, "model_response": {"report_title": "윤석열 전 대통령의 정책-산업-기업 영향력 네트워크 분석 (2025년 11월 기준)", "time_range": "2022–2025", "question_answer": "윤석열 전 대통령은 재임 기간 중 반도체, 원자력, 건설 산업과 밀접한 정책-기업 관계를 형성했습니다. 주요 정책으로는 반도체 메가 클러스터 투자, 원자력 발전 확대, 주택 공급 대책이 있으며, 각각 삼성전자·SK하이닉스, 한국수력원자력·두산에너빌리티, 현대건설·GS건설 등 기업에 혜택을 제공했습니다. 그러나 2025년 4월 탄핵 이후 현재(2025년 11월 25일) 직접적인 기업 연계는 확인되지 않습니다.", "influence_chains": [{"politician": "윤석열", "policy": "반도체 산업 경쟁력 강화 정책", "industry_or_sector": "반도체 산업", "companies": ["삼성전자", "SK하이닉스"], "impact_description": "반도체 메가 클러스터 투자 및 R&D 지원 정책으로 삼성전자, SK하이닉스에 1.4조 원 정책 기금 조성 및 세액 공제 혜택 제공", "evidence": [{"source_title": "wikipedia.org", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQF_Uxp5-5YUu3iOPItCpYmel-VXg-1H9Glag6JmlGHZuMhmntofoFANR4u6mnQrQTZG0IeJEqHbbz3BOdTsj0jtXgvSMH50gizAmlNNjChz_T8hSmorBxPt9Nt2oN09cqvTMd0OkYjyQXlLxuVqCRRZLo5dNaC8c8cc89mC7wpHj8R_NzOHP2M="}]}, {"politician": "윤석열", "policy": "원자력 발전 확대 정책", "industry_or_sector": "원자력 산업", "companies": ["한국수력원자력", "두산에너빌리티"], "impact_description": "원전 수출 컨소시엄 구성 및 소형모듈원전(SMR) 기술 개발 지원으로 한국수력원자력, 두산에너빌리티에 세제 혜택 및 보조금 확대", "evidence": [{"source_title": "wikipedia.org", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQF_Uxp5-5YUu3iOPItCpYmel-VXg-1H9Glag6JmlGHZuMhmntofoFANR4u6mnQrQTZG0IeJEqHbbz3BOdTsj0jtXgvSMH50gizAmlNNjChz_T8hSmorBxPt9Nt2oN09cqvTMd0OkYjyQXlLxuVqCRRZLo5dNaC8c8cc89mC7wpHj8R_NzOHP2M="}]}, {"politician": "윤석열", "policy": "주택 공급 대책", "industry_or_sector": "건설/부동산 산업", "companies": ["현대건설", "GS건설"], "impact_description": "재건축 초과이익 환수제 폐지 및 LTV 완화 정책으로 현대건설, GS건설 등 대형 건설사에 주택 공급 확대 수혜", "evidence": [{"source_title": "wikipedia.org", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQF_Uxp5-5YUu3iOPItCpYmel-VXg-1H9Glag6JmlGHZuMhmntofoFANR4u6mnQrQTZG0IeJEqHbbz3BOdTsj0jtXgvSMH50gizAmlNNjChz_T8hSmorBxPt9Nt2oN09cqvTMd0OkYjyQXlLxuVqCRRZLo5dNaC8c8cc89mC7wpHj8R_NzOHP2M="}]}], "notes": "윤석열 전 대통령은 2025년 4월 탄핵되었으며, 현재 12.3 비상계엄 사태 및 채상병 사건 관련 재판을 받고 있음. 2025년 11월 기준 직접적인 기업 연계 정보는 부재하나, 재임 기간 중 반도체, 원자력, 건설 산업과의 정책-기업 관계 확인됨."}} +{"query": "이재명", "gold_report": {"report_title": "이재명 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2025년 11월 24일 기준", "question_answer": "이재명 대통령은 AI와 신재생에너지 육성 정책을 통해 삼성전자, 한화솔루션 등 미래 산업 기업들의 성장동력을 마련했으며, 남북 관계 개선 구상을 바탕으로 개성공단 입주 기업과 대북 사업 분야에도 긍정적 기대를 불러일으켰습니다. 동시에 지역화폐 지원 등 중소상공인 활성화 정책으로 핀테크 기업들의 수혜를 도모하고 있습니다.", "influence_chains": [{"politician": "이재명", "policy": "AI 산업 육성 정책", "industry_or_sector": "ICT/인공지능", "companies": ["네이버", "SK텔레콤"], "impact_description": "이재명 정부는 'AI 3대 강국 도약'을 기치로 AI 연구개발을 적극 지원하고 있습니다. 그 결과 네이버, SK텔레콤 등 국내 AI 선도 기업들이 정부 주도 ‘국가대표 AI 기업’으로 선정되어 AI 모델 개발 프로젝트에 참여하며 주가와 투자심리가 개선되었습니다:contentReference[oaicite:5]{index=5}:contentReference[oaicite:6]{index=6}. 정부의 지속적인 지원으로 해당 기업들은 AI 인프라 확대와 글로벌 경쟁력 강화의 혜택을 보고 있습니다.", "evidence": [{"source_title": "이재명정부 5년 청사진 곧 등장…장밋빛전망 가득한 ‘3대 정책 수혜주’", "url": "https://www.ledesk.co.kr/view.php?uid=13714"}]}, {"politician": "이재명", "policy": "신재생에너지 확대 정책", "industry_or_sector": "에너지/신재생", "companies": ["한화솔루션", "씨에스윈드"], "impact_description": "탄소중립 실현과 에너지 전환 가속화 목표 아래 이재명 정부는 풍력·태양광 산업 육성에 박차를 가하고 있습니다. 이에 따라 국내 1위 태양광 기업 한화솔루션과 풍력 설비 업체 씨에스윈드 등이 정책적 지원으로 실적 개선과 성장성 확보에 긍정적 영향을 받고 있습니다:contentReference[oaicite:7]{index=7}:contentReference[oaicite:8]{index=8}. 또한 전력 인프라 분야 기업들(HD현대일렉트릭 등)도 재생에너지 확대에 따른 투자 확대 수혜주로 부각되었습니다.", "evidence": [{"source_title": "이재명정부 5년 청사진 곧 등장…장밋빛전망 가득한 ‘3대 정책 수혜주’", "url": "https://www.ledesk.co.kr/view.php?uid=13714"}]}, {"politician": "이재명", "policy": "남북 경협 재개 구상", "industry_or_sector": "남북경협/개성공단", "companies": ["좋은사람들", "아난티"], "impact_description": "이재명 대통령이 남북 대화 재개와 접경지역 개발 의지를 밝힘에 따라 개성공단 재가동 등 남북경협 기대감이 높아졌습니다. 이에 개성공단에 공장을 둔 속옷 업체 좋은사람들, 금강산 관광 관련 리조트 사업을 했던 아난티 등의 주가가 급등하는 등 직접적 수혜 기대가 나타났습니다:contentReference[oaicite:9]{index=9}:contentReference[oaicite:10]{index=10}. 정부의 대북 정책 기조 변화로 이들 남북경협 테마 기업들은 향후 장기적 성과에 대한 기대를 모으고 있습니다.", "evidence": [{"source_title": "문재인 정책株, 4대강 복원·개성공단 관련주 급등...테마주는 약세", "url": "https://www.thevaluenews.co.kr/news/6918"}, {"source_title": "남북관계 개선에 남북경협주 들썩", "url": "https://www.ledesk.co.kr/view.php?uid=13714"}]}], "notes": "이재명 대통령의 영향력 분석은 2025년 11월 기준이며, 증권가의 기대 심리와 정책 발표에 따른 시장 반응을 기반으로 작성되었습니다. 일부 연관 기업의 실적 개선은 예상에 따른 것이며 실제 정책 효과는 향후 평가가 필요합니다."}, "model_response": {"report_title": "이재명 대통령의 정치·경제·기업 연결성 분석", "time_range": "2025년 11월 25일 기준", "question_answer": "이재명 대통령은 AI, 바이오, 방산우주항공, 에너지, 문화콘텐츠 등 첨단 산업을 집중 육성하는 '미래전략산업 ABCDE' 정책을 추진 중이며, 삼성전자, SK하이닉스, 현대자동차그룹, LG그룹 등 주요 기업들과 협력하여 한미 관세협상 후속 조치 및 UAE와의 방산·에너지 협력을 강화하고 있습니다. 또한 지역 전략 산업 육성을 통해 서울, 부산, 경기도 등에서 반도체, AI, 미래 모빌리티 분야를 지원하고 있습니다. 노동 정책 분야에서는 산업재해 예방 및 임금체불 방지를 위한 법적 제도 개선을 추진 중입니다.", "influence_chains": [{"politician": "이재명", "policy": "한미 관세협상 후속 조치", "industry_or_sector": "반도체, 자동차", "companies": ["삼성전자", "SK그룹", "현대자동차", "LG그룹"], "impact_description": "한미 관세협상 후속 조치로 현대자동차그룹 관세 인하 및 SK그룹 반도체 관세 조정 등 정책 수혜", "evidence": [{"source_title": "kpmg.com", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGZb16uYV2oAqbDS-xaWK8NrSw_ZE_BpPfhb6i8x4cfYpvutPbXN2MmysXZc24iW47zgrFwFQ7BbWokNxz9x6cnhMbvA4eybfB3L4MQZKhc4nK-XUW8P22wuqKh7vbCO9zv9nRu8ZetkDphRgb4z3iq4AAJ39k4s7ZWf8eOXLYJBombvVVZga2Im1SkhQtKiaeTS5BMAkDAr7lL446kQS9E0eYsFypz3DS3Tbo9goqr82Ap_WXUL58q5Opjwt_5Zz_x57wJYIslnUgxxj-_JZ4W8js9ouiznGBwTyCSalzV_gyjr9DWpyZ6cC5FPt0OJAZJEB7UAvOZ4ilLXpDMi-hOtjiXgNQ--lsM0GpVdAxM48r6zdkOM6JKKGluRT5S6tm0nQ_e2c2UEpkpqWO4n4K486VuKqW5yCVHgqYsHcRRC8BgRRkWrIcJx1_XhPdlpCLbATzMJnxhVxSHMBCVeQ6jMmWN9Ujskb0Uk0rvH4Jljgim-Gu7-8IsrB-noD_fTK0--_LgWPSttvJj0SK9"}]}, {"politician": "이재명", "policy": "미래전략산업 ABCDE 정책", "industry_or_sector": "AI, 반도체, 방산우주항공", "companies": ["삼성전자", "SK하이닉스"], "impact_description": "AI, 바이오, 방산우주항공 등 첨단 산업 육성 정책으로 반도체 기업 수혜", "evidence": [{"source_title": "donga.com", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQFwUAblGDWOgZdrywva4D8r4QBvYkXFagxZWww198iMHadBnjtTqLy75_v6xMwUsc2nmRRVxjbqZH2631QJlaH2CH1W-uK-yyrO9TbyG5Ceg8HVNEzEgo4rEdCJQ_OztBq0dyMVYhFrtJRrnvBBYtjnt5GOIiWJRJytDDaHZBqY="}]}, {"politician": "이재명", "policy": "UAE와의 경제 협력 강화", "industry_or_sector": "방산우주항공", "companies": ["현대자동차그룹"], "impact_description": "UAE와 200억 달러 규모 AI, 방산, 원자력 협력 체결로 방산우주항공 분야 기업 수혜", "evidence": [{"source_title": "n.news.naver.com", "url": "https://n.news.naver.com/mnews/article/277/0005683807?sid=100"}]}, {"politician": "이재명", "policy": "지역 전략 산업 육성", "industry_or_sector": "반도체, AI, 미래 모빌리티", "companies": ["서울시장 오세훈", "부산시장 박형준", "경기도지사 김동연"], "impact_description": "지역 전략 산업(반도체, AI, 미래 모빌리티) 육성 강조로 지역 경제 활성화", "evidence": [{"source_title": "polinews.co.kr", "url": "https://www.polinews.co.kr/news/articleView.html?idxno=714757"}]}], "notes": ""}} +{"query": "문재인", "gold_report": {"report_title": "문재인 전 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2017–2022", "question_answer": "문재인 전 대통령은 탈원전과 그린뉴딜 정책을 추진하여 태양광·풍력 등 신재생에너지 산업을 육성했고, 4대강 보 철거와 생태 복원 정책으로 환경 관련 기업에 새로운 기회를 제공했습니다. 또한 남북 화해 기조를 바탕으로 개성공단 재가동을 모색하며 남북경협 관련 기업들의 주가에 영향을 미쳤으며, 수소경제 등 미래 산업 투자로 현대모비스 등 친환경차 부품 기업이 성장하는 계기를 마련했습니다.", "influence_chains": [{"politician": "문재인", "policy": "탈원전 및 재생에너지 정책", "industry_or_sector": "에너지/태양광", "companies": ["한화솔루션", "OCI"], "impact_description": "문재인 정부는 신규 원전 건설 백지화와 신재생에너지 비중 확대를 추진하여 태양광 등 친환경 에너지 업계를 부양했습니다. 이로 인해 국내 태양광 대표 기업 한화솔루션과 폴리실리콘 생산업체 OCI 등이 정부 보조금과 시장 확대의 혜택을 입어 실적이 개선되고 주가가 상승했습니다:contentReference[oaicite:11]{index=11}:contentReference[oaicite:12]{index=12}. 반면 원전 관련 산업은 위축되었으나 재생에너지 분야는 정책 지원에 힘입어 성장 기반을 마련했습니다.", "evidence": [{"source_title": "문재인 정책株, 4대강 복원·개성공단 관련주 급등...테마주는 약세", "url": "https://www.thevaluenews.co.kr/news/6918"}]}, {"politician": "문재인", "policy": "4대강 복원 정책", "industry_or_sector": "환경/건설", "companies": ["자연과환경", "이화공영"], "impact_description": "4대강 사업으로 건설된 보의 생태계 영향 조사와 개방을 추진하면서, 하천 환경 복원 사업에 참여하는 자연과환경, 이화공영 등의 환경 토목 업체들이 사업 기회를 얻었습니다. 문재인 당선 직후 이러한 4대강 복원 관련주들은 강세를 보였으며:contentReference[oaicite:13]{index=13}:contentReference[oaicite:14]{index=14}, 향후 준설 및 생태 복원 공사 수주에 대한 기대감으로 주가가 크게 상승했습니다.", "evidence": [{"source_title": "문재인 정책株, 4대강 복원·개성공단 관련주 급등...테마주는 약세", "url": "https://www.thevaluenews.co.kr/news/6918"}]}, {"politician": "문재인", "policy": "남북 경협 및 개성공단 정책", "industry_or_sector": "남북경협/제조", "companies": ["신원", "좋은사람들"], "impact_description": "문재인 정부의 남북 화해 기조로 개성공단 재가동과 남북 경협 확대에 대한 기대가 높아지면서, 개성공단에 생산기지를 둔 의류업체 신원과 속옷 제조사 좋은사람들 등이 큰 폭의 주가 상승을 보였습니다:contentReference[oaicite:15]{index=15}:contentReference[oaicite:16]{index=16}. 이는 남북 경제협력 재개 가능성에 따른 수혜 전망으로, 해당 기업들은 일시적으로 높은 시장 관심을 받았습니다.", "evidence": [{"source_title": "문재인 정책株, 4대강 복원·개성공단 관련주 급등...테마주는 약세", "url": "https://www.thevaluenews.co.kr/news/6918"}]}, {"politician": "문재인", "policy": "수소경제 및 혁신산업 육성", "industry_or_sector": "미래차/배터리", "companies": ["현대모비스", "LG화학"], "impact_description": "문재인 정부는 수소경제 활성화와 전기차 지원 등 혁신성장 정책을 추진하여 현대모비스 등 수소차 부품기업과 LG화학 배터리사업부(현 LG에너지솔루션) 등이 전략적 혜택을 보았습니다:contentReference[oaicite:17]{index=17}:contentReference[oaicite:18]{index=18}. 현대모비스는 수소차 핵심부품 생산라인 증설로 수혜주로 부각되었고, LG화학도 전기차 배터리 투자 확대 정책에 힘입어 글로벌 점유율 상승을 이뤘습니다.", "evidence": [{"source_title": "문재인 대통령 신년회견 수혜株는…수소경제·스마트공장·인터넷銀", "url": "https://www.hankyung.com/article/2019011165741"}]}], "notes": "본 분석은 2017년부터 2022년까지의 문재인 정부 기간을 대상으로 하였으며, 정책 발표 직후 관련 기업들의 주가 동향과 산업계 반응을 토대로 작성되었습니다. 실제 정책 효과와 기업 실적 사이에는 시차가 있을 수 있으며, 일부 평가는 예상에 기반하고 있습니다."}, "model_response": {"report_title": "문재인 정부의 정치·경제·기업 연결성 분석", "time_range": "2017–2022", "question_answer": "문재인 대통령은 2017–2022년 재임 기간 동안 소득 주도 성장, 재벌 개혁, 그린 뉴딜, 제4차 산업혁명 등 주요 정책을 추진하며 삼성, SK, 현대자동차, POSCO 등 주요 기업 및 산업과 밀접한 정치·경제적 네트워크를 형성했습니다. 특히 반도체, 배터리, 전기차 분야에서 SK Hynix, SK Innovation, 삼성, 현대자동차 등이 정책 수혜를 받았으며, 재벌 개혁 정책은 삼성의 지배구조 개선에 영향을 미쳤습니다. 그린 뉴딜 정책은 SK Innovation, 이엔드디(E&DE) 등의 재생에너지 기업에 긍정적 영향을 주었습니다.", "influence_chains": [{"politician": "문재인", "policy": "제4차 산업혁명 정책 및 규제 샌드박스 도입", "industry_or_sector": "반도체 산업", "companies": ["Samsung Electronics", "SK Hynix"], "impact_description": "반도체 수출 성장과 수출 주도 경제 성장에 기여", "evidence": [{"source_title": "keia.org", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQE4Ul9NUYL0kzAEa2jO6Of-oLsMYuQYLMALPM-Y9Ei96QkazrErP4gDMR0GdzIKIBTKE6n3pzNNQlCSyyAGfCyxMJWx-8dCQrpmbIeKbHdjNBBFYS9B2krV2dLp4v67LXrNUtNmmblJVN-WWdrMjWdIzN-aOJP-n4KC_DC6YftHdYD3ADr0YV8="}]}, {"politician": "문재인", "policy": "그린 뉴딜 및 탄소 중립 정책", "industry_or_sector": "친환경 에너지 및 전기차 산업", "companies": ["SK Innovation", "SK Hynix"], "impact_description": "그린 뉴딜 정책과 탄소 중립 목표에 부합하는 배터리 및 반도체 생산 확대", "evidence": [{"source_title": "keia.org", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQE4Ul9NUYL0kzAEa2jO6Of-oLsMYuQYLMALPM-Y9Ei96QkazrErP4gDMR0GdzIKIBTKE6n3pzNNQlCSyyAGfCyxMJWx-8dCQrpmbIeKbHdjNBBFYS9B2krV2dLp4v67LXrNUtNmmblJVN-WWdrMjWdIzN-aOJP-n4KC_DC6YftHdYD3ADr0YV8="}, {"source_title": "ekn.kr", "url": "https://www.ekn.kr/web/view.php?key=20251029022481347"}]}, {"politician": "문재인", "policy": "재벌 개혁 및 공정경제 정책", "industry_or_sector": "대기업 및 재벌 개혁", "companies": ["Samsung Electronics"], "impact_description": "재벌 개혁 정책과 지배구조 개선 압력 증가", "evidence": [{"source_title": "keia.org", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQE4Ul9NUYL0kzAEa2jO6Of-oLsMYuQYLMALPM-Y9Ei96QkazrErP4gDMR0GdzIKIBTKE6n3pzNNQlCSyyAGfCyxMJWx-8dCQrpmbIeKbHdjNBBFYS9B2krV2dLp4v67LXrNUtNmmblJVN-WWdrMjWdIzN-aOJP-n4KC_DC6YftHdYD3ADr0YV8="}]}, {"politician": "문재인", "policy": "전기차 인프라 및 수소경제 정책", "industry_or_sector": "자동차 및 수소 에너지 산업", "companies": ["Hyundai Motor Group"], "impact_description": "전기차 인프라 정책과 연계된 수소차량 개발 확대", "evidence": [{"source_title": "keia.org", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQE4Ul9NUYL0kzAEa2jO6Of-oLsMYuQYLMALPM-Y9Ei96QkazrErP4gDMR0GdzIKIBTKE6n3pzNNQlCSyyAGfCyxMJWx-8dCQrpmbIeKbHdjNBBFYS9B2krV2dLp4v67LXrNUtNmmblJVN-WWdrMjWdIzN-aOJP-n4KC_DC6YftHdYD3ADr0YV8="}, {"source_title": "pennmike.com", "url": "https://www.pennmike.com/news/articleView.html?idxno=104418"}]}, {"politician": "문재인", "policy": "탄소 중립 및 그린 스틸 정책", "industry_or_sector": "철강 및 녹색 산업", "companies": ["POSCO"], "impact_description": "탄소 중립 이니셔티브에 참여했으나 직접적인 정책 수혜 증거 부족", "evidence": [{"source_title": "nbntv.co.kr", "url": "https://www.nbntv.co.kr/news/articleView.html?idxno=970831"}]}, {"politician": "문재인", "policy": "그린 뉴딜 정책", "industry_or_sector": "재생에너지 및 환경 기술", "companies": ["이엔드디 (E&DE)"], "impact_description": "그린 뉴딜 정책 하에서 주가 급등", "evidence": [{"source_title": "ekn.kr", "url": "https://www.ekn.kr/web/view.php?key=20251029022481347"}]}], "notes": "문재인 대통령의 정책은 주로 대기업 및 특정 산업에 집중된 영향을 미쳤으며, 특히 반도체, 배터리, 전기차 분야에서 SK 그룹, 삼성, 현대자동차 등이 주요 수혜자로 나타남. 다만, 일부 기업(예: POSCO)의 경우 정책과의 직접적 연관성은 명확히 입증되지 않았음."}} +{"query": "홍준표", "gold_report": {"report_title": "홍준표 대구시장의 정치·경제 영향력 네트워크 분석", "time_range": "2025년 11월 24일 기준", "question_answer": "홍준표 대구시장은 대구경북 통합신공항 건설 추진을 통해 대우건설, 화성산업 등 지역 건설사에 대규모 사업 참여 기회를 제공하고 있습니다. 또한 지방정부 차원의 규제 완화와 기업 유치 노력을 통해 대구 지역 산업단지의 투자 활성화를 도모하고 있습니다. 다만 강성 발언과 중앙정치와의 마찰로 정책 추진 과정에서 잡음이 발생하기도 합니다.", "influence_chains": [{"politician": "홍준표", "policy": "대구경북 통합신공항 건설 추진", "industry_or_sector": "건설/지역개발", "companies": ["대우건설", "서한"], "impact_description": "홍준표 시장이 주도하는 대구경북 신공항 건설 사업으로 대우건설을 비롯한 지역 건설사 서한 등이 특수목적법인(SPC) 구성과 사업계획 수립 용역에 참여하고 있습니다:contentReference[oaicite:28]{index=28}. 약 11조 원 규모로 추정되는 공항 및 신도시 개발 사업은 해당 건설사들에게 막대한 수주 기회를 제공해 지역 건설경기를 부양할 것으로 기대됩니다.", "evidence": [{"source_title": "대우건설, TK신공항 건설 주관사 유력…'지역 3社' 화성·서한 - 경북일보", "url": "https://www.kyongbuk.co.kr/news/articleView.html?idxno=4012068"}]}, {"politician": "홍준표", "policy": "대구 산단 규제 완화 및 기업 유치", "industry_or_sector": "지역산업/제조업", "companies": ["삼성메디슨", "홈센타홀딩스"], "impact_description": "홍준표 시장은 대구 국가산업단지의 규제를 완화하고 투자 인센티브를 제공하여 대기업과 중견기업을 대구로 유치하고 있습니다. 최근 삼성메디슨의 의료산업 투자 유치로 의료기기 클러스터에 활력이 돌았고, 지역 건축자재 기업 홈센타홀딩스는 신공항 수혜 기대와 산업단지 투자 확대로 성장 동력을 얻고 있습니다. 이러한 기업 유치 노력은 지역 경제 기반을 강화하는 데 기여하고 있습니다.", "evidence": [{"source_title": "홈센타홀딩스와 홍준표 테마주: 대구 신공항과 지역 건축 자재 강자의 ...", "url": "https://redbluepurple.tistory.com/entry/%ED%99%8D%EC%A4%80%ED%8F%AC-%ED%85%8C%EB%A7%88%EC%A3%BC"}]}], "notes": "홍준표 시장에 대한 분석은 2025년 말 현재 진행 중인 지역 개발 프로젝트에 초점을 맞추었으며, 중앙정부 지원 여부와 정치적 변수에 따라 사업 추진 속도가 달라질 수 있습니다. 일부 기업 언급은 향후 수혜 전망에 근거한 것입니다."}, "model_response": {"report_title": "홍준표 의원의 정책·산업·기업 연결성 분석", "time_range": "2011–2025", "question_answer": "홍준표 의원은 복지 정책, 국가 안보, 경제 성장 전략 등 주요 정책을 주도하며 건설, 조선, 신산업, 통신·유통 분야와 연결되었습니다. 대구시장 재임 시 8조 원 규모의 투자를 유치했으며, 케이엔암그룹으로부터 불법 정치자금을 수수한 혐의로 유죄 판결을 받았습니다. KT, SK, CJ 등 대기업과의 로비 의혹과 신천지 교회 등 종교 단체와의 정치적 연계도 제기되었으나, 직접적 증거 부족으로 간접적 추론에 의존합니다.", "influence_chains": [{"politician": "홍준표", "policy": "정치자금 규제", "industry_or_sector": "건설업", "companies": ["Keangnam Enterprises"], "impact_description": "홍준표 의원은 2011년 케이엔암그룹 성완종 회장으로부터 1억 원의 불법 정치자금을 수수한 혐의로 유죄 판결을 받았으나, 본인은 무죄를 주장하며 항소했습니다.", "evidence": [{"source_title": "koreaherald.com", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEf0kvvDL3GYR6XL8jldVh01y7M-D5wKTXG05Tlro6hbVkMVD4D7opvwHD2w3yCaob0OYryipOzL5oglwKd0Lkr22GA75fneBiWROjR3yApa9e5gVCmtGbD5tvVo-VYyoFHfKFqKoEQ"}]}, {"politician": "홍준표", "policy": "개인적 연결", "industry_or_sector": "조선업", "companies": ["Hyundai Shipyard"], "impact_description": "홍준표 의원의 아버지가 현대조선소에서 근무한 경력이 있어 개인적 연결고리가 존재합니다.", "evidence": [{"source_title": "koreaherald.com", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEf0kvvDL3GYR6XL8jldVh01y7M-D5wKTXG05Tlro6hbVkMVD4D7opvwHD2w3yCaob0OYryipOzL5oglwKd0Lkr22GA75fneBiWROjR3yApa9e5gVCmtGbD5tvVo-VYyoFHfKFqKoEQ"}]}, {"politician": "홍준표", "policy": "대구 산업구조 개편", "industry_or_sector": "신산업", "companies": ["33개 로봇·반도체·헬스케어 기업"], "impact_description": "대구시장 재임 시절 5대 신산업(로봇, 반도체, 모빌리티, 헬스케어, ABB) 육성을 통해 2년간 8조 원 규모의 투자를 유치했습니다.", "evidence": [{"source_title": "koreaherald.com", "url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEf0kvvDL3GYR6XL8jldVh01y7M-D5wKTXG05Tlro6hbVkMVD4D7opvwHD2w3yCaob0OYryipOzL5oglwKd0Lkr22GA75fneBiWROjR3yApa9e5gVCmtGbD5tvVo-VYyoFHfKFqKoEQ"}]}, {"politician": "홍준표", "policy": "세금 감사 로비", "industry_or_sector": "통신·유통", "companies": ["KT", "SK", "CJ"], "impact_description": "전성배(별칭 '건진법사')가 KT의 2022년 CEO 승계 과정에서 수십억 원의 뇌물을 요구한 혐의로 조사받았으며, 홍준표 의원이 관련 의혹을 제기하며 수사가 확대되었습니다.", "evidence": [{"source_title": "safetimes.co.kr", "url": "https://www.safetimes.co.kr/news/articleView.html?idxno=222111"}]}, {"politician": "홍준표", "policy": "정치적 지지 동원", "industry_or_sector": "종교 단체", "companies": ["신천지 교회", "통일교"], "impact_description": "신천지 교회 신도 10만 명을 윤석열 대통령 후보 지지자로 동원한 의혹과 통일교와의 역사적 연결 의혹이 제기되었으나, 직접적인 금전 거래나 정책 교환 증거는 부족합니다.", "evidence": [{"source_title": "ilyosisa.co.kr", "url": "https://ilyosisa.co.kr/mobile/article.html?no=250957"}, {"source_title": "womaneconomy.co.kr", "url": "https://www.womaneconomy.co.kr/news/articleView.html?idxno=239853"}]}], "notes": "케이엔암 사건 외에 지속적인 기업 연계나 직접적 로비 네트워크에 대한 광범위한 문서는 부족하며, 신천지/통일교 관련 의혹은 구체적 증거 미비로 간접적 추론에 의존합니다."}} +{"query": "Donald Trump", "gold_report": {"report_title": "Donald Trump 전 미국 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2017–2021", "question_answer": "도널드 트럼프 전 대통령은 대규모 감세와 규제 완화 정책으로 Apple, JPMorgan Chase 등 미국 대기업들의 순이익 증가와 투자 여력을 확대시켰습니다. 한편 미국 우선주의에 입각한 관세 부과와 무역전쟁을 통해 철강·에너지 업계를 보호하여 U.S. Steel 등의 국내 기업이 수혜를 입었지만, 글로벌 공급망 긴장으로 일부 제조업에는 불확실성을 초래했습니다. 전반적으로 친기업 기조로 단기 주가 상승과 고용 호조를 이끌었으나 무역갈등의 부작용도 야기되었습니다.", "influence_chains": [{"politician": "Donald Trump", "policy": "2017년 감세정책", "industry_or_sector": "대기업/금융", "companies": ["Apple", "JPMorgan Chase"], "impact_description": "트럼프 행정부는 2017년 말 법인세 최고세율을 35%에서 21%로 대폭 인하하는 감세법안을 통과시켰습니다. 이로 인해 Apple은 해외유보금 약 2500억 달러를 본국으로 송환하여 주주배당과 자사주 매입을 확대했고, JPMorgan Chase 등 대형 은행들은 세금 부담 감소로 순이익이 크게 증가하여 신규 대출과 인력 채용을 늘렸습니다. 감세정책은 월가와 기업들의 투자 심리를 자극하며 증시 활황으로 이어졌습니다.", "evidence": [{"source_title": "Apple, 세제혜택으로 100조원 규모 자사주 매입 발표", "url": "https://www.cnbc.com/2018/05/01/apple-will-buy-back-100-billion-in-stock-and-boost-dividend.html"}, {"source_title": "미국 은행들, 법인세 인하로 수익 급증", "url": "https://www.wsj.com/articles/tax-law-delivers-a-million-dollar-boost-to-big-banks-ceos-11550527000"}]}, {"politician": "Donald Trump", "policy": "무역전쟁 및 관세 정책", "industry_or_sector": "철강/제조", "companies": ["U.S. Steel", "Harley-Davidson"], "impact_description": "트럼프 전 대통령은 2018년부터 중국을 비롯한 교역국에 대한 관세부과로 무역전쟁을 전개했습니다. 특히 수입 철강에 25% 관세를 매겨 U.S. Steel 등 미 철강사들이 내수 가격 상승으로 단기적 호황을 누렸습니다. 그러나 중국의 보복관세로 모터사이클 제조사 할리데이비슨은 유럽 판매가격 급등으로 생산 일부를 해외로 이전하는 등 어려움을 겪었습니다. 보호무역 조치는 일부 제조업에 이익이 되었지만 다른 기업에는 비용 부담과 시장 축소를 초래했습니다.", "evidence": [{"source_title": "미국 철강업, 관세 덕에 반짝 호황", "url": "https://www.bloomberg.com/news/articles/2018-08-01/u-s-steel-s-profit-swells-as-trump-tariffs-add-momentum-to-rally"}, {"source_title": "할리데이비슨, EU 관세에 일부 생산 해외 이전 결정", "url": "https://www.bbc.com/news/business-44595070"}]}, {"politician": "Donald Trump", "policy": "에너지산업 지원 정책", "industry_or_sector": "석유/가스", "companies": ["ExxonMobil", "Chevron"], "impact_description": "트럼프 정부는 파리기후협약 탈퇴와 환경규제 완화로 화석연료 산업을 적극 지원했습니다. 연방 토지의 원유 시추 제한을 풀고 송유관 건설을 승인하여 ExxonMobil과 Chevron 같은 석유 대기업이 신규 유전 개발과 생산량 증대에 나설 수 있었습니다. 이로 인해 미국은 2018년 세계 1위 산유국이 되었고 관련 기업들의 매출과 이익이 증가했습니다. 다만 탄소배출 증가에 따른 국제사회 비판도 함께 야기되었습니다.", "evidence": [{"source_title": "미국, 2018년 세계 최대 산유국 등극…셰일 혁명과 트럼프 정책 영향", "url": "https://www.eia.gov/todayinenergy/detail.php?id=37053"}, {"source_title": "트럼프, 키스톤XL 송유관 부활…에너지 업계 환영", "url": "https://www.reuters.com/article/us-usa-pipeline-keystone-idUSKBN1582OH"}]}], "notes": "2017–2021년 트럼프 행정부 시기의 경제정책 영향을 정리했습니다. 친기업 조치로 단기적인 주가 및 고용 지표 개선이 있었지만, 무역갈등 등 장기적 파장도 초래하여 평가가 엇갈립니다. 언급된 사례들은 대표적인 긍정·부정 효과를 보여주는 기업들입니다."}, "model_response": {"report_title": "도널드 트럼프의 정책-산업-기업 영향력 네트워크 분석 (2024-2025)", "time_range": "2024–2025", "question_answer": "도널드 트럼프는 2024-2025년 에너지, 제조업, 부동산 분야에서 주요 정책 이니셔티브를 추진하며 관련 기업 및 산업과의 긴밀한 관계를 유지하고 있습니다. 'American Energy Dominance Act'를 통한 화석 연료 산업 지원, 기업 감세 정책, 부동산 규제 완화 등이 핵심이며, American Petroleum Institute, U.S. Chamber of Commerce, Trump Organization, Energy Transfer Partners, Hines 등이 주요 이해관계자로 확인되었습니다. 다만 정책 수혜와 트럼프 네트워크 간 직접적 연결성은 추가 검증이 필요합니다.", "influence_chains": [{"politician": "Donald Trump", "policy": "American Energy Dominance Act", "industry_or_sector": "에너지 (석유/가스)", "companies": ["American Petroleum Institute (API)", "Energy Transfer Partners"], "impact_description": "트럼프의 'American Energy Dominance Act' 추진으로 API의 로비 활동이 강화되었으며, Energy Transfer Partners는 캠페인 기부금을 통해 정책 영향력을 확보한 것으로 분석됨. 셰일 산업 생산량 18% 증가와 재생에너지 보조금 감소가 확인됨.", "evidence": [{"source_title": "2024-2025 U.S. Energy Policy Report", "url": "https://example.com/energy-policy-2025"}, {"source_title": "Campaign Finance Disclosure: Trump 2024", "url": "https://example.com/trump-campaign-finance"}]}, {"politician": "Donald Trump", "policy": "2024 기업 감세 및 관세 개정", "industry_or_sector": "제조업 및 금융", "companies": ["U.S. Chamber of Commerce", "VistaEquity Partners"], "impact_description": "기업 감세 정책과 Section 232 관세 개정으로 U.S. Chamber of Commerce의 로비 성과가 나타났으며, VistaEquity Partners는 트럼프와의 자문 계약을 통해 정책 혜택을 받은 것으로 추정됨.", "evidence": [{"source_title": "2025 Corporate Tax Reform Analysis", "url": "https://example.com/tax-reform-2025"}, {"source_title": "Trump Organization Holdings Report", "url": "https://example.com/trump-organization-2025"}]}, {"politician": "Donald Trump", "policy": "부동산 개발 규제 완화 정책", "industry_or_sector": "부동산", "companies": ["Trump Organization", "Hines"], "impact_description": "부동산 개발 규제 완화로 Trump Organization과 Hines의 프로젝트 확장이 가속화되었으며, Hines의 대규모 기부금이 정책 연계성을 시사함.", "evidence": [{"source_title": "Real Estate Development Trends 2025", "url": "https://example.com/real-estate-2025"}, {"source_title": "Trump Campaign Donors Database", "url": "https://example.com/trump-donors-2025"}]}], "notes": "특정 정책과 기업 간 직접적 금융 흐름은 추가 조사 필요. 로비 결과와 트럼프 네트워크 수혜자 간 인과관계 입증 불충분."}} diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/dev_test/influence_model_responses_2.jsonl b/usecase/solar-political-influence-analyzer/src/ai-engine/dev_test/influence_model_responses_2.jsonl new file mode 100644 index 0000000..e60e0ba --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/dev_test/influence_model_responses_2.jsonl @@ -0,0 +1,19 @@ +{"query": "윤석열", "gold_report": {"report_title": "윤석열 전 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2025년 11월 24일 기준", "question_answer": "윤석열 전 대통령은 원전 확대 정책으로 두산에너빌리티와 한국전력 등 원전 관련 기업에 수혜를 주었으며, 동시에 원전 중심 기조는 한화솔루션의 태양광 사업에 부정적 영향을 미쳤습니다. 또한 국방비 증액과 기술 육성 정책으로 방산 및 첨단산업 기업의 성장에 기여했으며, 미국·일본과의 동맹 강화 및 중동 경제협력 확대를 통해 국제적 영향력을 도모했습니다.", "influence_chains": [{"politician": "윤석열", "policy": "원전 확대 정책", "industry_or_sector": "에너지/원전", "companies": ["두산에너빌리티"], "impact_description": "윤석열 정부가 신한울 3·4호기 건설 등 원전 사업을 재개하면서 두산에너빌리티가 원전 주기기 제작 수주와 SMR 기술 개발 지원을 받는 등 직접적 수혜를 입었습니다:contentReference[oaicite:0]{index=0}. 글로벌 에너지 위기 속 원전 수요 증가로 해당 기업의 재무 실적도 개선되었습니다.", "evidence": [{"source_title": "윤석열 정책 수혜주 2편] 전 두산중공업(현 두산에너빌리티), 친원전 ...", "url": "https://contents.premium.naver.com/richplatform/therichplatform/contents/220416185027884GB"}]}, {"politician": "윤석열", "policy": "원전 중심 에너지정책", "industry_or_sector": "신재생에너지/태양광", "companies": ["한화솔루션"], "impact_description": "원전 위주의 에너지 정책으로 국내 태양광 수요가 위축되면서 한화솔루션의 태양광 사업 실적이 부진해졌습니다. 한편 미국의 IRA 정책 등에 힘입어 한화솔루션은 베트남·미국에 투자하며 해외 시장을 공략했고, 국방 분야 SMR 추진으로 일부 수혜를 보았습니다:contentReference[oaicite:1]{index=1}:contentReference[oaicite:2]{index=2}.", "evidence": [{"source_title": "엇갈린 K-태양광 실적⋯OCI 웃고 한화 울고", "url": "https://www.etoday.co.kr/news/view/2524466"}, {"source_title": "[이재명 시대, 이 기업을 주목하라]⑩ 한화솔루션ㆍOCI홀딩스", "url": "https://www.dnews.co.kr/uhtml/view.jsp?idxno=202507031419058310351"}]}, {"politician": "윤석열", "policy": "국방·기술 육성 정책", "industry_or_sector": "방위산업/첨단기술", "companies": ["한화에어로스페이스"], "impact_description": "윤석열 정부는 국방예산 증액과 12대 국가전략기술 육성을 추진하여 한화에어로스페이스 등 방위산업 기업의 수주 확대와 R&D 투자를 뒷받침했습니다:contentReference[oaicite:3]{index=3}:contentReference[oaicite:4]{index=4}. 이를 통해 국내 방산업체들은 첨단 무기 개발과 수출에 탄력을 받았습니다.", "evidence": [{"source_title": "尹 취임 2년차, 정책수혜株가 뜬다…방산·원전·콘텐츠株 주목 - 한국경제", "url": "https://www.hankyung.com/economy/article/2023050451426"}]}], "notes": "모든 정보는 2025년 11월 24일 기준이며, 윤석열 전 대통령의 정책들은 현재 이재명 정부에서 수정 또는 재평가되고 있습니다. 일부 데이터는 언론 보도와 간접 추론을 기반으로 합니다."}, "model_response": {"report_title": "윤석열 대통령의 정책 및 영향력 네트워크 분석", "time_range": "2025-12-03 기준", "question_answer": "제공된 자료만으로는 질문에 대한 정확한 답을 확인하기 어렵다.", "influence_chains": [], "notes": ""}} +{"query": "이재명", "gold_report": {"report_title": "이재명 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2025년 11월 24일 기준", "question_answer": "이재명 대통령은 AI와 신재생에너지 육성 정책을 통해 삼성전자, 한화솔루션 등 미래 산업 기업들의 성장동력을 마련했으며, 남북 관계 개선 구상을 바탕으로 개성공단 입주 기업과 대북 사업 분야에도 긍정적 기대를 불러일으켰습니다. 동시에 지역화폐 지원 등 중소상공인 활성화 정책으로 핀테크 기업들의 수혜를 도모하고 있습니다.", "influence_chains": [{"politician": "이재명", "policy": "AI 산업 육성 정책", "industry_or_sector": "ICT/인공지능", "companies": ["네이버", "SK텔레콤"], "impact_description": "이재명 정부는 'AI 3대 강국 도약'을 기치로 AI 연구개발을 적극 지원하고 있습니다. 그 결과 네이버, SK텔레콤 등 국내 AI 선도 기업들이 정부 주도 ‘국가대표 AI 기업’으로 선정되어 AI 모델 개발 프로젝트에 참여하며 주가와 투자심리가 개선되었습니다:contentReference[oaicite:5]{index=5}:contentReference[oaicite:6]{index=6}. 정부의 지속적인 지원으로 해당 기업들은 AI 인프라 확대와 글로벌 경쟁력 강화의 혜택을 보고 있습니다.", "evidence": [{"source_title": "이재명정부 5년 청사진 곧 등장…장밋빛전망 가득한 ‘3대 정책 수혜주’", "url": "https://www.ledesk.co.kr/view.php?uid=13714"}]}, {"politician": "이재명", "policy": "신재생에너지 확대 정책", "industry_or_sector": "에너지/신재생", "companies": ["한화솔루션", "씨에스윈드"], "impact_description": "탄소중립 실현과 에너지 전환 가속화 목표 아래 이재명 정부는 풍력·태양광 산업 육성에 박차를 가하고 있습니다. 이에 따라 국내 1위 태양광 기업 한화솔루션과 풍력 설비 업체 씨에스윈드 등이 정책적 지원으로 실적 개선과 성장성 확보에 긍정적 영향을 받고 있습니다:contentReference[oaicite:7]{index=7}:contentReference[oaicite:8]{index=8}. 또한 전력 인프라 분야 기업들(HD현대일렉트릭 등)도 재생에너지 확대에 따른 투자 확대 수혜주로 부각되었습니다.", "evidence": [{"source_title": "이재명정부 5년 청사진 곧 등장…장밋빛전망 가득한 ‘3대 정책 수혜주’", "url": "https://www.ledesk.co.kr/view.php?uid=13714"}]}, {"politician": "이재명", "policy": "남북 경협 재개 구상", "industry_or_sector": "남북경협/개성공단", "companies": ["좋은사람들", "아난티"], "impact_description": "이재명 대통령이 남북 대화 재개와 접경지역 개발 의지를 밝힘에 따라 개성공단 재가동 등 남북경협 기대감이 높아졌습니다. 이에 개성공단에 공장을 둔 속옷 업체 좋은사람들, 금강산 관광 관련 리조트 사업을 했던 아난티 등의 주가가 급등하는 등 직접적 수혜 기대가 나타났습니다:contentReference[oaicite:9]{index=9}:contentReference[oaicite:10]{index=10}. 정부의 대북 정책 기조 변화로 이들 남북경협 테마 기업들은 향후 장기적 성과에 대한 기대를 모으고 있습니다.", "evidence": [{"source_title": "문재인 정책株, 4대강 복원·개성공단 관련주 급등...테마주는 약세", "url": "https://www.thevaluenews.co.kr/news/6918"}, {"source_title": "남북관계 개선에 남북경협주 들썩", "url": "https://www.ledesk.co.kr/view.php?uid=13714"}]}], "notes": "이재명 대통령의 영향력 분석은 2025년 11월 기준이며, 증권가의 기대 심리와 정책 발표에 따른 시장 반응을 기반으로 작성되었습니다. 일부 연관 기업의 실적 개선은 예상에 따른 것이며 실제 정책 효과는 향후 평가가 필요합니다."}, "model_response": {"report_title": "이재명의 정책-산업-기업 영향력 분석 보고서", "time_range": "2021-07-05 ~ 2025-06-09", "question_answer": "이재명 경기도지사는 재난기본소득, 반도체/바이오 클러스터, RE100 정책 등을 통해 소상공인, 반도체/바이오/AI, 재생에너지 산업에 영향을 미쳤으며, 주택 정책으로 KD건설 주가 변동을 유발한 것으로 확인됩니다. 다만 일부 연결은 간접적이거나 명시적 증거가 부족합니다.", "influence_chains": [{"politician": "이재명", "policy": "재난기본소득 & 지역화폐 정책", "industry_or_sector": "소상공인/소매업", "companies": [], "impact_description": "재난기본소득 및 지역화폐 정책으로 지역경제 회복 및 소상공인 활성화 성과 달성", "evidence": [{"source_title": "이재명 경기도지사 주요 성과 및 정책", "url": "http://www.idojung.com/news/articleView.html?idxno=30264"}]}, {"politician": "이재명", "policy": "반도체/바이오 클러스터 정책", "industry_or_sector": "반도체/바이오/AI", "companies": [], "impact_description": "용인 반도체 클러스터 유치 및 수원-광교-시흥 바이오 클러스터 조성으로 반도체/바이오/AI 산업 육성", "evidence": [{"source_title": "이재명 경기도지사 주요 성과 및 정책", "url": "http://www.idojung.com/news/articleView.html?idxno=30264"}, {"source_title": "경기도, 첨단 기술 산업 전환 중심지로 도약", "url": "https://www.kyeonggi.com/article/20250609580377"}, {"source_title": "경기도, ‘미래성장 3대 프로젝트’ 발표", "url": "https://www.sedaily.com/NewsView/2H1KP2TPZR"}]}, {"politician": "이재명", "policy": "RE100 및 기후테크 정책", "industry_or_sector": "재생에너지/기후테크", "companies": [], "impact_description": "경기도 기후펀드 및 RE100 전환 정책으로 재생에너지/기후테크 산업 지원", "evidence": [{"source_title": "이재명 경기도지사 주요 성과 및 정책", "url": "http://www.idojung.com/news/articleView.html?idxno=30264"}, {"source_title": "경기도, ‘미래성장 3대 프로젝트’ 발표", "url": "https://www.sedaily.com/NewsView/2H1KP2TPZR"}]}, {"politician": "이재명", "policy": "주택 정책", "industry_or_sector": "주택 건설", "companies": ["KD건설"], "impact_description": "기본주택 공급 정책 발표 후 KD건설 주가 급등 (단, 기업 재무 상태 및 투자 리스크 존재)", "evidence": [{"source_title": "KD, 이재명 수혜주·유증 기대감에 70% 급등···투자리스크는 확대?", "url": "https://www.newsway.co.kr/news/view?ud=2021070514225340988"}]}, {"politician": "이재명", "policy": "평화경제 시범지구 및 지역 개발", "industry_or_sector": "철강/인프라", "companies": [], "impact_description": "평화경제 시범지구 조성으로 북한 협력 산업(철강, 인프라) 간접 영향 추정", "evidence": [{"source_title": "728조 예산안 합의 통과… ‘이재명표 예산’은 그대로", "url": "https://n.news.naver.com/mnews/article/023/0003944505?sid=100"}]}], "notes": ""}} +{"query": "문재인", "gold_report": {"report_title": "문재인 전 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2017–2022", "question_answer": "문재인 전 대통령은 탈원전과 그린뉴딜 정책을 추진하여 태양광·풍력 등 신재생에너지 산업을 육성했고, 4대강 보 철거와 생태 복원 정책으로 환경 관련 기업에 새로운 기회를 제공했습니다. 또한 남북 화해 기조를 바탕으로 개성공단 재가동을 모색하며 남북경협 관련 기업들의 주가에 영향을 미쳤으며, 수소경제 등 미래 산업 투자로 현대모비스 등 친환경차 부품 기업이 성장하는 계기를 마련했습니다.", "influence_chains": [{"politician": "문재인", "policy": "탈원전 및 재생에너지 정책", "industry_or_sector": "에너지/태양광", "companies": ["한화솔루션", "OCI"], "impact_description": "문재인 정부는 신규 원전 건설 백지화와 신재생에너지 비중 확대를 추진하여 태양광 등 친환경 에너지 업계를 부양했습니다. 이로 인해 국내 태양광 대표 기업 한화솔루션과 폴리실리콘 생산업체 OCI 등이 정부 보조금과 시장 확대의 혜택을 입어 실적이 개선되고 주가가 상승했습니다:contentReference[oaicite:11]{index=11}:contentReference[oaicite:12]{index=12}. 반면 원전 관련 산업은 위축되었으나 재생에너지 분야는 정책 지원에 힘입어 성장 기반을 마련했습니다.", "evidence": [{"source_title": "문재인 정책株, 4대강 복원·개성공단 관련주 급등...테마주는 약세", "url": "https://www.thevaluenews.co.kr/news/6918"}]}, {"politician": "문재인", "policy": "4대강 복원 정책", "industry_or_sector": "환경/건설", "companies": ["자연과환경", "이화공영"], "impact_description": "4대강 사업으로 건설된 보의 생태계 영향 조사와 개방을 추진하면서, 하천 환경 복원 사업에 참여하는 자연과환경, 이화공영 등의 환경 토목 업체들이 사업 기회를 얻었습니다. 문재인 당선 직후 이러한 4대강 복원 관련주들은 강세를 보였으며:contentReference[oaicite:13]{index=13}:contentReference[oaicite:14]{index=14}, 향후 준설 및 생태 복원 공사 수주에 대한 기대감으로 주가가 크게 상승했습니다.", "evidence": [{"source_title": "문재인 정책株, 4대강 복원·개성공단 관련주 급등...테마주는 약세", "url": "https://www.thevaluenews.co.kr/news/6918"}]}, {"politician": "문재인", "policy": "남북 경협 및 개성공단 정책", "industry_or_sector": "남북경협/제조", "companies": ["신원", "좋은사람들"], "impact_description": "문재인 정부의 남북 화해 기조로 개성공단 재가동과 남북 경협 확대에 대한 기대가 높아지면서, 개성공단에 생산기지를 둔 의류업체 신원과 속옷 제조사 좋은사람들 등이 큰 폭의 주가 상승을 보였습니다:contentReference[oaicite:15]{index=15}:contentReference[oaicite:16]{index=16}. 이는 남북 경제협력 재개 가능성에 따른 수혜 전망으로, 해당 기업들은 일시적으로 높은 시장 관심을 받았습니다.", "evidence": [{"source_title": "문재인 정책株, 4대강 복원·개성공단 관련주 급등...테마주는 약세", "url": "https://www.thevaluenews.co.kr/news/6918"}]}, {"politician": "문재인", "policy": "수소경제 및 혁신산업 육성", "industry_or_sector": "미래차/배터리", "companies": ["현대모비스", "LG화학"], "impact_description": "문재인 정부는 수소경제 활성화와 전기차 지원 등 혁신성장 정책을 추진하여 현대모비스 등 수소차 부품기업과 LG화학 배터리사업부(현 LG에너지솔루션) 등이 전략적 혜택을 보았습니다:contentReference[oaicite:17]{index=17}:contentReference[oaicite:18]{index=18}. 현대모비스는 수소차 핵심부품 생산라인 증설로 수혜주로 부각되었고, LG화학도 전기차 배터리 투자 확대 정책에 힘입어 글로벌 점유율 상승을 이뤘습니다.", "evidence": [{"source_title": "문재인 대통령 신년회견 수혜株는…수소경제·스마트공장·인터넷銀", "url": "https://www.hankyung.com/article/2019011165741"}]}], "notes": "본 분석은 2017년부터 2022년까지의 문재인 정부 기간을 대상으로 하였으며, 정책 발표 직후 관련 기업들의 주가 동향과 산업계 반응을 토대로 작성되었습니다. 실제 정책 효과와 기업 실적 사이에는 시차가 있을 수 있으며, 일부 평가는 예상에 기반하고 있습니다."}, "model_response": {"report_title": "문재인 대통령의 정책 및 산업 영향 분석 보고서", "time_range": "2017–2022", "question_answer": "문재인 대통령은 탈원전 정책으로 원자력 산업(Youngjin Techwin, Kyungsung Electric)에 부정적 영향을 미쳤고, 최저임금 인상 정책으로 소상공인에게 부담을 주었으며, 바이오헬스 산업 지원 정책으로 삼성바이오로직스와 셀트리온과 같은 기업에 간접적 혜택을 제공했습니다. 그러나 특정 기업과의 개인적 또는 재정적 연계는 확인되지 않았습니다.", "influence_chains": [{"politician": "문재인", "policy": "탈원전 정책", "industry_or_sector": "원자력 산업", "companies": ["Youngjin Techwin", "Kyungsung Electric"], "impact_description": "Youngjin Techwin과 Kyungsung Electric은 원자력 장비 제조업체로, 문재인 정부의 탈원전 정책으로 인해 심각한 재정적 손실을 겪었습니다. Youngjin Techwin의 경우 매출이 30억 원에서 8억 원으로 급감했습니다.", "evidence": [{"source_title": "Were back to square one: Nuclear manufacturers fear return to phaseout policy", "url": "https://koreajoongangdaily.joins.com/news/2025-10-15/business/economy/Were-back-to-square-one-Nuclear-manufacturers-fear-return-to-phaseout-policy/2416002"}, {"source_title": "South Korea’s nuclear industry proves global competitiveness with Czech contract", "url": "https://www.chosun.com/english/opinion-en/2024/07/19/EFJVVFGMRNCKHB5EA5DDWMAS7I/"}]}, {"politician": "문재인", "policy": "최저임금 인상 정책", "industry_or_sector": "소상공인", "companies": [], "impact_description": "2018년 최저임금 16.4% 인상(7,530원)으로 소기업들이 운영 부담을 겪었으며, 기업 로비단체들은 이 정책이 사업 환경과 고용 창출에 부정적 영향을 줄 것이라고 비판했습니다.", "evidence": [{"source_title": "South Korea to support small businesses after minimum wage hike", "url": "https://www.koreaherald.com/article/1386200"}]}, {"politician": "문재인", "policy": "바이오헬스 산업 지원 정책", "industry_or_sector": "바이오헬스 산업", "companies": ["Samsung Biologics", "Celltrion"], "impact_description": "문재인 정부는 바이오헬스 산업을 성장 동력으로 지정하고 연간 33억 달러(4조 원)의 R&D 투자를 약속했습니다. 삼성바이오로직스와 셀트리온과 같은 국내 제약사들이 간접적으로 혜택을 받은 것으로 보입니다.", "evidence": [{"source_title": "President Moon Jae-in pledges support for bio-health industry", "url": "https://www.youtube.com/watch?v=2TBqfuiYhx0"}]}], "notes": ""}} +{"query": "박근혜", "gold_report": {"report_title": "박근혜 전 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2013–2017", "question_answer": "박근혜 전 대통령은 창조경제와 문화융성 정책을 통해 사물인터넷·3D프린팅 등 신산업 분야 스타트업과 한류 콘텐츠 기업들의 성장을 도모했습니다. 또한 중동 순방 경제외교를 통해 대형 건설사의 해외수주를 지원했고, 부동산 활성화를 위한 규제 완화로 건설경기에 긍정적인 영향을 미쳤습니다. 그러나 최순실 사태로 일부 기업과의 부정적 연결 고리가 드러나며 정책 추진에 대한 신뢰성이 타격을 입었습니다.", "influence_chains": [{"politician": "박근혜", "policy": "창조경제 산업육성", "industry_or_sector": "ICT/신산업", "companies": ["TPC(티피씨)", "효성ITX"], "impact_description": "박근혜 정부는 ICT 기반 창조경제를 내세워 사물인터넷, 3D프린팅 등 4차산업혁명 관련 기업을 지원했습니다. 그 영향으로 3D 프린터 제조사 TPC 등 관련주들이 정책 발표 직후 급등하는 등 수혜를 입었고:contentReference[oaicite:19]{index=19}:contentReference[oaicite:20]{index=20}, 효성ITX 등 일부 IT기업 주가는 창조경제 언급 때마다 상승세를 보였습니다. 이는 정부의 규제 완화와 R&D 지원에 대한 기대감이 해당 기업들의 성장 모멘텀으로 작용한 사례입니다.", "evidence": [{"source_title": "[상반기 달군 테마주] 朴대통령 “창조경제” 발언에 사물인터넷株 '고공행진'", "url": "https://www.etoday.co.kr/news/view/932921"}]}, {"politician": "박근혜", "policy": "문화융성 정책", "industry_or_sector": "문화콘텐츠/미디어", "companies": ["CJ E&M", "팬엔터테인먼트"], "impact_description": "한류 확산과 문화콘텐츠 산업 육성을 위한 문화융성 정책으로, CJ E&M과 팬엔터테인먼트 같은 드라마·예능 제작사는 정부의 펀드 조성 및 해외진출 지원에 힘입어 사업 확장에 긍정적 영향을 받았습니다:contentReference[oaicite:21]{index=21}:contentReference[oaicite:22]{index=22}. 국내 미디어 기업들은 정책 수혜 기대 속에 투자와 제작이 활성화되었으며, 문화콘텐츠 수출 증대로 이어지는 성과를 거두었습니다.", "evidence": [{"source_title": "신정부 정책 수혜株..코스닥을 주목하라 - 뉴스토마토", "url": "https://www.newstomato.com/ReadNews.aspx?no=333218"}]}, {"politician": "박근혜", "policy": "중동 순방 경제외교", "industry_or_sector": "건설/인프라", "companies": ["현대건설", "대우건설"], "impact_description": "박근혜 정부 시절 적극적인 정상외교를 통해 중동지역 인프라 사업을 수주하도록 지원한 결과, 현대건설과 대우건설 등 국내 대형 건설사들이 이란·중동 시장에서 대규모 공사 계약을 체결하는 성과를 거두었습니다. 2015년 이란 방문 당시 수십조 원 규모의 MOU가 체결되는 등 이러한 경제외교는 건설주에 호재로 작용하여 주가 상승을 이끌기도 했습니다.", "evidence": [{"source_title": "박근혜 대통령, 경제사절단과 순방 성과 논의 / YTN", "url": "https://www.ytn.co.kr/_ln/0101_201603171803123166"}]}, {"politician": "박근혜", "policy": "부동산 규제 완화", "industry_or_sector": "건설/부동산", "companies": ["현대산업개발", "호반건설"], "impact_description": "취득세 영구 인하, 분양가 상한제 탄력운영 등 부동산 활성화 정책을 펼치며 주택시장이 회복되자, HDC현대산업개발과 호반건설 등 국내 건설사들의 분양 실적과 주가에 긍정적 효과가 나타났습니다:contentReference[oaicite:23]{index=23}:contentReference[oaicite:24]{index=24}. 정부가 다주택자 양도세 중과 폐지 등 추가 부동산 대책을 내놓을 것이라는 전망 속에 건설업종 전반에 투자심리가 개선되었습니다.", "evidence": [{"source_title": "신정부 정책 수혜株..코스닥을 주목하라 - 뉴스토마토", "url": "https://www.newstomato.com/ReadNews.aspx?no=333218"}]}], "notes": "2013–2017년 박근혜 정부 기간을 대상으로 하였으며, 정책 발표와 해외 순방 시점의 업계 동향을 중심으로 서술했습니다. 창조경제 추진과 문화융성 정책은 초기 시장 기대를 모았으나, 말기에 불거진 국정농단 사건으로 일부 기업과 정책 간의 부정적 영향도 고려해야 합니다."}, "model_response": {"report_title": "박근혜 대통령의 정책, 산업, 기업 영향력 네트워크 분석", "time_range": "2013–2017", "question_answer": "박근혜 대통령은 창조경제 정책을 통해 테크 스타트업, 중소기업, 재벌(LG, 효성)과 연결되었으며, 삼성그룹과의 뇌물 스캔들 및 원자력 산업(KEPCO, 한국수력원자력) 지원 정책과 관련이 있습니다. 그러나 삼성, 현대 등 특정 재벌과의 직접적 정책 연결성은 명확히 입증되지 않았습니다.", "influence_chains": [{"politician": "박근혜", "policy": "창조경제 정책", "industry_or_sector": "테크 스타트업", "companies": ["Marine Techno", "DOT", "TEGway", "KPT", "CES"], "impact_description": "박근혜 정부의 창조경제 정책은 17개 창조경제혁신센터를 통해 920개 스타트업을 지원했으며, 1436억 원의 투자 유치, 769억 원의 매출 창출, 750개의 일자리 생성에 기여했습니다. 이 정책은 사우디아라비아, 브라질, 온두라스에 수출되기도 했습니다.", "evidence": [{"source_title": "businesskorea.co.kr", "url": "https://www.businesskorea.co.kr/news/articleView.html?idxno=14583"}]}, {"politician": "박근혜", "policy": "창조경제 정책", "industry_or_sector": "재벌(Chaebol)", "companies": ["LG Group", "Hyosung"], "impact_description": "LG 그룹은 스타트업 KPT(비드형 화장품)와 협력했고, 효성은 CES(탄소섬유 활용 난방 케이블 개발)와 협력했습니다. 이 정책은 재벌 중심의 전략에서 벗어나 중소기업과 스타트업을 주요 일자리 창출자로 육성하려는 목표를 가졌습니다.", "evidence": [{"source_title": "businesskorea.co.kr", "url": "https://www.businesskorea.co.kr/news/articleView.html?idxno=14583"}]}, {"politician": "박근혜", "policy": "창조경제 정책", "industry_or_sector": "중소기업(SMEs)", "companies": ["Korea Federation of SMEs"], "impact_description": "한국중소기업연합회는 창조경제 정책 논의에 참여했습니다. 이 정책은 중소기업과 스타트업의 성장을 촉진하면서도 재벌의 지배 구조가 혁신을 저해한다는 비판을 받았습니다.", "evidence": [{"source_title": "polinews.co.kr", "url": "http://www.polinews.co.kr/news/articleView.html?idxno=178846"}]}, {"politician": "박근혜", "policy": "삼성 합병 승인 개입", "industry_or_sector": "재벌(Chaebol)", "companies": ["Samsung Group"], "impact_description": "박근혜 대통령은 최순실과 공모해 삼성그룹에 2050만 파운드(약 2700만 달러)의 뇌물을 요구한 혐의로 기소되었습니다. 삼성의 이재용 부회장은 최순실의 딸 승마 훈련 비용 및 재단 기부금을 제공한 혐의로 조사받았으며, 이는 2015년 삼성물산과 제일모직 합병과 관련이 있습니다.", "evidence": [{"source_title": "The Guardian", "url": "https://www.theguardian.com/world/2017/may/23/former-south-korean-president-park-geun-hye-on-trial-for-corruption"}, {"source_title": "CBS News", "url": "https://www.cbsnews.com/news/south-korea-bribery-scandal-samsung-lee-jae-yong-park-geun-hye-choi-soon-sil/"}, {"source_title": "Silicon Republic", "url": "https://www.siliconrepublic.com/business/samsung-park-geun-hye-scandal"}]}, {"politician": "박근혜", "policy": "원자력 에너지 정책", "industry_or_sector": "원자력 산업", "companies": ["KEPCO", "Korea Hydro & Nuclear Power (KHNP)"], "impact_description": "박근혜 정부는 원전 수출 확대 및 후쿠시마 사고 이후 안전 강화 정책을 추진했습니다. KEPCO와 한국수력원자력은 원전 운영을 담당했으며, UAE 원전 수출 계약이 주요 성과로 꼽힙니다. 그러나 원자력안전위원회(NSSC)의 지위 강등 계획은 이해관계 충돌 우려로 비판을 받았습니다.", "evidence": [{"source_title": "South Korea's Unstable Nuclear Energy Policy: Lee Through Moon to Yoon Governments", "url": "https://kr.boell.org/en/2023/04/14/south-koreas-unstable-nuclear-energy-policy-lee-through-moon-yoon-governments"}, {"source_title": "South Korean Nuclear Policy Unchanged", "url": "https://www.world-nuclear-news.org/Articles/South-Korean-nuclear-policy-unchanged"}]}], "notes": ""}} +{"query": "이명박", "gold_report": {"report_title": "이명박 전 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2008–2013", "question_answer": "이명박 전 대통령은 4대강 개발 사업을 추진하여 삼성물산 등 대형 건설사가 대규모 토목 공사를 수주하는 혜택을 누렸으며, 해외 자원개발과 원전 수출 외교로 한국전력, 현대건설 등이 글로벌 프로젝트에 참여하는 성과를 거두었습니다. 한편 법인세 인하와 친기업 정책을 통해 대기업들의 투자 환경을 개선시켰으나, 부작용으로 부의 양극화 논란도 야기되었습니다.", "influence_chains": [{"politician": "이명박", "policy": "4대강 사업 추진", "industry_or_sector": "건설/토목", "companies": ["삼성물산", "현대건설"], "impact_description": "이명박 정부의 4대강 정비 사업으로 국내 주요 건설사들이 대규모 준설과 보 건설 공사를 맡아 막대한 공사 물량을 수행했습니다. 특히 삼성물산은 4대강 사업 최대 수혜 기업으로 지목될 만큼 많은 공사를 수주하여 매출 증대에 기여했고:contentReference[oaicite:25]{index=25}, 현대건설을 비롯한 대형 건설사들도 토목 매출이 크게 늘어나며 단기적인 호황을 누렸습니다.", "evidence": [{"source_title": "4대강사업 최대 수혜는 '삼성건설'", "url": "https://ko.wikipedia.org/wiki/4%EB%8C%80%EA%B0%95_%EC%A0%95%EB%B9%84_%EC%82%AC%EC%97%85"}]}, {"politician": "이명박", "policy": "원전 수출 외교", "industry_or_sector": "에너지/원자력", "companies": ["한국전력", "현대건설"], "impact_description": "2009년 이명박 정부는 UAE에 한국형 원자력발전소 4기를 수출하는 대형 계약(약 20조 원 규모)을 따냈습니다:contentReference[oaicite:26]{index=26}. 이 원전 수주 성공으로 한국전력은 글로벌 원전사업 주관사로서 국제 위상이 높아졌고, 현대건설 등 참여 건설사들은 해외 원전 건설 공사를 수행하며 수익과 기술경쟁력을 확보하는 성과를 올렸습니다. 이는 대통령의 적극적인 비즈니스 외교가 결정적인 역할을 한 사례입니다:contentReference[oaicite:27]{index=27}.", "evidence": [{"source_title": "임종석 UAE 방문 논란…한국전력 2009년 UAE 원전 수주", "url": "https://weekly.chosun.com/client/news/viw.asp?ctcd=C09&nNewsNumb=002587100013"}, {"source_title": "아랍에미리트(UAE) 원전의 진실 - 동아일보", "url": "https://www.donga.com/news/Politics/article/all/20180106/88052120/1"}]}, {"politician": "이명박", "policy": "법인세 인하 등 친기업 정책", "industry_or_sector": "재계/대기업", "companies": ["삼성전자", "현대자동차"], "impact_description": "이명박 정부는 법인세 최고세율을 25%에서 22%로 인하하고 각종 규제를 완화하는 친기업 정책을 펼쳤습니다. 그 결과 삼성전자, 현대자동차 등 대기업들은 세 부담 경감으로 이익이 증가하고 잉여현금이 늘어나 대규모 투자와 배당을 확대했습니다. 다만 이러한 혜택은 주로 대기업에 집중되어 중소기업 및 소득분배 측면에서는 한계가 있다는 지적도 있었습니다.", "evidence": [{"source_title": "20대 기업 법인세 부담 감소…투자 대비 배당↑", "url": "https://www.hankyung.com/economy/article/201301244074g"}]}], "notes": "2008–2013년 이명박 정부 기간 동안의 주요 경제정책 영향을 정리했습니다. 당시 대규모 국책사업과 해외사업 성과에 초점을 맞추었으며, 정책의 긍정적 효과와 함께 논란이 된 부분(예: 4대강 환경 문제, 부의 편중 현상)도 존재함을 유의해야 합니다."}, "model_response": {"report_title": "이명박 대통령의 정책-산업-기업 영향력 네트워크 분석", "time_range": "2008–2013", "question_answer": "이명박 대통령은 4대강 프로젝트를 통해 삼환기업 등 건설업계에 직접적인 영향을 미쳤으며, 녹색성장 정책을 통해 재생에너지 산업 전반에 간접적 영향을 준 것으로 확인됩니다. 다만, 특정 기업과의 직접적 연관성은 삼환기업을 제외하고는 명확히 입증되지 않았습니다.", "influence_chains": [{"politician": "Lee Myung-bak", "policy": "4 Rivers Project", "industry_or_sector": "건설업", "companies": ["삼환기업"], "impact_description": "4대강 프로젝트의 실질적인 수혜주로 지목되었으며, 토목 건설 분야에서 직접적인 혜택을 받은 것으로 확인됨", "evidence": [{"source_title": "Newspim: 삼환기업 and 4 Rivers Project", "url": "http://www.newspim.com/sub_view.php?cate1=1&cate2=3&news_id=197822"}, {"source_title": "Naver News: 4 Rivers Project Concerns", "url": "https://n.news.naver.com/mnews/article/008/0005098150?sid=100"}]}, {"politician": "Lee Myung-bak", "policy": "Green Growth Strategy", "industry_or_sector": "재생에너지", "companies": [], "impact_description": "재생에너지 분야(태양광, 풍력) 수출 산업 육성을 위한 40조 원 투자 계획 발표. KEPCO, LSIS, Samsung SDI 등이 스마트그리드 및 재생에너지 분야에서 언급되었으나, 정책 혜택과의 직접적 연관성은 확인되지 않음", "evidence": [{"source_title": "Littlemachinery: Green Growth Investment Plan", "url": "http://www.littlemachinery.com/article-11436.html"}]}], "notes": ""}} +{"query": "홍준표", "gold_report": {"report_title": "홍준표 대구시장의 정치·경제 영향력 네트워크 분석", "time_range": "2025년 11월 24일 기준", "question_answer": "홍준표 대구시장은 대구경북 통합신공항 건설 추진을 통해 대우건설, 화성산업 등 지역 건설사에 대규모 사업 참여 기회를 제공하고 있습니다. 또한 지방정부 차원의 규제 완화와 기업 유치 노력을 통해 대구 지역 산업단지의 투자 활성화를 도모하고 있습니다. 다만 강성 발언과 중앙정치와의 마찰로 정책 추진 과정에서 잡음이 발생하기도 합니다.", "influence_chains": [{"politician": "홍준표", "policy": "대구경북 통합신공항 건설 추진", "industry_or_sector": "건설/지역개발", "companies": ["대우건설", "서한"], "impact_description": "홍준표 시장이 주도하는 대구경북 신공항 건설 사업으로 대우건설을 비롯한 지역 건설사 서한 등이 특수목적법인(SPC) 구성과 사업계획 수립 용역에 참여하고 있습니다:contentReference[oaicite:28]{index=28}. 약 11조 원 규모로 추정되는 공항 및 신도시 개발 사업은 해당 건설사들에게 막대한 수주 기회를 제공해 지역 건설경기를 부양할 것으로 기대됩니다.", "evidence": [{"source_title": "대우건설, TK신공항 건설 주관사 유력…'지역 3社' 화성·서한 - 경북일보", "url": "https://www.kyongbuk.co.kr/news/articleView.html?idxno=4012068"}]}, {"politician": "홍준표", "policy": "대구 산단 규제 완화 및 기업 유치", "industry_or_sector": "지역산업/제조업", "companies": ["삼성메디슨", "홈센타홀딩스"], "impact_description": "홍준표 시장은 대구 국가산업단지의 규제를 완화하고 투자 인센티브를 제공하여 대기업과 중견기업을 대구로 유치하고 있습니다. 최근 삼성메디슨의 의료산업 투자 유치로 의료기기 클러스터에 활력이 돌았고, 지역 건축자재 기업 홈센타홀딩스는 신공항 수혜 기대와 산업단지 투자 확대로 성장 동력을 얻고 있습니다. 이러한 기업 유치 노력은 지역 경제 기반을 강화하는 데 기여하고 있습니다.", "evidence": [{"source_title": "홈센타홀딩스와 홍준표 테마주: 대구 신공항과 지역 건축 자재 강자의 ...", "url": "https://redbluepurple.tistory.com/entry/%ED%99%8D%EC%A4%80%ED%8F%AC-%ED%85%8C%EB%A7%88%EC%A3%BC"}]}], "notes": "홍준표 시장에 대한 분석은 2025년 말 현재 진행 중인 지역 개발 프로젝트에 초점을 맞추었으며, 중앙정부 지원 여부와 정치적 변수에 따라 사업 추진 속도가 달라질 수 있습니다. 일부 기업 언급은 향후 수혜 전망에 근거한 것입니다."}, "model_response": {"report_title": "홍준표의 정책-산업-기업 영향력 네트워크 분석", "time_range": "2025-04-17 기준", "question_answer": "홍준표는 주택 공급 확대, AI/블록체인 투자, 대구경북신공항 프로젝트 등 주요 정책과 연결되어 있으나, 특정 기업과의 직접적인 정치경제적 관계는 확인되지 않음. 건설사들이 신공항 프로젝트에 계약자로 참여했으나 정치적 연관성은 없음.", "influence_chains": [{"politician": "홍준표", "policy": "도시 재개발 및 재건축을 통한 5년간 100만 주택 공급, 초과이익환수제 및 종합부동산세 폐지, 농업·녹지·산지 규제 완화", "industry_or_sector": "건설/부동산", "companies": [], "impact_description": "홍준표의 주택 공급 확대 정책은 건설 및 부동산 산업에 영향을 미치지만, 특정 기업이 수혜를 받는다는 직접적인 증거는 없음", "evidence": [{"source_title": "Chosun.com (Real Estate Policy)", "url": "https://realty.chosun.com/site/data/html_dir/2025/04/17/2025041703269.html"}, {"source_title": "FNNews (Housing Supply)", "url": "https://www.fnnews.com/news/202504161804354472"}]}, {"politician": "홍준표", "policy": "5년간 50조 원 AI·양자컴퓨팅·초전도체·블록체인 투자, 블록체인 및 가상자산 규제 완화", "industry_or_sector": "기술/블록체인", "companies": [], "impact_description": "홍준표의 AI/블록체인 투자 정책은 해당 기술 산업에 영향을 미치지만, 특정 기업이 수혜를 받는다는 직접적인 증거는 없음", "evidence": [{"source_title": "Sisajournal (AI/Blockchain)", "url": "https://www.sisajournal.com/news/articleView.html?idxno=330501"}, {"source_title": "Asiatoday (Tech Investment)", "url": "https://www.asiatoday.co.kr/kn/view.php?key=20250416010009875"}, {"source_title": "Specialtimes (Blockchain Deregulation)", "url": "https://www.specialtimes.co.kr/news/articleView.html?idxno=423955"}]}, {"politician": "홍준표", "policy": "대구경북신공항 프로젝트 추진", "industry_or_sector": "건설", "companies": ["Hwasung", "Seohan", "Taewang"], "impact_description": "대구경북신공항 프로젝트에 Hwasung, Seohan, Taewang 등 건설사가 계약자로 참여했으나, 정치적 동기보다는 계약적 관계로 확인됨", "evidence": [{"source_title": "Yeongnam.com (Construction Firms)", "url": "https://www.yeongnam.com/web/view.php?key=20240222010002694"}]}], "notes": ""}} +{"query": "안철수", "gold_report": {"report_title": "안철수 의원의 정치·경제 영향력 네트워크 분석", "time_range": "2025년 11월 24일 기준", "question_answer": "안철수 의원은 벤처기업인 출신답게 ICT 산업과 스타트업 육성을 강조하여 안랩 등 소프트웨어 기업과 코스닥 벤처시장에 긍정적 영향을 미쳤습니다. 4차 산업혁명 및 코로나19 대응 과정에서 IT 혁신과 백신 개발 지원을 주창하며 관련 업계의 성장을 뒷받침했습니다. 다만 정치 행보에 따른 테마주 변동성도 커, 총리설 등으로 안랩 주가가 급등락하는 모습이 나타났습니다.", "influence_chains": [{"politician": "안철수", "policy": "소프트웨어·스타트업 육성", "industry_or_sector": "IT/벤처", "companies": ["안랩", "카카오벤처스"], "impact_description": "안철수 의원은 창업 활성화와 코딩교육 강화 등 IT 인재 양성 정책을 지속적으로 주장해왔습니다. 이러한 흐름 속에 그의 경영철학이 반영된 보안기업 안랩은 국내 소프트웨어 육성 분위기에서 꾸준한 성장을 이어갔습니다. 또한 안 의원이 벤처 생태계 조성을 강조함에 따라 카카오벤처스 등 스타트업 투자업계에도 긍정적 인식이 확산되어 투자가 활성화되는 효과가 있었습니다.", "evidence": [{"source_title": "안랩, 소프트웨어정책 영향으로 성장세 지속", "url": "https://www.sisajournal.com/news/articleView.html?idxno=235310"}]}, {"politician": "안철수", "policy": "코로나19 백신 개발 지원", "industry_or_sector": "제약/백신", "companies": ["SK바이오사이언스"], "impact_description": "의사 출신인 안철수 의원은 코로나19 국면에서 국내 백신 개발의 중요성을 역설하며 범정부 지원을 촉구했습니다. 그에 따라 SK바이오사이언스는 정부로부터 임상시험 비용 지원과 행정절차 간소화 혜택을 받아 국산 백신 개발을 가속화할 수 있었고:contentReference[oaicite:29]{index=29}:contentReference[oaicite:30]{index=30}, 결과적으로 국내 백신 주권 확보와 해당 기업의 위상 제고로 이어졌습니다.", "evidence": [{"source_title": "정부, 코로나19 치료제·백신 개발 임상 비용 940억원 지원 - 정책브리핑", "url": "https://www.korea.kr/news/policyNewsView.do?newsId=148878275"}]}, {"politician": "안철수", "policy": "정치 테마주 변동", "industry_or_sector": "주식시장/테마주", "companies": ["안랩"], "impact_description": "안철수 의원의 정치적 입지 변화는 최대주주로 있는 안랩 주가에 직결되었습니다. 2022년 대통령직 인수위원장 시절 ‘안철수 총리 기용설’이 돌자 안랩 주가가 보름 만에 148% 급등하며 사상 최고가를 경신했고:contentReference[oaicite:31]{index=31}, 이후 총리직 고사 소식에 9% 이상 폭락하는 등:contentReference[oaicite:32]{index=32} 정치 테마주로서 급등락을 반복했습니다. 이는 정치인의 입지가 기업가치와 시장 심리에 미친 대표적 사례입니다.", "evidence": [{"source_title": "'안철수 총리설'에 안랩 주가 고공행진…10년 만에 역대 최고가", "url": "https://www.sisajournal.com/news/articleView.html?idxno=235310"}, {"source_title": "안철수 총리직 고사에....안랩 주가 9%대 폭락", "url": "https://www.chosun.com/economy/stock-finance/2022/03/30/ISPOPMI45JBQ5BEQXZE77YD7FM/"}]}], "notes": "안철수 의원의 영향력은 기업인에서 정치인으로 변모한 특이한 경력에서 비롯되며, IT산업 정책과 주식시장 테마 양측면이 혼재되어 있습니다. 분석은 2025년 기준 공개된 자료와 시장 반응을 토대로 했습니다."}, "model_response": {"report_title": "안철수의 정책-산업-기업 영향력 네트워크 분석", "time_range": "2025-04-13 ~ 2025-12-03", "question_answer": "안철수는 경제 민주화, 과학기술 리더십 강화, 중소기업 지원 등 주요 정책 연관성을 보였으나, 특정 기업과의 직접적 연결은 확인되지 않았습니다. 재벌 개혁 정책은 삼성, 현대 등 구체적 기업을 명시하지 않았으며, 기술 산업 정책도 네이버, 카카오 등 특정 기업을 언급하지 않았습니다. 중소기업 지원 정책 역시 구체적 수혜 기업이 제시되지 않았습니다. 정치적 영향력 측면에서는 보수 진영과의 연계가 강조되었으나, 경제적 이해관계 네트워크는 명확히 드러나지 않았습니다.", "influence_chains": [{"politician": "안철수", "policy": "경제 민주화", "industry_or_sector": "재벌(가족 소유 대기업)", "companies": [], "impact_description": "경제 민주화 정책을 통해 재벌 규제 강화, 시장 독점세 부과, 계열사 분리 의무화 등을 추진했으나 특정 기업을 명시하지 않음", "evidence": [{"source_title": "Korea Herald", "url": "https://www.koreaherald.com/article/10375026"}]}, {"politician": "안철수", "policy": "과학기술 리더십 강화", "industry_or_sector": "과학기술(인공지능, 반도체, 모빌리티, K-서비스)", "companies": [], "impact_description": "AI, 반도체, 모빌리티, K-서비스 등 5대 전략 산업 육성 및 R&D 투자 확대(20조 원 K-Startup 펀드 설립) 정책을 제시했으나 특정 기업을 명시하지 않음", "evidence": [{"source_title": "Chosun.com", "url": "https://biz.chosun.com/en/en-policy/2025/04/13/GL5OWOCNUZDGBOKZDHNTD56KKA/"}]}, {"politician": "안철수", "policy": "중소기업 지원", "industry_or_sector": "중소기업", "companies": [], "impact_description": "중소기업 지원을 위한 금융 개혁 및 일자리 창출 정책을 제시했으나 특정 기업을 명시하지 않음", "evidence": [{"source_title": "Korea Herald", "url": "https://www.koreaherald.com/article/10375026"}]}], "notes": ""}} +{"query": "이준석", "gold_report": {"report_title": "이준석 전 국민의힘 대표의 정치·경제 영향력 네트워크 분석", "time_range": "2025년 11월 24일 기준", "question_answer": "이준석 전 대표는 2030 세대의 목소리를 대변하며 플랫폼 경제와 가상자산 등 신산업에 우호적인 태도를 보여 관련 업계 담론을 선도했습니다. 승차공유 등 모빌리티 혁신에 대한 규제 완화를 주장하여 쏘카 등 스타트업의 입지를 언급했고, 젊은 층의 관심이 높은 암호화폐 제도화 필요성을 제기하며 업비트 등 거래소에 간접적인 긍정 여론을 형성했습니다. 다만 직접 정책 집행 권한이 없어 실질 영향은 제한적이었습니다.", "influence_chains": [{"politician": "이준석", "policy": "공유 모빌리티 규제 완화 주장", "industry_or_sector": "모빌리티/스타트업", "companies": ["타다(VCNC)", "쏘카"], "impact_description": "이준석 전 대표는 택시산업과 승차공유 서비스의 공정 경쟁을 강조하며, 스타트업 타다 금지법 통과에 반대 의견을 꾸준히 제시했습니다:contentReference[oaicite:33]{index=33}. 그의 주장들은 쏘카 등 모빌리티 플랫폼 기업이 규제 완화 여론을 얻는 데 기여했고, 관련 업계에 혁신 필요성을 환기시켰습니다. 비록 당장의 정책 변화로 이어지진 않았으나, 미래 세대 정치 담론으로 모빌리티 혁신이 부상하는 효과가 있었습니다.", "evidence": [{"source_title": "두 달 택시 몰아본 이준석 “카풀 반대할 수밖에 없더라” - 서울신문", "url": "https://www.seoul.co.kr/news/newsView.php?id=20181213500020"}]}, {"politician": "이준석", "policy": "가상자산 제도화 및 세대공감", "industry_or_sector": "금융/가상자산", "companies": ["업비트", "빗썸"], "impact_description": "젊은 층의 투자열풍을 의식한 이준석 전 대표는 암호화폐 과세 유예와 제도권 편입의 필요성을 역설했습니다. 이러한 행보는 국내 최대 가상자산 거래소 업비트와 빗썸 등에게 우호적인 환경 조성으로 이어져, 관련 업계는 정치권 논의에 힘입어 일정 기간 투자심리가 개선되는 효과를 누렸습니다. 이는 정치권에서 가상자산이 공식 의제로 다뤄지는 데 일조한 사례로 평가됩니다.", "evidence": [{"source_title": "이준석 “가상자산 과세, 청년층 의견 더 들어야” - 코인데스크코리아", "url": "http://www.coindeskkorea.com/news/articleView.html?idxno=75211"}]}], "notes": "이준석 전 대표는 입법 권한은 없었지만 당대표로서 담론 형성과 여론에 영향을 미쳤습니다. 본 분석에서는 그의 주장과 이에 따른 산업계 분위기 변화를 다루었으며, 실제 정책 실현 여부와는 구분됩니다."}, "model_response": {"report_title": "이준석 의원의 정치-경제적 영향력 네트워크 분석", "time_range": "2025-05-12 ~ 2025-12-03", "question_answer": "이준석 의원의 정책들은 잘 문서화되어 있지만, 검증 가능한 경제적 연결고리(산업/기업)는 부족합니다. 그의 영향력 네트워크는 정치적 담론에 국한되어 있으며, 기업 관계나 산업 영향에 대한 구체적 증거는 없습니다.", "influence_chains": [], "notes": ""}} +{"query": "심상정", "gold_report": {"report_title": "심상정 의원의 정치·경제 영향력 네트워크 분석", "time_range": "2025년 11월 24일 기준", "question_answer": "심상정 의원은 노동존중 사회를 기치로 최저임금 인상과 비정규직의 정규직화 등을 주도하며 대기업의 무노조 경영을 강하게 비판해 삼성전자 등 기업의 노동관행 변화를 촉구했습니다. 또한 그린뉴딜과 탈탄소 정책을 앞장서 제안하여 석탄발전 축소와 재생에너지 확대에 영향을 미쳤습니다. 이처럼 노동·환경 분야에서 진보적 의제를 선도하며 관련 기업들의 경영 전략에도 일정 부분 자극을 주었습니다.", "influence_chains": [{"politician": "심상정", "policy": "노조할 권리 보장 투쟁", "industry_or_sector": "대기업/노동", "companies": ["삼성전자"], "impact_description": "심상정 의원은 국회에서 삼성의 '무노조 경영'을 집요하게 문제삼으며 2013년 삼성의 노조탄압 문건을 폭로하는 등 노조할 권리 보장에 앞장섰습니다:contentReference[oaicite:34]{index=34}. 이러한 노력은 삼성전자에 노조 설립이 현실화되는 계기를 마련했고, 법원도 삼성의 조직적 노조와해 행위를 유죄로 인정하여 삼성으로 하여금 무노조 경영 원칙을 폐기하고 노동조합을 받아들이도록 압력을 가했습니다:contentReference[oaicite:35]{index=35}:contentReference[oaicite:36]{index=36}.", "evidence": [{"source_title": "심상정이 노동절 앞두고 또다시 '삼성' 지목한 이유 - 오마이뉴스", "url": "http://www.ohmynews.com/NWS_Web/View/at_pg.aspx?CNTN_CD=A0002429571"}, {"source_title": "심상정 “삼성 노조와해 유죄…반헌법적 무노조 황제경영 원칙 폐기해야”", "url": "http://www.lawleader.co.kr/news/articleView.html?idxno=3823"}]}, {"politician": "심상정", "policy": "최저임금 인상 및 정규직화", "industry_or_sector": "소매/서비스", "companies": ["이마트", "CJ대한통운"], "impact_description": "정의당의 심상정 의원은 최저임금의 가파른 인상을 강력히 지지하고 공공부문 비정규직의 정규직 전환을 추진했습니다. 그 결과 대형마트 이마트는 급격한 인건비 상승으로 무인계산대 도입 등 구조조정을 검토하게 되었고, 택배회사 CJ대한통운은 분류인력 직고용 등 고용구조 변화를 단행했습니다. 이처럼 노동자의 처우 개선 정책은 해당 기업들의 비용 구조와 운영 방식에 직접적 영향을 미쳤습니다.", "evidence": [{"source_title": "심상정 의원 “최저임금 1만원 시대, 대기업도 사회적 책임 다해야”", "url": "https://www.khan.co.kr/economy/economy-general/article/201807181453001"}]}, {"politician": "심상정", "policy": "녹색뉴딜·탈탄소 정책", "industry_or_sector": "에너지/환경", "companies": ["한국남동발전", "두산중공업"], "impact_description": "심상정 의원은 일찍이 Green New Deal을 주장하며 석탄발전소 폐쇄와 재생에너지 전환을 촉구했습니다. 이로 인해 석탄 발전을 주력으로 하던 한국남동발전은 영흥화력 등의 조기 폐지와 LNG 전환 계획을 수립했고, 원전·석탄 플랜트 기업 두산중공업(현 두산에너빌리티)은 정부의 탈석탄 기조 속에서 경영 위기를 겪기도 했으나 이후 신재생 사업으로 사업 방향을 선회했습니다. 이러한 변화는 진보정당의 환경 의제 선도가 기업 전략 재편에 영향을 준 사례입니다.", "evidence": [{"source_title": "심상정 “2050 탄소중립 위해 석탄발전 중단 로드맵 시급”", "url": "https://www.edaily.co.kr/news/read?newsId=03715206625924472&mediaCodeNo=257"}]}], "notes": "심상정 의원의 영향력은 입법보다는 의제 설정과 여론 압박을 통한 간접적인 효과가 크며, 본 분석에서는 노동·환경 분야에서 기업에 미친 영향을 위주로 서술했습니다. 정치인의 발언과 실제 정책 실현 간에는 차이가 있을 수 있습니다."}, "model_response": {"report_title": "심상정 의원의 정책-산업-기업 영향력 네트워크 분석", "time_range": "2003-2025", "question_answer": "심상정 의원은 노동권 강화, 재생에너지 확대, 대기업 임원 보수 규제 등 주요 정책을 추진했으나, 특정 기업과의 직접적 연관성은 확인되지 않았습니다. 노동집약적 산업(제조업, 건설업) 및 재생에너지 산업에 간접적 영향을 미쳤으며, 정책 수혜 기업으로 한화솔루션, 두산퓨얼셀 등이 언급되었으나 구체적 증거는 부재합니다.", "influence_chains": [{"politician": "심상정", "policy": "노동권 강화 정책(5일 근무제, 중대재해처벌법, 살찐고양이법)", "industry_or_sector": "제조업, 건설업", "companies": [], "impact_description": "노동권 강화 정책(5일 근무제, 중대재해처벌법, 살찐고양이법)을 주도했으나, 특정 기업과의 직접적 연관성은 확인되지 않음. 제조업 및 건설업 등 노동집약적 산업에 간접적 영향", "evidence": [{"source_title": "Middle JoongAng: \"공부하는 의원이 사라졌다…떨어진 역량 메울 시스템 변화 필요\"", "url": "https://www.m-joongang.com/news/articleView.html?idxno=401839"}, {"source_title": "YouTube: 심상정 인터뷰 (노동운동가 경력 및 정책 강조)", "url": "https://www.youtube.com/watch?v=3l_cd_APckQ"}]}, {"politician": "심상정", "policy": "재생에너지 50% 목표(2030) 및 정의로운 전환 정책", "industry_or_sector": "재생에너지 산업", "companies": [], "impact_description": "재생에너지(태양광, 풍력) 산업 발전 및 정의로운 전환 정책 추진. 한화솔루션, 두산퓨얼셀 등 잠재적 수혜 기업 언급 있으나 직접적 연관성 증거 부재", "evidence": [{"source_title": "Naver News: 탈원전 두고 '동상이몽'…대선주자 에너지 공약 수혜주는?", "url": "https://n.news.naver.com/mnews/article/629/0000133912"}, {"source_title": "YouTube: 심상정 인터뷰 (노동운동가 경력 및 정책 강조)", "url": "https://www.youtube.com/watch?v=3l_cd_APckQ"}]}, {"politician": "심상정", "policy": "살찐고양이법(과도한 임원 보수 규제)", "industry_or_sector": "대기업(재벌)", "companies": [], "impact_description": "대기업(재벌)의 과도한 임원 보수 규제 정책 추진. 특정 기업 명시 없음", "evidence": [{"source_title": "Middle JoongAng: \"공부하는 의원이 사라졌다…떨어진 역량 메울 시스템 변화 필요\"", "url": "https://www.m-joongang.com/news/articleView.html?idxno=401839"}]}], "notes": ""}} +{"query": "Joe Biden", "gold_report": {"report_title": "Joe Biden 미국 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2021–2025년 11월 24일 기준", "question_answer": "조 바이든 대통령은 인플레이션 감축법(IRA)과 반도체 지원법(CHIPS Act) 등 대규모 산업 육성 정책을 통해 미국 내 전기차·배터리 및 반도체 기업에 막대한 지원을 제공했습니다. 이로써 Tesla와 LG Energy Solution 등이 세액공제 혜택으로 생산 투자를 늘리고, Intel과 TSMC는 첨단 공장 건설에 나섰습니다. 또한 동맹국들과 협력하여 글로벌 공급망을 재편하고, 친환경 에너지 전환을 추진함으로써 관련 기업들의 성장을 견인하고 있습니다.", "influence_chains": [{"politician": "Joe Biden", "policy": "인플레이션 감축법(IRA)", "industry_or_sector": "전기차/배터리", "companies": ["Tesla", "LG Energy Solution"], "impact_description": "2022년 제정된 IRA는 북미산 전기차에 대한 세액공제 혜택을 부여하여 Tesla 등 미국 전기차 제조사의 판매 경쟁력을 높였습니다. 또한 배터리 핵심광물 요건을 정함으로써 LG Energy Solution 등 한국 배터리 업체가 미국 현지공장 투자를 확대하도록 유인했습니다:contentReference[oaicite:37]{index=37}:contentReference[oaicite:38]{index=38}. 그 결과 Tesla는 미국 시장 점유율을 공고히 했고 LG에너지솔루션은 현지 생산을 늘려 IRA 인센티브를 확보하는 등 양사 모두 수혜를 입었습니다.", "evidence": [{"source_title": "\"미국이 제조업 미래 가질 것\"…바이든, 연일 'IRA 성과' 자축", "url": "https://news.nate.com/view/20220915n03449"}, {"source_title": "LG엔솔, 美 IRA 훈풍 업고 600MWh급 ESS 수주 - 글로벌이코노믹", "url": "https://m.g-enews.com/article/Industry/2023/07/20230707113056852699375367"}]}, {"politician": "Joe Biden", "policy": "CHIPS 및 과학법", "industry_or_sector": "반도체/제조", "companies": ["Intel", "TSMC"], "impact_description": "2022년 통과된 CHIPS Act를 통해 미국은 반도체 공장 건설에 527억 달러 보조금을 투입하여 자국 내 생산을 장려했습니다. 이에 Intel은 오하이오 등에 신규 팹 건설을 발표했고, TSMC도 애리조나에 첨단 파운드리 공장을 착공하는 등 적극 호응했습니다. 이 법안은 미국 내 반도체 생산능력 확충으로 공급망 안보를 강화하고, 관련 기업들에게 대규모 투자를 촉발하는 효과를 가져왔습니다.", "evidence": [{"source_title": "바이든, \"메이드 인 아메리카 반도체\" 인텔 공장 방문", "url": "https://www.voakorea.com/a/biden-intel-ohio-chips/6359882.html"}, {"source_title": "TSMC, 미국 애리조나에 3나노 공장 추가 투자", "url": "https://www.bbc.com/korean/news-63896506"}]}, {"politician": "Joe Biden", "policy": "동맹 공급망 및 친환경 정책", "industry_or_sector": "에너지/인프라", "companies": ["General Motors", "First Solar"], "impact_description": "바이든 대통령은 동맹국들과 협력하여 핵심 광물 공급망을 구축하고 친환경 인프라 투자를 확대했습니다. 이를 통해 General Motors는 호주·캐나다 업체와 배터리 핵심광물 공급 계약을 맺어 전기차 생산을 안정화했고, 태양광 패널 기업 First Solar는 IRA의 재생에너지 투자 세액공제에 힘입어 미국 내 신규 공장을 건설했습니다. 이 같은 국제 공조와 친환경 정책은 관련 기업들의 장기적 성장 기반을 강화했습니다.", "evidence": [{"source_title": "바이든, 호주·캐나다와 핵심광물 동맹 강화…GM 리튬 확보", "url": "https://www.reuters.com/business/autos-transportation/gm-signs-lithium-supply-agreement-with-australias-controlled-thermal-resources-2021-07-02/"}, {"source_title": "First Solar, IRA 타고 미 남부에 태양광 패널 공장 신설", "url": "https://www.nytimes.com/2023/08/11/business/energy-environment/first-solar-manufacturing-ira.html"}]}], "notes": "2021년 취임 이후 바이든 행정부의 주요 경제정책에 따른 기업 영향을 분석했습니다. 대규모 재정 지원 법안들은 아직 진행 중인 사안으로, 여기서 언급된 효과는 2025년 현재 가시화된 초기 성과를 토대로 작성되었습니다."}, "model_response": {"report_title": "조 바이든의 정책, 산업, 기업 간 영향력 네트워크 분석", "time_range": "2025년 12월 3일 기준", "question_answer": "제공된 자료만으로는 질문에 대한 정확한 답을 확인하기 어렵다.", "influence_chains": [], "notes": ""}} +{"query": "Donald Trump", "gold_report": {"report_title": "Donald Trump 전 미국 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2017–2021", "question_answer": "도널드 트럼프 전 대통령은 대규모 감세와 규제 완화 정책으로 Apple, JPMorgan Chase 등 미국 대기업들의 순이익 증가와 투자 여력을 확대시켰습니다. 한편 미국 우선주의에 입각한 관세 부과와 무역전쟁을 통해 철강·에너지 업계를 보호하여 U.S. Steel 등의 국내 기업이 수혜를 입었지만, 글로벌 공급망 긴장으로 일부 제조업에는 불확실성을 초래했습니다. 전반적으로 친기업 기조로 단기 주가 상승과 고용 호조를 이끌었으나 무역갈등의 부작용도 야기되었습니다.", "influence_chains": [{"politician": "Donald Trump", "policy": "2017년 감세정책", "industry_or_sector": "대기업/금융", "companies": ["Apple", "JPMorgan Chase"], "impact_description": "트럼프 행정부는 2017년 말 법인세 최고세율을 35%에서 21%로 대폭 인하하는 감세법안을 통과시켰습니다. 이로 인해 Apple은 해외유보금 약 2500억 달러를 본국으로 송환하여 주주배당과 자사주 매입을 확대했고, JPMorgan Chase 등 대형 은행들은 세금 부담 감소로 순이익이 크게 증가하여 신규 대출과 인력 채용을 늘렸습니다. 감세정책은 월가와 기업들의 투자 심리를 자극하며 증시 활황으로 이어졌습니다.", "evidence": [{"source_title": "Apple, 세제혜택으로 100조원 규모 자사주 매입 발표", "url": "https://www.cnbc.com/2018/05/01/apple-will-buy-back-100-billion-in-stock-and-boost-dividend.html"}, {"source_title": "미국 은행들, 법인세 인하로 수익 급증", "url": "https://www.wsj.com/articles/tax-law-delivers-a-million-dollar-boost-to-big-banks-ceos-11550527000"}]}, {"politician": "Donald Trump", "policy": "무역전쟁 및 관세 정책", "industry_or_sector": "철강/제조", "companies": ["U.S. Steel", "Harley-Davidson"], "impact_description": "트럼프 전 대통령은 2018년부터 중국을 비롯한 교역국에 대한 관세부과로 무역전쟁을 전개했습니다. 특히 수입 철강에 25% 관세를 매겨 U.S. Steel 등 미 철강사들이 내수 가격 상승으로 단기적 호황을 누렸습니다. 그러나 중국의 보복관세로 모터사이클 제조사 할리데이비슨은 유럽 판매가격 급등으로 생산 일부를 해외로 이전하는 등 어려움을 겪었습니다. 보호무역 조치는 일부 제조업에 이익이 되었지만 다른 기업에는 비용 부담과 시장 축소를 초래했습니다.", "evidence": [{"source_title": "미국 철강업, 관세 덕에 반짝 호황", "url": "https://www.bloomberg.com/news/articles/2018-08-01/u-s-steel-s-profit-swells-as-trump-tariffs-add-momentum-to-rally"}, {"source_title": "할리데이비슨, EU 관세에 일부 생산 해외 이전 결정", "url": "https://www.bbc.com/news/business-44595070"}]}, {"politician": "Donald Trump", "policy": "에너지산업 지원 정책", "industry_or_sector": "석유/가스", "companies": ["ExxonMobil", "Chevron"], "impact_description": "트럼프 정부는 파리기후협약 탈퇴와 환경규제 완화로 화석연료 산업을 적극 지원했습니다. 연방 토지의 원유 시추 제한을 풀고 송유관 건설을 승인하여 ExxonMobil과 Chevron 같은 석유 대기업이 신규 유전 개발과 생산량 증대에 나설 수 있었습니다. 이로 인해 미국은 2018년 세계 1위 산유국이 되었고 관련 기업들의 매출과 이익이 증가했습니다. 다만 탄소배출 증가에 따른 국제사회 비판도 함께 야기되었습니다.", "evidence": [{"source_title": "미국, 2018년 세계 최대 산유국 등극…셰일 혁명과 트럼프 정책 영향", "url": "https://www.eia.gov/todayinenergy/detail.php?id=37053"}, {"source_title": "트럼프, 키스톤XL 송유관 부활…에너지 업계 환영", "url": "https://www.reuters.com/article/us-usa-pipeline-keystone-idUSKBN1582OH"}]}], "notes": "2017–2021년 트럼프 행정부 시기의 경제정책 영향을 정리했습니다. 친기업 조치로 단기적인 주가 및 고용 지표 개선이 있었지만, 무역갈등 등 장기적 파장도 초래하여 평가가 엇갈립니다. 언급된 사례들은 대표적인 긍정·부정 효과를 보여주는 기업들입니다."}, "model_response": {"report_title": "도널드 트럼프의 정책, 산업, 기업 간 영향력 네트워크 분석", "time_range": "2017–2021", "question_answer": "도널드 트럼프는 세금 감면, 철강 관세, 에너지 규제 완화 등 주요 정책을 통해 다양한 산업 및 기업과 연결되었으며, 그의 개인 사업체인 트럼프 조직과의 이해 상충이 확인되었습니다. 세금 감면은 AT&T, 베스트 바이 등 기업에 혜택을 주었고, 철강 관세는 U.S. 스틸, 누코르 등 철강 회사에 이익을 가져다주었습니다. 에너지 규제 완화는 엑슨모빌, 셰브론 등 화석 연료 기업에 유리했으며, 한국 기업인 한국항공, 현대자동차는 미국 관세 조정의 영향을 받았습니다. 또한 트럼프 조직은 사우디아라비아, 카타르 등 외국 정부로부터 수익을 얻으며 정책 결정에 영향을 미친 것으로 나타났습니다.", "influence_chains": [{"politician": "도널드 트럼프", "policy": "2017년 세금 감면 및 고용법", "industry_or_sector": "기업 및 소비자 부문", "companies": ["AT&T", "Best Buy", "Hostess Brands", "Cigna", "Quest Diagnostics", "Discover"], "impact_description": "세금 감면으로 인해 보너스, 임금 인상, 투자 발표", "evidence": [{"source_title": "Trump’s Tax Cuts: Biggest in History", "url": "https://trumpwhitehouse.archives.gov/briefings-statements/president-donald-j-trump-achieved-biggest-tax-cuts-reforms-american-history/"}, {"source_title": "Tax Cuts and Jobs Act (Wikipedia)", "url": "https://en.wikipedia.org/wiki/Tax_Cuts_and_Jobs_Act"}, {"source_title": "What Will Happen to the Trump Tax Cuts in 2025?", "url": "https://www.brookings.edu/articles/what-will-happen-to-the-trump-tax-cuts-in-2025-and-how-will-they-affect-the-national-debt/"}]}, {"politician": "도널드 트럼프", "policy": "2018년 철강/알루미늄 관세", "industry_or_sector": "철강 제조업", "companies": ["U.S. Steel", "Nucor", "Steel Dynamics", "AK Steel"], "impact_description": "관세 부과로 철강 가격 상승, 세전 이익 증가, 8,700개 일자리 추가", "evidence": [{"source_title": "Tariffs Boost U.S. Steel Stocks FY18 Earnings Worries Ahead", "url": "https://www.investing.com/analysis/tariffs-boost-us-steel-stocks-fy18-earnings-worries-ahead-200394744"}, {"source_title": "Steel Profits Gain, Steel Users Pay Under Trump’s Tariffs", "url": "https://www.piie.com/blogs/trade-and-investment-policy-watch/steel-profits-gain-steel-users-pay-under-trumps"}, {"source_title": "Did the 2018 Steel Tariff Make U.S. Steel Production More Profitable?", "url": "https://econofact.org/factbrief/did-the-2018-steel-tariff-make-us-steel-production-more-profitable"}]}, {"politician": "도널드 트럼프", "policy": "에너지 규제 완화", "industry_or_sector": "에너지", "companies": ["ExxonMobil", "Chevron"], "impact_description": "화석 연료 정책 강화로 국내 에너지 생산 증가, 재생 에너지 성장 둔화", "evidence": [{"source_title": "Trump Economic & Regulatory Implications", "url": "https://www.thomsonreuters.com/en-us/posts/government/trump-economic-regulatory-implications"}, {"source_title": "ExxonMobil Advocacy Report: Positions and Principles", "url": "https://corporate.exxonmobil.com/who-we-are/policy/exxonmobil-advocacy-report/positions-and-principles"}, {"source_title": "ExxonMobil Acquires Denbury", "url": "https://investor.exxonmobil.com/sec-filings/all-sec-filings/content/0000950103-23-011000/dp197471_425.htm"}]}, {"politician": "도널드 트럼프", "policy": "2018년 철강/알루미늄 관세", "industry_or_sector": "한국 무역", "companies": ["Korean Air", "Hyundai"], "impact_description": "미국 관세 조정으로 영향 받음", "evidence": [{"source_title": "Joint Factsheet: U.S.-South Korea Trade Agreement", "url": "https://n.news.naver.com/mnews/article/277/0005679467?sid=100"}]}, {"politician": "도널드 트럼프", "policy": "사우디아라비아 정책, 영국 오픈 개최 압력, 시리아 철군", "industry_or_sector": "부동산 및 관광", "companies": ["Trump Organization"], "impact_description": "트럼프 조직 소유로 인한 이해 상충", "evidence": [{"source_title": "Trump’s Conflicts of Interest", "url": "https://theweek.com/politics/trumps-conflicts-of-interest"}, {"source_title": "Second Trump Term Could Revive Old Ethics Questions", "url": "https://www.voanews.com/a/second-trump-term-could-revive-old-ethics-questions-/7428970.html"}, {"source_title": "Tracking Trump’s Visits to His Properties and Other Conflicts of Interest", "url": "https://www.citizensforethics.org/reports-investigations/crew-reports/tracking-trumps-visits-to-his-properties-and-other-conflicts-of-interest/"}, {"source_title": "Trump Made Up to $160 Million from Foreign Countries as President", "url": "https://www.citizensforethics.org/reports-investigations/crew-investigations/trump-made-up-to-160-million-from-foreign-countries-as-president/"}]}], "notes": ""}} +{"query": "Xi Jinping", "gold_report": {"report_title": "Xi Jinping 중국 국가주석의 정치·경제 영향력 네트워크 분석", "time_range": "2012–2025년 11월 24일 기준", "question_answer": "시진핑 주석은 일대일로 전략을 통해 중국 국영 건설기업들의 해외 인프라 수주를 획기적으로 늘렸고, 기술굴기 정책으로 SMIC 등 반도체 기업의 자립을 추진했습니다. 동시에 공동부유 기치 아래 빅테크 기업들에 대한 강도 높은 규제를 단행하여 Alibaba와 Tencent의 성장에 제동을 걸었습니다. 이러한 정책들은 중국 경제에 국가의 역할을 강화하여 국유기업이 부상하고 민영 기술기업은 구조조정과 사회공헌 압력을 받는 등 명암이 교차하는 영향을 미쳤습니다.", "influence_chains": [{"politician": "Xi Jinping", "policy": "일대일로(一带一路) 전략", "industry_or_sector": "해외인프라/건설", "companies": ["중국교통건설공사(CCCC)", "중국철도건설공사(CRCC)"], "impact_description": "2013년 시작된 시진핑 주석의 일대일로 구상은 아시아, 아프리카, 유럽의 140여 개국에 걸친 대규모 인프라 투자로, 중국교통건설공사와 중국철도건설공사 같은 국영 건설사가 해외 도로·항만·철도 공사를 대거 수주하는 결과를 낳았습니다. 예컨대 CCCC는 파키스탄 과다르 항만과 아프리카 여러 나라의 도로 건설을 수행했고, CRCC는 동남아 고속철 등 프로젝트를 맡아 매출 급증과 국제적 영향력 확대를 누렸습니다.", "evidence": [{"source_title": "중국 '일대일로' 10년, 누적 투자 1천조 돌파", "url": "https://www.xinhuanet.com/english/2023-08/17/c_1319807381.htm"}, {"source_title": "Rail giant CRCC thrives on Belt and Road projects", "url": "https://www.globaltimes.cn/content/1207394.shtml"}]}, {"politician": "Xi Jinping", "policy": "빅테크 규제와 공동부유", "industry_or_sector": "인터넷/플랫폼", "companies": ["Alibaba", "Tencent"], "impact_description": "2020년 말 Ant그룹 상장 중단을 시작으로 시진핑 정부는 플랫폼 독점과 자본확장을 억제하기 위한 빅테크 규제를 본격화했습니다. 이에 따라 알리바바는 독점행위로 182억 위안(약 3조원)의 과징금을 부과받았고:contentReference[oaicite:39]{index=39}:contentReference[oaicite:40]{index=40}, 텐센트 역시 신규 게임 서비스 인가 지연과 반독점 조사로 성장세가 둔화되었습니다. 이 공동부유 기조 속에 두 기업은 수익의 사회 환원을 확대하고 사업 구조를 보수적으로 조정하게 되어, 중국 인터넷 업계 전반에 걸쳐 긴장과 변화가 일어났습니다.", "evidence": [{"source_title": "中, 알리바바에 반독점법 위반 벌금 3조원 부과…사상최대 규모", "url": "https://news.nate.com/view/20210410n02051"}, {"source_title": "중국 게임산업 규제에 텐센트 실적 타격", "url": "https://www.reuters.com/technology/tencent-quarterly-revenue-falls-first-time-weaker-ad-gaming-sales-2022-08-17/"}]}, {"politician": "Xi Jinping", "policy": "기술굴기와 자립화", "industry_or_sector": "반도체/통신", "companies": ["SMIC", "화웨이"], "impact_description": "미중 기술패권 경쟁이 심화되자, 시진핑 주석은 핵심 기술 자립을 위해 막대한 국가자금을 투입했습니다. 중국 파운드리 업체 SMIC는 국가의 지원 아래 14nm 공정 양산에 성공하며 일부 국산화 성과를 거뒀고, 제재를 받은 화웨이는 자체 운영체제와 5G 장비 국산 부품 개발에 집중했습니다. 이러한 기술굴기 노력으로 미국 제재에도 불구하고 화웨이는 2023년 7nm 칩을 탑재한 스마트폰을 출시하는 등 자급 능력을 일정 부분 입증했습니다.", "evidence": [{"source_title": "SMIC receives government funds to boost chip self-sufficiency", "url": "https://www.ft.com/content/35c4e7fa-519a-4d44-9a02-414a2caba90b"}, {"source_title": "화웨이, 자체 칩 탑재 '메이트60' 출시…미국 제재 돌파구", "url": "https://www.hani.co.kr/arti/economy/it/1108186.html"}]}], "notes": "시진핑 주석 집권 하 중국 경제는 고속성장에서 질적 발전 및 안보 중시로 전환되고 있습니다. 본 분석은 대표적 사례로 국영기업의 약진과 민영기업 규제를 다루었으며, 중국 정부의 강력한 개입이 기업 운명에 직접 영향을 주는 특성을 반영합니다."}, "model_response": {"report_title": "시진핑의 정책, 산업 및 기업 연결성 분석", "time_range": "2025-12-03 기준", "question_answer": "제공된 자료만으로는 질문에 대한 정확한 답을 확인하기 어렵다.", "influence_chains": [], "notes": ""}} +{"query": "Vladimir Putin", "gold_report": {"report_title": "Vladimir Putin 러시아 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2000–2025년 11월 24일 기준", "question_answer": "블라디미르 푸틴 대통령은 에너지 국유화와 자원무기화를 통해 Gazprom과 Rosneft 등 국영 에너지 기업을 러시아 경제의 핵심으로 부상시켰습니다. 2022년 우크라이나 침공 이후에는 군수산업에 대한 수요가 폭증하여 Kalashnikov Concern 등의 방산업체가 내수와 수출 모두 급증하는 효과를 보았습니다. 동시에 서방의 제재로 러시아 경제는 위축되었지만, 정부는 수입대체 정책으로 국내 제조업 육성을 추진하며 제한된 범위 내에서 일부 IT·농업 기업의 성장을 도모하고 있습니다.", "influence_chains": [{"politician": "Vladimir Putin", "policy": "에너지 국유화·자원 무기화", "industry_or_sector": "에너지/가스", "companies": ["Gazprom", "Rosneft"], "impact_description": "푸틴 대통령은 집권 초부터 민영화되었던 에너지 자산을 재국유화하거나 국가 통제권을 강화했습니다. 천연가스 기업 가스프롬과 석유기업 로스네프트는 크렘린의 지원 아래 해외 파이프라인 건설과 OPEC+ 협조를 통해 막대한 수익을 올렸습니다. 특히 2006년 우크라이나 가스 차단 사태 등 자원을 외교무기로 활용하면서 Gazprom은 유럽 시장 지배력을 높였고:contentReference[oaicite:41]{index=41}, Rosneft는 국유화된 Yukos 자산 인수로 국내 1위 석유사가 되는 등 푸틴 정책의 최대 수혜자가 되었습니다.", "evidence": [{"source_title": "푸틴, Yukos 해체 후 로스네프트 국영 석유왕국 건설", "url": "https://www.wsj.com/articles/SB119705486110361204"}, {"source_title": "러시아 가스프롬, 우크라이나 파이프라인 분쟁 일지", "url": "https://www.bbc.com/russian/russia/2014/06/140616_gas_dispute_timeline"}]}, {"politician": "Vladimir Putin", "policy": "우크라이나 침공과 군수산업", "industry_or_sector": "방위산업", "companies": ["Kalashnikov Concern", "Uralvagonzavod"], "impact_description": "2022년 2월 푸틴 대통령의 우크라이나 침공 이후 러시아 군수산업은 전시에 준하는 생산증대로 특수를 누렸습니다. 소총과 드론을 만드는 칼라시니코프 콘체른사는 정부로부터 막대한 군수품 주문을 받아 생산량이 크게 늘었고, 전차 제조사 우랄바곤자보드는 손실 기업에서 전쟁 기간 핵심 군수업체로 급부상했습니다. 내수 수요로 매출이 급증함과 동시에 제재로 서방 부품 조달이 어렵지만, 정부의 전폭적 지원 아래 이들 업체는 러시아 경제에서 차지하는 비중이 한층 높아졌습니다.", "evidence": [{"source_title": "우크라이나 전쟁 1년, 러시아 군수산업 '밤낮없이 가동'", "url": "https://www.nytimes.com/2023/02/18/world/europe/russia-weapons-industry-war.html"}, {"source_title": "제재 속에서도 러 전차공장 Uralvagonzavod 생산 확대", "url": "https://www.reuters.com/world/europe/despite-sanctions-russia-is-making-materiel-faster-than-west-2023-08-18/"}]}, {"politician": "Vladimir Putin", "policy": "수입대체산업 육성", "industry_or_sector": "제조/기술", "companies": ["Yandex", "Ростсельмаш(Rostselmash)"], "impact_description": "2014년 크림 합병 이후 서방 제재가 시작되자 푸틴 정부는 '수입대체(Импортозамещение)' 정책을 내걸고 국내 산업 보호에 나섰습니다. 검색포털 얀덱스는 구글 제한 조치의 반사이익으로 러시아 인터넷 시장 점유율을 60% 이상으로 높였고, 농기계 제조사 Rostselmash는 외산 농기계 대체를 위한 보조금 지원으로 러시아 내 트랙터 시장의 65%를 차지하게 되었습니다. 제재 하에서 자립을 도모한 이 정책은 제한적 성공을 거두었지만 첨단 반도체 등에서는 여전히 취약점을 드러냈습니다.", "evidence": [{"source_title": "러시아, 제재 대응 수입대체 정책 강화", "url": "https://www.economist.com/europe/2018/07/05/russia-is-struggling-to-replace-western-imports"}, {"source_title": "Yandex Becomes Unlikely Beneficiary of Russia's Tech Clampdown", "url": "https://www.ft.com/content/c0e7d9a2-3fa3-11e9-b896-fe36ec32aece"}]}], "notes": "푸틴 집권기의 러시아 경제는 에너지와 군수에 크게 의존하며, 외부 제재에 적응하는 형태로 전개되었습니다. 본 보고서는 그 중 눈에 띄는 사례들을 추려냈으며, 러시아 기업들은 국가정책 방향에 따라 흥망이 좌우되는 경향이 강함을 보여줍니다."}, "model_response": {"report_title": "블라디미르 푸틴의 정책-산업-기업 영향력 네트워크 분석", "time_range": "2025년 12월 기준", "question_answer": "블라디미르 푸틴은 에너지, 방위, 금융 등 주요 산업 분야에서 정책을 통해 영향력을 행사하고 있습니다. Gazprom, Rosneft, Rostec 등 국영 기업과 로텐부르크, 팀첸코 등 올리가르히와의 연계를 통해 경제적 이익을 창출하며, 제재 회피 및 비서구 국가와의 에너지 협력으로 국제적 영향력을 유지하고 있습니다.", "influence_chains": [{"politician": "Vladimir Putin", "policy": "Energy Strategy to 2030", "industry_or_sector": "Oil & Gas", "companies": ["Gazprom", "Rosneft", "OPEC+ members"], "impact_description": "러시아는 에너지 수출을 통해 GDP의 30%를 차지하며, OPEC+와의 협력을 통해 글로벌 에너지 시장에서 영향력을 행사하고 있습니다. 인도 및 중국에 대한 석유 수출 증가와 제재 회피를 위한 '그림자 함대' 활용이 주요 경제적 영향입니다.", "evidence": [{"source_title": "Wikipedia: Energy Policy of Russia", "url": "https://en.wikipedia.org/wiki/Energy_policy_of_Russia"}, {"source_title": "Atlantic Council: Russia’s Energy Sector as Putin’s Achilles’ Heel", "url": "https://www.atlanticcouncil.org/blogs/ukrainealert/russias-economically-vital-energy-sector-is-vladimir-putins-achilles-heel/"}, {"source_title": "Naver 2: Putin’s Visit to India for Energy and Defense Talks", "url": "https://n.news.naver.com/mnews/article/003/0013628667"}]}, {"politician": "Vladimir Putin", "policy": "State-backed defense industrial complex and arms exports", "industry_or_sector": "Defense/Aerospace", "companies": ["Rostec", "Almaz-Antey", "Kalashnikov"], "impact_description": "러시아는 Rostec을 중심으로 방위 산업체를 통제하며, 세계 최대 무기 수출국 중 하나로 자리매김하고 있습니다. 2024년 방위 예산은 1,488억 달러로, GDP의 10%가 전쟁 관련 산업에 할당되었습니다.", "evidence": [{"source_title": "Wikipedia: Energy Policy of Russia", "url": "https://en.wikipedia.org/wiki/Energy_policy_of_Russia"}]}, {"politician": "Vladimir Putin", "policy": "Import substitution, SPFS payment system, and energy diplomacy", "industry_or_sector": "Finance, Agriculture, Tech", "companies": ["RT-Investment Corporation", "Yandex"], "impact_description": "서방의 제재에 대응해 SPFS 결제 시스템과 Mir 결제 시스템을 도입했으며, 헝가리와 인도는 EU/미국의 압력에도 러시아 에너지 수입을 지속하고 있습니다.", "evidence": [{"source_title": "Naver 1: Poland-Hungary Diplomatic Tensions Over Russian Energy", "url": "https://n.news.naver.com/mnews/article/003/0013631520"}, {"source_title": "Naver 2: Putin’s Visit to India for Energy and Defense Talks", "url": "https://n.news.naver.com/mnews/article/003/0013628667"}]}, {"politician": "Vladimir Putin", "policy": "Long-term energy contracts with non-Western partners", "industry_or_sector": "Energy Trade", "companies": ["Gazprom", "Rosneft"], "impact_description": "비서구 국가와의 장기 에너지 계약을 통해 수익을 확보했으며, 2011년 250억 달러 규모의 중-러 석유 협정과 인도의 러시아 석유 수입 증가(2020년 5만 배럴/일 → 2025년 160만 배럴/일)가 대표적입니다.", "evidence": [{"source_title": "Wikipedia: Energy Policy of Russia", "url": "https://en.wikipedia.org/wiki/Energy_policy_of_Russia"}, {"source_title": "Naver 2: Putin’s Visit to India for Energy and Defense Talks", "url": "https://n.news.naver.com/mnews/article/003/0013628667"}]}, {"politician": "Vladimir Putin", "policy": "National Projects (2018)", "industry_or_sector": "Infrastructure/Tech", "companies": ["RT-Investment Corporation", "Yandex"], "impact_description": "디지털화 및 교통 인프라 확충을 목표로 한 국가 프로젝트를 추진했으나, 관련 증거는 에 명시적으로 제시되지 않았습니다.", "evidence": []}, {"politician": "Vladimir Putin", "policy": "Energy Strategy to 2030", "industry_or_sector": "Energy", "companies": ["StroyGasNefteGas", "StroyGasMontazh"], "impact_description": "푸틴의 친구인 아르카디 로텐부르크와 겐나디 팀첸코가 Gazprom으로부터 934억 달러 규모의 비경쟁적 파이프라인 계약을 획득했습니다.", "evidence": [{"source_title": "Gazprom Insider Pipeline Deals for Putin Cronies Worth $93B", "url": "https://www.intellinews.com/gazprom-insider-pipeline-deals-for-putin-cronies-worth-93bn-analysts-claim-142034"}]}, {"politician": "Vladimir Putin", "policy": "State-backed defense industrial complex and arms exports", "industry_or_sector": "Defense", "companies": ["Rostec"], "impact_description": "푸틴은 우크라이나 전쟁 지원을 위해 Rostec에 Lancet 및 Cube 드론 생산 증대를 지시했습니다.", "evidence": [{"source_title": "Putin Orders Increased Production of Lancet and Cube Drones", "url": "https://v.daum.net/v/20230809083622740"}]}], "notes": ""}} +{"query": "Narendra Modi", "gold_report": {"report_title": "Narendra Modi 인도 총리의 정치·경제 영향력 네트워크 분석", "time_range": "2014–2025년 11월 24일 기준", "question_answer": "나렌드라 모디 총리는 'Make in India' 캠페인을 통해 Foxconn, Tata Motors 등 제조 기업의 투자를 유치하여 인도를 글로벌 생산기지로 부상시켰습니다. 디지털 인디아와 금융 포용 정책으로 Paytm 같은 핀테크와 Reliance Jio 통신사가 폭발적 성장을 이뤘으며, 2016년 화폐개혁(디모네타이제이션)은 디지털 결제 기업에 호재로 작용했습니다. 또한 GST 도입으로 전국 단일시장 형성 등 경제 현대화를 추진하여 기업 경영환경을 개선했으나, 일부 중소상인은 적응에 어려움을 겪기도 했습니다.", "influence_chains": [{"politician": "Narendra Modi", "policy": "Make in India 캠페인", "industry_or_sector": "제조업/전자", "companies": ["Foxconn", "Tata Motors"], "impact_description": "2014년 시작된 Make in India 정책으로 외국 기업의 인도 제조 투자가 대폭 늘었습니다. 아이폰 위탁생산업체 폭스콘은 인도 공장에 수십억 달러를 투자해 2025년까지 일자리 5만 개 창출을 발표했고, Tata Motors는 전기차 및 배터리 생산을 위해 정부 인센티브를 받아 국내 생산능력을 확충했습니다. 이 정책 덕분에 인도 제조업 GDP 비중이 상승했고, 스마트폰 등 여러 제품에서 인도가 조립허브로 떠올랐습니다.", "evidence": [{"source_title": "Foxconn to Invest $5 Billion in India for Manufacturing", "url": "https://www.bloomberg.com/news/articles/2015-08-08/foxconn-said-to-plan-5-billion-investment-in-india-over-5-years"}, {"source_title": "Tata Motors banks on Make in India to drive EV growth", "url": "https://economictimes.indiatimes.com/industry/auto/auto-news/tata-motors-to-drive-in-more-evs-focuses-on-localisation-under-make-in-india/articleshow/86365921.cms"}]}, {"politician": "Narendra Modi", "policy": "디지털 인디아 및 핀테크", "industry_or_sector": "IT/통신·결제", "companies": ["Reliance Jio", "Paytm"], "impact_description": "모디 총리는 2015년 'Digital India' 프로그램으로 전국에 저가 고속인터넷과 디지털 서비스를 확산시켰습니다. Reliance Jio는 파격적인 무료 통신요금 전략과 정부 지원으로 4G 가입자 4억 명을 돌파하며 인도 통신시장을 재편했고, 2016년 화폐개혁 이후 Paytm 등 모바일 결제 플랫폼은 현금 부족 사태 속 폭발적 이용 증가로 거래액이 급증했습니다. 이처럼 정부의 디지털화 드라이브는 인도를 세계 최대 데이터 소비시장으로 만들며 관련 기업들의 급성장을 이끌었습니다.", "evidence": [{"source_title": "Reliance Jio's free data revolution spurred Digital India", "url": "https://www.theguardian.com/technology/2017/sep/21/reliance-jio-mukesh-ambani-india-mobile-internet-free-data-4g"}, {"source_title": "Paytm usage surges after demonetisation", "url": "https://www.bbc.com/news/world-asia-india-37974423"}]}, {"politician": "Narendra Modi", "policy": "GST 도입과 세제 개혁", "industry_or_sector": "물류/소비재", "companies": ["Dabur", "Mahindra Logistics"], "impact_description": "2017년 모디 정부는 인도 전역에 단일 부가가치세(GST)를 도입하여 복잡한 연방별 세금을 통합했습니다. 이로 인해 FMCG(일용소비재) 기업 Dabur는 물류비 절감과 재고회전율 개선으로 이익률이 상승했고, 물류기업 Mahindra Logistics는 창고를 허브화하며 전국 배송 효율이 크게 높아졌습니다. GST 시행 초반 일시적 혼란에도 불구하고 장기적으로는 기업 환경이 투명해지고 국내 무역이 촉진되는 효과를 가져왔습니다.", "evidence": [{"source_title": "GST has cut logistics cost by 20%, says CRISIL", "url": "https://www.financialexpress.com/economy/gst-cut-logistics-cost-by-20-crisil/1190728/"}, {"source_title": "Dabur sees volume growth post GST", "url": "https://www.business-standard.com/article/companies/dabur-india-posts-strong-volume-growth-as-gst-impact-wanes-118020101284_1.html"}]}], "notes": "모디 총리 재임 기간 인도 경제는 구조개혁과 디지털화에 속도를 냈습니다. 본 분석은 그 중 기업에 미친 주요 사례들을 다루었으며, 정책마다 득실이 있었으나 전반적으로 인도 기업의 국제 경쟁력이 제고되는 방향으로 나아갔습니다."}, "model_response": {"report_title": "나렌드라 모디의 정책-산업-기업 영향력 네트워크 분석", "time_range": "2014–2025", "question_answer": "나렌드라 모디 총리는 'Make in India', 'PLI 계획', '국가 태양광 미션' 등 주요 정책을 통해 재생에너지, 제약, 제조업, 반도체, 항공, 인프라 분야에서 Adani Green Energy, Sun Pharma, Apple, Samsung, Tesla, Hyundai, Kia, MG Motor, Tata Group, PSMC, Adani Group 등 기업들과 연결되어 있습니다. 이 연결은 정부 계약, 인센티브, 경제 성장 논의 등을 통해 이루어졌으며, 각 정책은 해당 산업 및 기업에 구체적인 영향을 미쳤습니다.", "influence_chains": [{"politician": "나렌드라 모디", "policy": "국가 태양광 미션 + PLI 계획", "industry_or_sector": "재생에너지", "companies": ["Adani Green Energy"], "impact_description": "Adani Green Energy는 인도 태양에너지 공사로부터 8GW 태양광 프로젝트 및 2GW 제조 시설을 위한 60억 달러 계약을 체결했으며, 이는 모디의 '아탐 니르바르 바라트 아비얀'(자립적 인도 프로그램)과 연결되어 있습니다. 이 프로젝트는 9억 톤의 CO2 배출 감소와 40만 개의 일자리 창출을 목표로 합니다.", "evidence": [{"source_title": "The Hindu", "url": "https://www.thehindu.com/business/Industry/adani-green-energy-ltd-bags-worlds-largest-solar-contract-worth-6-billion/article31784926.ece"}, {"source_title": "Balkan Green Energy News", "url": "https://balkangreenenergynews.com/india-awards-usd-6-billion-solar-power-contract-to-adani-green-energy/"}]}, {"politician": "나렌드라 모디", "policy": "제약 PLI 계획", "industry_or_sector": "제약", "companies": ["Sun Pharma"], "impact_description": "Sun Pharma는 15,000억 루피 규모의 PLI 계획에서 글로벌 매출 5,000억 루피 이상의 '그룹 A' 수혜자로 선정되었으며, 6년간 API 및 의약품 증분 매출에 대한 인센티브를 받게 됩니다.", "evidence": [{"source_title": "NDTV Profit", "url": "https://www.ndtvprofit.com/business/sun-pharma-and-dr-reddys-to-wockhardt-55-pharma-firms-selected-under-pli-scheme"}, {"source_title": "Maritime Gateway", "url": "https://www.maritimegateway.com/sun-pharma-dr-reddys-and-cipla-selected-for-pli-scheme/"}]}, {"politician": "나렌드라 모디", "policy": "Make in India + PLI 계획", "industry_or_sector": "제조업 및 IT", "companies": ["Apple", "Samsung", "Tesla", "Hyundai", "Kia", "MG Motor"], "impact_description": "Apple, Samsung, Tesla, Hyundai, Kia, MG Motor는 FDI 인센티브를 통해 인도에 제조 공장을 설립했습니다. 인도의 '비즈니스 용이성' 순위는 2014년 142위에서 2019년 63위로 상승했습니다.", "evidence": [{"source_title": "NIIR", "url": "https://www.niir.org/blog/the-impact-of-make-in-india-initiative-on-themanufacturing-sector/"}, {"source_title": "Uday India", "url": "https://www.udayindia.in/news/indias-manufacturing-revolution-under-modi-a-decade-of-policy-driven-growth"}]}, {"politician": "나렌드라 모디", "policy": "반도체 프로젝트", "industry_or_sector": "반도체", "companies": ["Tata Sons", "PSMC"], "impact_description": "모디는 Tata Sons 및 PSMC(대만 반도체 기업) 리더들과 만나 인도 내 반도체 제조 프로젝트에 대해 논의했습니다. PSMC는 인도에서 사업 확장을 희망하고 있습니다.", "evidence": [{"source_title": "mid-day.com", "url": "https://www.mid-day.com/news/india-news/article/pm-modi-meets-leadership-team-of-tata-sons-psmc-discusses-semiconductor-manufacturing-projects-23400785"}]}, {"politician": "나렌드라 모디", "policy": "Air India 민영화", "industry_or_sector": "항공", "companies": ["Tata Group"], "impact_description": "모디는 Air India 민영화(2022) 전 Tata Sons 회장과 회담을 가졌으며, 이는 인도 최초의 주요 민영화 거래 중 하나입니다. 이 거래는 Air India의 운영을 Tata에 이전하면서 61,562억 루피 부채 중 46,262억 루피를 특수 목적 차량(AIAHL)에 남겼습니다.", "evidence": [{"source_title": "hindustantimes.com", "url": "https://www.hindustantimes.com/india-news/tata-sons-chairman-meets-pm-modi-before-official-handover-of-air-india-101643275160417.html"}]}, {"politician": "나렌드라 모디", "policy": "경제 성장 전략", "industry_or_sector": "인프라", "companies": ["Adani Group"], "impact_description": "모디는 2020년 경제 성장 및 일자리 창출을 논의하기 위해 Adani Group을 포함한 기업 리더들과 회담을 가졌습니다. 당시 경제 성장률은 2019년 3분기 4.5%로 둔화되었습니다.", "evidence": [{"source_title": "businesstoday.in", "url": "https://www.businesstoday.in/business/news/story/pm-modi-holds-meet-with-indian-business-leaders-ambani-tata-adani-attend-event-241954-2020-01-06"}]}], "notes": ""}} +{"query": "Rishi Sunak", "gold_report": {"report_title": "Rishi Sunak 영국 총리의 정치·경제 영향력 네트워크 분석", "time_range": "2020–2025년 11월 24일 기준", "question_answer": "리시 수낙 총리는 재무장관 시절 코로나19 직격탄을 맞은 경제를 살리기 위해 대규모 임금 보조(Furlough) 정책을 펼쳐 British Airways, 마크스앤드스펜서 등 기업들이 고용을 유지하도록 도왔습니다. 총리 재직 중에는 영국을 AI 혁신 허브로 만들겠다며 AI 안전 서밋을 개최하고 반도체 연구에 투자하여 DeepMind, Graphcore 같은 첨단기업에 우호적 환경을 조성했습니다. 또한 브렉시트 이후 금융규제 개혁을 추진해 런던 금융시장의 경쟁력을 높이려 시도하고 있습니다.", "influence_chains": [{"politician": "Rishi Sunak", "policy": "코로나 고용유지 지원(Furlough)", "industry_or_sector": "항공/소매", "companies": ["British Airways", "Marks & Spencer"], "impact_description": "수낙 총리가 재무장관으로 있던 2020년, 영국 정부는 코로나19 봉쇄로 타격받은 기업 직원을 대상으로 인건비의 80%를 보전해주는 Furlough 제도를 도입했습니다. 그 결과 국제선 운항이 중단된 British Airways는 대규모 정리해고를 피하고 수만 명의 직원을 유지할 수 있었으며, 매장 영업이 막혔던 유통업체 Marks & Spencer도 인력 유지를 통해 팬데믹 후 빠른 영업 재개가 가능했습니다. 이 조치는 18개월간 114억 파운드 규모로 투입되어 실업률 급등을 억제하는 효과를 냈습니다.", "evidence": [{"source_title": "영국 코로나 휴직지원에 900만명 혜택…BA 등 대규모 해고 방지", "url": "https://www.bbc.com/news/business-52528304"}, {"source_title": "Marks & Spencer says furlough scheme crucial to survival", "url": "https://www.theguardian.com/business/2020/may/20/marks-spencer-ms-coronavirus-lockdown"}]}, {"politician": "Rishi Sunak", "policy": "AI·반도체 혁신 지원", "industry_or_sector": "첨단기술/반도체", "companies": ["DeepMind", "Graphcore"], "impact_description": "수낙 총리는 2023년 영국에서 최초의 AI 안전 정상회의를 주최하고, AI 연구 및 반도체 설계 분야에 10억 파운드 이상을 투자하겠다고 발표했습니다. 구글 산하의 인공지능 연구소 DeepMind는 정부의 규제 완화와 런던을 AI 글로벌 허브로 만들겠다는 약속 속에 연구 인력을 확충하고 있고, 영국 팹리스 반도체 스타트업 Graphcore는 정부 지원금과 주문형 반도체 연구 인프라 조성 계획에 힘입어 Nvidia와 경쟁할 수 있는 AI칩 개발에 박차를 가하고 있습니다. 이러한 지원으로 영국 첨단기술 업계는 브렉시트 이후에도 투자 유치를 이어가고 있습니다.", "evidence": [{"source_title": "UK to invest £1 billion in supercomputer and AI chips", "url": "https://www.ft.com/content/2b3f0d58-e1fb-4a8c-a6f7-4f4a7b9becec"}, {"source_title": "Sunak's AI Summit draws DeepMind, OpenAI to UK", "url": "https://www.bloomberg.com/news/articles/2023-10-31/sunak-s-ai-summit-draws-pitches-from-google-s-deepmind-and-openai"}]}, {"politician": "Rishi Sunak", "policy": "금융규제 개혁(에든버러 개혁)", "industry_or_sector": "금융/핀테크", "companies": ["Barclays", "Revolut"], "impact_description": "브렉시트 이후 금융 경쟁력 강화를 위해 수낙 총리는 2022년 말 '에든버러 개혁' 계획을 발표해 EU 규제였던 은행 자기자본 규제 등 일부를 완화하고 핀테크 혁신을 장려했습니다. 이에 따라 Barclays 같은 대형은행은 파생상품 거래 등에서 규제비용이 줄어들 것으로 기대하고 있고, 디지털은행 Revolut는 보다 유연한 규제 환경 속에서 신규 라이선스 취득과 해외 진출에 탄력이 붙을 전망입니다. 다만 이러한 개혁이 2008년 금융위기 이후 강화된 투자자 보호 장치를 약화시킬 수 있다는 우려도 있습니다.", "evidence": [{"source_title": "영국, ‘에든버러 개혁’으로 EU 금융규제 대체…런던 경쟁력 강화 시도", "url": "https://www.economist.com/britain/2022/12/09/britain-unveils-its-biggest-package-of-financial-reforms-in-decades"}, {"source_title": "핀테크 Revolut, 영국 규제 완화 기대 속 성장 가속", "url": "https://www.ft.com/content/0d7451ec-5325-4f50-8af1-349172226ec7"}]}], "notes": "리시 수낙 총리의 경제정책은 팬데믹 대응부터 브렉시트 후속조치까지 폭넓게 전개되었습니다. 영국의 구조적 도전을 마주한 상황에서 단기 응급조치(코로나 지원)와 중장기 경쟁력 강화 전략(AI, 금융)이 혼재되어 있으며, 그 실효성은 향후 몇 년간의 성과에 따라 평가될 것입니다."}, "model_response": {"report_title": "리시 수낵의 정책, 산업 및 기업 연결성 분석", "time_range": "2025년 12월 3일 기준", "question_answer": "제공된 자료만으로는 질문에 대한 정확한 답을 확인하기 어렵다.", "influence_chains": [], "notes": ""}} +{"query": "Emmanuel Macron", "gold_report": {"report_title": "Emmanuel Macron 프랑스 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2017–2025년 11월 24일 기준", "question_answer": "에마뉘엘 마크롱 대통령은 노동시장 유연화와 연금개혁을 단행하여 프랑스 기업들의 인건비 부담을 덜고 고용을 늘리는 기반을 마련했으며, 친환경 정책으로 프랑스 전력공사(EDF)의 원전 투자와 르노 등의 전기차 전환에 박차를 가했습니다. 또한 EU 차원에서 디지털세 추진과 반도체·배터리 육성에 앞장서며 유럽 기업들의 기술 주권을 강화했습니다. 다만 연금개혁에 따른 국민 반발로 사회적 갈등이 일시적으로 기업 활동에 불확실성을 주기도 했습니다.", "influence_chains": [{"politician": "Emmanuel Macron", "policy": "노동법 개혁", "industry_or_sector": "산업 전반/고용", "companies": ["TotalEnergies", "Carrefour"], "impact_description": "2017년 마크롱 정부는 노조와 사회적 합의를 거쳐 해고 절차 완화, 노조교섭 단위 축소 등 노동법 개혁을 실시했습니다. 이에 따라 TotalEnergies 같은 대기업은 인건비 유연성이 높아져 신규 고용과 구조조정에 신속히 대응할 수 있게 되었고, 소매체인 까르푸는 점포 운영시간 연장과 주말 노동투입 등 생산성 향상 방안을 원활히 시행할 수 있었습니다. 이 개혁 이후 프랑스 실업률은 10%대에서 7%대로 하락하며 기업들의 고용여건이 개선되었습니다.", "evidence": [{"source_title": "마크롱 노동개혁 후 프랑스 실업률 최저치 기록", "url": "https://www.reuters.com/article/us-france-reform-employment-idUSKCN1M01R3"}, {"source_title": "Carrefour welcomes new labor flexibility under Macron", "url": "https://www.ft.com/content/2e3f4d62-d353-11e7-a303-9060cb1e5f44"}]}, {"politician": "Emmanuel Macron", "policy": "연금개혁 추진", "industry_or_sector": "공공재정/시장", "companies": ["BNP Paribas", "AXA"], "impact_description": "2023년 마크롱 대통령은 연금정년을 62세에서 64세로 상향하는 개혁을 강행하여 장기적으로 재정안정과 노동인구 증가를 도모했습니다. 이에 프랑스 최대 은행 BNP파리바는 국가신용도 유지와 금리안정의 간접 혜택을 기대할 수 있었고, 대형 보험사 AXA는 민영 연금상품 수요 증가에 대비해 상품 개발을 서둘렀습니다. 다만 연금개혁 과정에서 대규모 파업이 발생해 단기적으로 소비와 생산에 지장을 초래하기도 했습니다.", "evidence": [{"source_title": "프랑스 연금개혁 통과…BNP파리바 등 금융권 '환영'", "url": "https://www.bloomberg.com/news/articles/2023-04-14/bnp-paribas-says-pension-reform-is-good-for-france-s-economy"}, {"source_title": "AXA sees opportunities in Macron pension reform", "url": "https://www.reuters.com/business/finance/insurer-axa-sees-opportunity-french-pension-reform-2023-01-23/"}]}, {"politician": "Emmanuel Macron", "policy": "친환경·산업 주권 정책", "industry_or_sector": "에너지/제조", "companies": ["EDF", "STMicroelectronics"], "impact_description": "마크롱 대통령은 파리협정 이행과 에너지 안보 강화를 위해 원전 부흥과 배터리·반도체 등 전략산업 육성을 추진했습니다. 이에 따라 프랑스전력公(EDF)은 신규 원자로 건설과 노후원전 수명연장에 정부 지원을 받아 대규모 투자를 진행하고, 유럽 반도체 기업 ST마이크로일렉트로닉스는 프랑스 정부 보조금을 통해 그르노블 공장 증설 및 차세대 칩 R&D에 박차를 가했습니다. 이 같은 정책으로 프랑스는 유럽 배터리 연합 및 반도체 동맹의 중심에 서서 관련 기업들의 공급망 자립을 도왔습니다.", "evidence": [{"source_title": "Macron bets on nuclear revival, EDF to build new reactors", "url": "https://www.ft.com/content/039e8c38-0b9e-11ea-b2d6-9bf4d1957a67"}, {"source_title": "STMicro to get French aid for chip plant expansion", "url": "https://www.reuters.com/technology/france-italy-pledge-funds-stmicroelectronics-chip-plant-2022-07-11/"}]}], "notes": "에마뉘엘 마크롱 정부는 친시장 개혁과 유럽 차원의 산업 전략을 병행하였습니다. 노동 및 연금개혁은 단기 사회 갈등에도 불구하고 중장기적으로 기업 활력을 높이는 데 기여했고, 프랑스 주도의 EU 산업정책은 공급망 다변화 시대에 자국 기업 보호 및 육성으로 이어지고 있습니다."}, "model_response": {"report_title": "에마뉘엘 마크롱의 정책, 산업, 기업 간 영향력 네트워크 분석", "time_range": "2017–2025", "question_answer": "에마뉘엘 마크롱은 방위, 재생에너지, 디지털 전환, EU 무역 협정, 한국-프랑스 협력, 교통 분야에서 다양한 정책과 기업들과 연결되어 있습니다. 방위 산업에서는 Thalès, Renault, KNDS France/MBDA가 혜택을 받았으며, 재생에너지 분야에서는 풍력 및 태양광 산업이 영향을 받았습니다. 디지털 전환 분야에서는 Mistral AI, Dataiku와 같은 기업들이 참여했습니다. 그러나 EU 무역 협정과 한국-프랑스 협력 분야에서는 특정 기업이 명시되지 않았습니다. 또한, Uber와 같은 교통 분야 기업과도 관련이 있습니다.", "influence_chains": [{"politician": "Emmanuel Macron", "policy": "Macron’s 'war economy' and NATO-aligned defense spending increase (3.5% GDP by 2027)", "industry_or_sector": "Defense", "companies": ["Thalès", "Renault", "KNDS France/MBDA"], "impact_description": "Thalès tripled radar output, hired 9,000 defense workers, and invested €750M in French factories. Renault shifted production to military aircraft calculators and drones. KNDS France/MBDA accelerated artillery and missile production.", "evidence": [{"source_title": "marketplace.org", "url": "https://www.marketplace.org/story/2025/08/13/french-factories-benefit-from-boosted-defense-spending"}]}, {"politician": "Emmanuel Macron", "policy": "2023 Renewable Energy Acceleration Bill (part of 'France 2030' plan)", "industry_or_sector": "Onshore wind/solar", "companies": [], "impact_description": "The 2023 Renewable Energy Acceleration Bill aims to double renewables to 40% of consumption by 2030.", "evidence": [{"source_title": "dodspoliticalintelligence.com", "url": "https://www.dodspoliticalintelligence.com/resources/guide-to-frances-new-law-to-accelerate-renewable-energy-projects/"}]}, {"politician": "Emmanuel Macron", "policy": "France 2030 (AI funding)", "industry_or_sector": "Digital Transformation", "companies": ["Mistral AI", "Dataiku"], "impact_description": "Mistral AI develops open-source LLMs. Dataiku’s platform supports non-technical users through a 'no-code' interface, enabling tasks like data preprocessing and connecting large language models (LLMs) for chatbot development.", "evidence": [{"source_title": "lafrenchtech.gouv.fr", "url": "https://lafrenchtech.gouv.fr/fr/programme/french-tech-2030/"}, {"source_title": "ainewshub.org", "url": "https://www.ainewshub.org/post/top-8-french-ai-startups-shaping-the-future-of-tech-industries-in-2025"}, {"source_title": "naver_search Source 2", "url": "https://n.news.naver.com/mnews/article/009/0005539552?sid=105"}]}, {"politician": "Emmanuel Macron", "policy": "EU Trade Agreements", "industry_or_sector": "EU Trade Agreements", "companies": [], "impact_description": "No direct beneficiaries identified in any source. Post-Brexit challenges (e.g., rules of origin, tariffs) were noted, but no explicit evidence of French companies leveraging EU trade deals.", "evidence": [{"source_title": "nordfranceinvest.com", "url": "https://www.nordfranceinvest.com/expert-insights/after-brexit-start-or-adapt-your-business-in-france/"}]}, {"politician": "Emmanuel Macron", "policy": "G20 discussions on AI, nuclear/renewable energy, and defense (aviation/guided weapons)", "industry_or_sector": "Korea-France Cooperation", "companies": [], "impact_description": "Strategic partnerships in energy transition (e.g., green hydrogen) and defense systems, but no specific firms named.", "evidence": [{"source_title": "ziksir.com", "url": "https://www.ziksir.com/news/articleView.html?idxno=113445"}]}, {"politician": "Emmanuel Macron", "policy": "Taxi law revisions", "industry_or_sector": "Transportation", "companies": ["Uber"], "impact_description": "Macron, as Economy Minister, agreed to revise taxi laws in Uber's favor despite violent protests by French taxi drivers.", "evidence": [{"source_title": "BBC Korean", "url": "https://www.bbc.com/korean/62119816"}]}, {"politician": "Emmanuel Macron", "policy": "Pro-business economic strategy", "industry_or_sector": "Global Business", "companies": ["Microsoft", "Amazon", "Pfizer", "AstraZeneca"], "impact_description": "Despite political uncertainty, no foreign investments announced earlier in 2023 (e.g., €15bn from Microsoft, Amazon, Pfizer, and AstraZeneca) have been canceled.", "evidence": [{"source_title": "The Guardian", "url": "https://www.theguardian.com/world/article/2024/jul/25/emmanuel-macron-woos-top-global-business-chiefs-at-lavish-elysee-lunch"}]}], "notes": ""}} +{"query": "Volodymyr Zelensky", "gold_report": {"report_title": "Volodymyr Zelensky 우크라이나 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2019–2025년 11월 24일 기준", "question_answer": "볼로디미르 젤렌스키 대통령은 2022년 러시아 침공에 맞서 서방의 군사지원을 이끌어내며 Lockheed Martin, BAE Systems 등 글로벌 방산 기업들의 수주가 급증하는 간접 효과를 주었습니다. 국내적으로는 반부패 개혁과 올리가르히(재벌) 견제를 추진하여 PrivatBank 국유화 등 금융 부문의 투명성을 높였고, 전시경제 하에서도 전력·농업 인프라 복구에 집중 투자하여 DTEK, Kernel과 같은 기업들이 국제기구 지원 아래 재건 사업에 참여하도록 독려했습니다. 전쟁이 장기화됨에 따라 우크라이나 재건 계획은 Bechtel 등 해외 건설사의 관심을 모으고 있습니다.", "influence_chains": [{"politician": "Volodymyr Zelensky", "policy": "서방 군사지원 외교", "industry_or_sector": "방위산업/국제", "companies": ["Lockheed Martin", "BAE Systems"], "impact_description": "젤렌스키 대통령은 연일 미국과 NATO 동맹국을 상대로 무기 지원을 호소하여, HIMARS 로켓과 전차, 포탄 등이 대거 우크라이나로 지원되었습니다. 그에 따라 미 방산업체 록히드마틴은 HIMARS 생산라인을 증설해 주문량을 늘렸고, 영국 BAE 시스템즈는 우크라이나에 곡사포와 장갑차 수출이 증가하면서 2022~2023년 실적이 크게 향상되었습니다. 젤렌스키의 외교 행보는 서방 방산기업들에게 예상치 못한 특수를 안겨준 셈입니다.", "evidence": [{"source_title": "우크라 전쟁 특수, 미 방산업체 실적 급등", "url": "https://www.wsj.com/articles/lockheed-martin-earnings-ukraine-war-11670969844"}, {"source_title": "BAE Systems, 우크라 지원에 힘입어 신규 수주 기록", "url": "https://www.bloomberg.com/news/articles/2023-07-27/bae-systems-lands-record-orders-on-ukraine-boost-raises-outlook"}]}, {"politician": "Volodymyr Zelensky", "policy": "반부패·재벌 개혁", "industry_or_sector": "금융/철강", "companies": ["PrivatBank", "Metinvest"], "impact_description": "젤렌스키 집권 초기부터 부패 척결과 올리가르히 축소에 방점을 찍어왔습니다. 2016년 부실사태를 맞은 최대 민영은행 프리바트뱅크를 국유화하고, 2021년에는 올리가르히(재벌) 등록법을 제정하여 철강재벌 리나트 아흐메토프가 소유한 Metinvest 등 거대 기업들의 정치 영향력을 제한했습니다. 이러한 조치는 국제통화기금(IMF) 지원 조건이기도 했으며, 우크라이나 금융시스템 안정과 대외신인도 제고에 기여했으나 올리가르히 경제력 집중은 여전히 과제로 남아있습니다.", "evidence": [{"source_title": "우크라이나, 최대은행 PrivatBank 국유화", "url": "https://www.reuters.com/article/us-ukraine-crisis-privatbank-idUSKBN1480RX"}, {"source_title": "Zelenskiy signs law curbing oligarchs' influence", "url": "https://www.bloomberg.com/news/articles/2021-11-05/ukraine-s-zelenskiy-signs-law-curbing-oligarchs-influence"}]}, {"politician": "Volodymyr Zelensky", "policy": "인프라 재건 및 에너지 복구", "industry_or_sector": "전력/건설", "companies": ["DTEK", "Bechtel"], "impact_description": "전쟁으로 파괴된 인프라를 복구하기 위해 젤렌스키 대통령은 2023년부터 '우크라이나 재건 계획'을 추진하고 있습니다. 최대 민간 전력회사 DTEK는 정부 및 국제 원조로 피해입은 발전소와 송전망을 긴급 복구하여 작동시켰고, 미국 건설사 Bechtel은 우크라이나 정부와 재건 사업 협력 MOU를 체결하고 향후 철도·교량 재건 입찰 참여를 준비 중입니다. 이러한 노력은 전시에도 불구하고 국민 생활을 지탱하고, 향후 수백조원 규모로 예상되는 재건 시장에서 글로벌 기업들의 관심을 모으고 있습니다.", "evidence": [{"source_title": "DTEK restores power for millions amid ongoing strikes", "url": "https://news.yahoo.com/ukraines-dtek-restores-power-millions-123456789.html"}, {"source_title": "Ukraine signs deal with Bechtel on reconstruction projects", "url": "https://www.reuters.com/world/europe/ukraine-signs-deal-with-bechtel-cooperate-reconstruction-projects-2023-05-22/"}]}], "notes": "젤렌스키 대통령의 임기 중 2022년 이후 전쟁상황이 기업환경에 막대한 영향을 주었으며, 본 분석은 그 가운데서도 주요한 경제적 연쇄 효과를 추린 것입니다. 우크라이나의 재건은 진행형으로, 향후 국제사회의 지원과 기업들의 참여에 따라 성과가 가시화될 전망입니다."}, "model_response": {"report_title": "볼로디미르 젤렌스키의 정책, 산업 및 기업 연결성 분석", "time_range": "2025-12-03 기준", "question_answer": "볼로디미르 젤렌스키는 반부패 개혁, 토지 시장 개혁, 디지털 전환 등의 정책을 추진했으며, 이는 농업, IT, 에너지 분야와 Naftogaz, Datagroup과 같은 기업들과 연결되었습니다. 그러나 정책의 직접적인 경제적 영향이나 특정 올리가르흐와의 개인적 관계에 대한 명확한 증거는 부족합니다.", "influence_chains": [{"politician": "Volodymyr Zelensky", "policy": "반부패 개혁, 분권화, EU/NATO 통합, 토지 시장 개혁, 디지털 전환", "industry_or_sector": "농업, IT, 에너지", "companies": ["Naftogaz", "Datagroup"], "impact_description": "젤렌스키의 정책은 농업, IT, 에너지 분야에 영향을 미쳤으며, Naftogaz와 Datagroup과 같은 기업들이 정책 문서에서 언급되었습니다. 그러나 구체적인 증거 소스는 제공되지 않았습니다.", "evidence": []}], "notes": ""}} +{"query": "Fumio Kishida", "gold_report": {"report_title": "기시다 후미오 일본 총리의 정치·경제 영향력 네트워크 분석", "time_range": "2021–2025년 11월 24일 기준", "question_answer": "기시다 총리는 방위비를 대폭 증액하여 미쓰비시중공업 등 방산기업에 새로운 성장 기회를 제공했고, 핵심전략산업(반도체·배터리)에 보조금을 지급하여 일본 기업의 국내 투자와 TSMC 등의 유치를 이끌었습니다. 또한 '새로운 자본주의' 기치 하에 기업들에 임금 인상과 투자 확대를 독려하여 소니, 도요타 등에서 기록적인 임금인상 합의를 끌어냈습니다. 이러한 정책들은 장기 정체에 빠진 일본 경제에 변화를 주려는 시도로 평가되나, 재원 마련과 구조개혁의 한계로 효과가 부분적이라는 지적도 있습니다.", "influence_chains": [{"politician": "Fumio Kishida", "policy": "방위비 증액 정책", "industry_or_sector": "방위산업", "companies": ["Mitsubishi Heavy Industries", "IHI Corporation"], "impact_description": "2022년 기시다 내각은 안보환경 악화를 이유로 GDP 대비 방위비를 1%대에서 2%로 올리기로 결정했습니다. 이로써 미쓰비시중공업은 장거리 미사일 개발과 함정 건조 등 새로운 방위사업을 수주하여 주가가 2023년에 크게 상승했고, 항공엔진 제조사 IHI도 전투기 엔진 및 우주방위 관련 예산 증가로 연구개발 기회가 확대되었습니다. 방위산업 전반에 수십년 만의 특수가 찾아와 일본 기업들의 방산 부문 투자가 늘어나는 계기가 되었습니다.", "evidence": [{"source_title": "일본, 방위비 2배로…미쓰비시重 등 방산주 강세", "url": "https://www.wsj.com/articles/japan-defense-stocks-surge-on-budget-hike-11671234567"}, {"source_title": "IHI, 전투기 엔진 개발 참여...방위비 증액 수혜", "url": "https://asia.nikkei.com/Business/Aerospace-Defense/IHI-s-military-engine-unit-set-for-lift-off-under-Japan-defense-plan"}]}, {"politician": "Fumio Kishida", "policy": "산업부흥 보조금 (반도체 등)", "industry_or_sector": "반도체/배터리", "companies": ["TSMC Japan", "Toyota-Panasonic (Prime Planet Energy)"], "impact_description": "기시다 총리는 공급망 안보와 첨단 산업 육성을 위해 해외 첨단기업 유치와 국내 설비 투자에 막대한 보조금을 지급했습니다. 세계 1위 파운드리 TSMC는 구마모토현에 소니와 합작으로 반도체 공장을 건설하며 일본 정부로부터 약 4,760억 엔의 지원을 받아 2024년 가동 예정이고, 도요타-파나소닉 배터리 합작사 Prime Planet Energy는 차량용 배터리 공장 증설에 정부 지원금을 확보해 생산능력을 확대하고 있습니다. 이같은 산업 정책은 일본 제조업의 기술 주권을 강화하고 하이테크 부문의 고용을 창출하는 효과를 거두고 있습니다.", "evidence": [{"source_title": "TSMC, 일본 소니와 구마모토에 반도체 공장…정부 4760억엔 지원", "url": "https://www.reuters.com/technology/tsmc-plans-build-second-japan-chip-plant-report-2023-02-24/"}, {"source_title": "일본, 배터리 공장 7곳에 3300억엔 보조금 지원", "url": "https://asia.nikkei.com/Business/Energy/Japan-to-subsidize-battery-plants-by-Panasonic-Toshiba-and-GS-Yuasa"}]}, {"politician": "Fumio Kishida", "policy": "신자본주의 (임금인상 촉구)", "industry_or_sector": "경영/노동", "companies": ["Toyota", "Sony"], "impact_description": "기시다 총리는 '새로운 자본주의' 슬로건 아래 기업들에게 임금 인상과 사내유보 활용을 촉구했습니다. 그 결과 2023년 춘투(봄철 임금교섭)에서 도요타는 약 20년만에 최고 수준의 임금인상을 단행했고, 소니도 기본급 7% 인상과 보너스 확대를 결정하여 노동자들의 실질임금 상승을 이루었습니다. 이는 일본 경제의 구조적 과제였던 임금 정체를 완화하고 소비 진작에 기여할 조짐을 보였으나, 한편으로 기업 수익성 압박과 중소기업 미흡 등 한계도 지적됩니다.", "evidence": [{"source_title": "도요타, 기시다 요청에 화답…전 직원 임금 9% 인상", "url": "https://www.japantimes.co.jp/news/2023/02/23/business/corporate-business/toyota-wage-hike-agreement/"}, {"source_title": "소니, 26년만에 최고 임금인상…기시다 '임금UP' 가속", "url": "https://www.bloomberg.com/news/articles/2023-03-29/sony-to-raise-base-pay-by-7-highest-hike-in-two-decades"}]}], "notes": "기시다 후미오 총리의 경제정책은 아베노믹스 이후 일본의 새로운 방향 모색으로 볼 수 있습니다. 방위비 증액과 산업지원은 안보와 성장 두 마리 토끼를 잡으려는 전략이며, 임금인상 유도는 디플레이션 탈출을 위한 사회적 노력의 일환입니다. 정책 효과는 아직 진행형으로, 향후 일본 경제의 활력 회복 여부에 따라 평가가 달라질 것입니다."}, "model_response": {"report_title": "기시다 후미오의 정치-경제적 영향력 네트워크 분석", "time_range": "2025-12-03 기준", "question_answer": "제공된 자료만으로는 질문에 대한 정확한 답을 확인하기 어렵다.", "influence_chains": [], "notes": ""}} +{"query": "Mohammed bin Salman", "gold_report": {"report_title": "무함마드 빈 살만 사우디 왕세자의 정치·경제 영향력 네트워크 분석", "time_range": "2016–2025년 11월 24일 기준", "question_answer": "무함마드 빈 살만 왕세자는 'Vision 2030'을 통해 Saudi Aramco 상장과 석유산업 민영화로 막대한 자금을 조달하고, NEOM 스마트시티 등 초대형 프로젝트를 추진하여 건설·관광 분야에 Bechtel, Bouygues 등 글로벌 기업을 끌어들였습니다. 또한 OPEC+ 감산을 주도하여 유가를 부양함으로써 Aramco와 SABIC 등 사우디 에너지·석유화학 기업의 수익을 극대화했습니다. 동시에 Public Investment Fund(PIF)를 활용해 Lucid Motors, SoftBank Vision Fund 등에 투자하여 사우디 경제를 다각화하려는 노력을 기울이고 있습니다.", "influence_chains": [{"politician": "Mohammed bin Salman", "policy": "Vision 2030 경제개혁", "industry_or_sector": "국부펀드/투자", "companies": ["Saudi Aramco", "Lucid Motors"], "impact_description": "2016년 발표된 Vision 2030에 따라 MBS는 국영 석유회사 Saudi Aramco 지분 일부를 2019년 국내 상장시켜 약 294억 달러를 조달하며 세계 최대 IPO를 기록했습니다:contentReference[oaicite:44]{index=44}. 이를 통해 확보한 자금은 사우디 국부펀드(PIF)에 투입되어 전기차 기업 Lucid Motors 지분 인수 등 해외 첨단산업 투자로 이어졌습니다. 그 결과 Lucid는 사우디에 공장 건설을 약속받고 PIF로부터 10억 달러 추가 투자를 유치하는 등 사우디의 전략적 투자 파트너로 부상했습니다. 이러한 경제개혁 조치는 사우디 경제의 탈석유화를 촉진하고 있습니다.", "evidence": [{"source_title": "사우디 아람코 IPO, 세계 최고 시가총액 기업 등극", "url": "https://www.reuters.com/article/us-saudi-aramco-ipo-idUSKBN1YI14V"}, {"source_title": "사우디 PIF, Lucid 모터스에 추가 투자…현지 생산 추진", "url": "https://www.bloomberg.com/news/articles/2023-05-03/saudi-arabia-s-pif-nears-deal-for-new-funding-for-ev-maker-lucid"}]}, {"politician": "Mohammed bin Salman", "policy": "OPEC+ 감산 및 유가 정책", "industry_or_sector": "석유/화학", "companies": ["Saudi Aramco", "SABIC"], "impact_description": "MBS는 2017년 이후 러시아 등 산유국과 OPEC+ 동맹을 맺어 산유량 조절을 주도했습니다. 특히 2020년 팬데믹과 2022년 우크라이나 전쟁 시기에 대규모 감산 합의를 이끌어내어 국제 유가를 부양함으로써, Saudi Aramco의 2022년 순이익이 전년 대비 2배 이상 폭증하고:contentReference[oaicite:45]{index=45} 석유화학 기업 SABIC도 고유가로 인한 원료가격 상승분을 판매가에 전가해 수익 개선을 누렸습니다. 유가 상승은 사우디 재정을 흑자로 돌려놓았고, MBS는 이를 재투자해 미래 사업에 재원을 투입하는 선순환을 만들고 있습니다.", "evidence": [{"source_title": "사우디 아람코, 2022년 사상 최대 1611억달러 순이익 기록", "url": "https://www.bbc.com/news/business-64932727"}, {"source_title": "OPEC+ 감산 결정, 글로벌 유가 4%↑…사우디 주도", "url": "https://www.reuters.com/markets/commodities/opec-surprise-output-cuts-send-oil-prices-soaring-2023-04-02/"}]}, {"politician": "Mohammed bin Salman", "policy": "초대형 프로젝트(NEOM 등)", "industry_or_sector": "건설/관광", "companies": ["Bechtel", "Marriott International"], "impact_description": "빈 살만 왕세자는 5000억 달러 규모 미래형 도시 '네옴(Neom)'과 홍해 관광단지 등 초대형 프로젝트를 추진하여 글로벌 건설·관광기업을 사우디로 불러들이고 있습니다. 미국 건설사 Bechtel은 네옴의 첨단 신도시 '더 라인(The Line)' 건설관리 계약을 체결했고:contentReference[oaicite:46]{index=46}, 메리어트 등 세계적 호텔 체인은 홍해 프로젝트에 고급 리조트를 운영하기로 하는 등 사우디 관광산업 진출을 확대하고 있습니다. 이러한 메가프로젝트는 사우디 건설업에 활황을 가져와 현지 건설사와 외국 기업 모두에게 큰 기회가 되고 있습니다.", "evidence": [{"source_title": "Bechtel lands contract for NEOM The Line project", "url": "https://www.constructionweekonline.com/projects-tenders/bechtel-neom-the-line-project-management"}, {"source_title": "Marriott to open three luxury resorts in Saudi Red Sea project", "url": "https://www.hoteliermiddleeast.com/business/marriott-red-sea-saudi"}]}], "notes": "MBS의 주도로 사우디는 석유 중심에서 탈피해 미래 성장동력을 찾고자 노력 중이며, 그 과정에서 국내외 기업들의 참여를 적극 유도하고 있습니다. 정책 추진은 왕정체제의 강력한 드라이브로 단기간에 성과를 내고 있으나, 정치적 위험과 인권 문제 등이 외국 투자에 변수로 작용할 수 있습니다."}, "model_response": {"report_title": "모하메드 빈 살만의 정책, 산업 및 기업 연결성 분석", "time_range": "2025-12-03 기준", "question_answer": "제공된 자료만으로는 질문에 대한 정확한 답을 확인하기 어렵다.", "influence_chains": [], "notes": ""}} diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/dev_test/influence_model_responses_3.jsonl b/usecase/solar-political-influence-analyzer/src/ai-engine/dev_test/influence_model_responses_3.jsonl new file mode 100644 index 0000000..daa5021 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/dev_test/influence_model_responses_3.jsonl @@ -0,0 +1,19 @@ +{"query": "윤석열", "gold_report": {"report_title": "윤석열 전 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2025년 11월 24일 기준", "question_answer": "윤석열 전 대통령은 원전 확대 정책으로 두산에너빌리티와 한국전력 등 원전 관련 기업에 수혜를 주었으며, 동시에 원전 중심 기조는 한화솔루션의 태양광 사업에 부정적 영향을 미쳤습니다. 또한 국방비 증액과 기술 육성 정책으로 방산 및 첨단산업 기업의 성장에 기여했으며, 미국·일본과의 동맹 강화 및 중동 경제협력 확대를 통해 국제적 영향력을 도모했습니다.", "influence_chains": [{"politician": "윤석열", "policy": "원전 확대 정책", "industry_or_sector": "에너지/원전", "companies": ["두산에너빌리티"], "impact_description": "윤석열 정부가 신한울 3·4호기 건설 등 원전 사업을 재개하면서 두산에너빌리티가 원전 주기기 제작 수주와 SMR 기술 개발 지원을 받는 등 직접적 수혜를 입었습니다:contentReference[oaicite:0]{index=0}. 글로벌 에너지 위기 속 원전 수요 증가로 해당 기업의 재무 실적도 개선되었습니다.", "evidence": [{"source_title": "윤석열 정책 수혜주 2편] 전 두산중공업(현 두산에너빌리티), 친원전 ...", "url": "https://contents.premium.naver.com/richplatform/therichplatform/contents/220416185027884GB"}]}, {"politician": "윤석열", "policy": "원전 중심 에너지정책", "industry_or_sector": "신재생에너지/태양광", "companies": ["한화솔루션"], "impact_description": "원전 위주의 에너지 정책으로 국내 태양광 수요가 위축되면서 한화솔루션의 태양광 사업 실적이 부진해졌습니다. 한편 미국의 IRA 정책 등에 힘입어 한화솔루션은 베트남·미국에 투자하며 해외 시장을 공략했고, 국방 분야 SMR 추진으로 일부 수혜를 보았습니다:contentReference[oaicite:1]{index=1}:contentReference[oaicite:2]{index=2}.", "evidence": [{"source_title": "엇갈린 K-태양광 실적⋯OCI 웃고 한화 울고", "url": "https://www.etoday.co.kr/news/view/2524466"}, {"source_title": "[이재명 시대, 이 기업을 주목하라]⑩ 한화솔루션ㆍOCI홀딩스", "url": "https://www.dnews.co.kr/uhtml/view.jsp?idxno=202507031419058310351"}]}, {"politician": "윤석열", "policy": "국방·기술 육성 정책", "industry_or_sector": "방위산업/첨단기술", "companies": ["한화에어로스페이스"], "impact_description": "윤석열 정부는 국방예산 증액과 12대 국가전략기술 육성을 추진하여 한화에어로스페이스 등 방위산업 기업의 수주 확대와 R&D 투자를 뒷받침했습니다:contentReference[oaicite:3]{index=3}:contentReference[oaicite:4]{index=4}. 이를 통해 국내 방산업체들은 첨단 무기 개발과 수출에 탄력을 받았습니다.", "evidence": [{"source_title": "尹 취임 2년차, 정책수혜株가 뜬다…방산·원전·콘텐츠株 주목 - 한국경제", "url": "https://www.hankyung.com/economy/article/2023050451426"}]}], "notes": "모든 정보는 2025년 11월 24일 기준이며, 윤석열 전 대통령의 정책들은 현재 이재명 정부에서 수정 또는 재평가되고 있습니다. 일부 데이터는 언론 보도와 간접 추론을 기반으로 합니다."}, "model_response": {"report_title": "윤석열 대통령의 정책 및 정치적 영향력에 대한 분석 보고서", "time_range": "2023년 ~ 2025년 12월 5일", "question_answer": "윤석열 대통령은 주택 공급 확대, 드론 및 2차 전지 산업 지원 등 주요 정책을 통해 건설업 및 기술 산업에 영향을 미쳤으며, 탄핵 소추와 같은 정치적 사건으로 특정 기업 주가에 변동을 초래했습니다. 그러나 삼성, 현대, SK그룹 등 주요 대기업 및 로비/재정적 연계에 대한 증거는 확인되지 않았습니다.", "influence_chains": [{"politician": "윤석열", "policy": "주택 공급 확대 정책", "industry_or_sector": "건설업", "companies": ["일성건설 (Ilseong Construction)"], "impact_description": "윤석열 정부의 주택 공급 확대 정책으로 인해 일성건설 주가가 29.95% 상승함", "evidence": [{"source_title": "Topstar News (Construction)", "url": "https://www.topstarnews.net/news/articleView.html?idxno=15895464"}]}, {"politician": "윤석열", "policy": "드론 및 2차 전지 산업 지원 정책", "industry_or_sector": "드론/2차 전지 산업", "companies": ["PC Direct", "Jungang Advanced Materials"], "impact_description": "윤석열 정부의 드론 및 2차 전지 산업 지원 정책으로 PC Direct와 Jungang Advanced Materials가 정책 관련 기업으로 부각됨", "evidence": [{"source_title": "Naver News (Welbiotech)", "url": "https://n.news.naver.com/mnews/article/036/0000052260"}]}, {"politician": "윤석열", "policy": "탄핵 소추", "industry_or_sector": "주식 시장", "companies": ["노루홀딩스 (Noroo Holdings)", "덕성 (Deoksung)", "삼부토건 (Sambu Construction)", "NE능률 (NE Rate)", "희림 (Heelim)"], "impact_description": "윤석열 대통령 탄핵 소추로 노루홀딩스 주가 0.60% 상승, 덕성 12.17% 하락, 삼부토건 3.31% 하락, NE능률 2.83% 하락, 희림 주가 변동 없음", "evidence": [{"source_title": "Gukje News (Impeachment)", "url": "https://www.gukjenews.com/news/articleView.html?idxno=3160824"}]}, {"politician": "윤석열", "policy": "우크라이나 재건 테마", "industry_or_sector": "주식 시장", "companies": ["Welbiotech", "삼부토건 (Sambu Construction)"], "impact_description": "우크라이나 재건 테마를 이용한 주가 조작 혐의로 Welbiotech와 삼부토건 조사 받음", "evidence": [{"source_title": "Naver News (Welbiotech)", "url": "https://n.news.naver.com/mnews/article/036/0000052260"}]}], "notes": ""}} +{"query": "이재명", "gold_report": {"report_title": "이재명 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2025년 11월 24일 기준", "question_answer": "이재명 대통령은 AI와 신재생에너지 육성 정책을 통해 삼성전자, 한화솔루션 등 미래 산업 기업들의 성장동력을 마련했으며, 남북 관계 개선 구상을 바탕으로 개성공단 입주 기업과 대북 사업 분야에도 긍정적 기대를 불러일으켰습니다. 동시에 지역화폐 지원 등 중소상공인 활성화 정책으로 핀테크 기업들의 수혜를 도모하고 있습니다.", "influence_chains": [{"politician": "이재명", "policy": "AI 산업 육성 정책", "industry_or_sector": "ICT/인공지능", "companies": ["네이버", "SK텔레콤"], "impact_description": "이재명 정부는 'AI 3대 강국 도약'을 기치로 AI 연구개발을 적극 지원하고 있습니다. 그 결과 네이버, SK텔레콤 등 국내 AI 선도 기업들이 정부 주도 ‘국가대표 AI 기업’으로 선정되어 AI 모델 개발 프로젝트에 참여하며 주가와 투자심리가 개선되었습니다:contentReference[oaicite:5]{index=5}:contentReference[oaicite:6]{index=6}. 정부의 지속적인 지원으로 해당 기업들은 AI 인프라 확대와 글로벌 경쟁력 강화의 혜택을 보고 있습니다.", "evidence": [{"source_title": "이재명정부 5년 청사진 곧 등장…장밋빛전망 가득한 ‘3대 정책 수혜주’", "url": "https://www.ledesk.co.kr/view.php?uid=13714"}]}, {"politician": "이재명", "policy": "신재생에너지 확대 정책", "industry_or_sector": "에너지/신재생", "companies": ["한화솔루션", "씨에스윈드"], "impact_description": "탄소중립 실현과 에너지 전환 가속화 목표 아래 이재명 정부는 풍력·태양광 산업 육성에 박차를 가하고 있습니다. 이에 따라 국내 1위 태양광 기업 한화솔루션과 풍력 설비 업체 씨에스윈드 등이 정책적 지원으로 실적 개선과 성장성 확보에 긍정적 영향을 받고 있습니다:contentReference[oaicite:7]{index=7}:contentReference[oaicite:8]{index=8}. 또한 전력 인프라 분야 기업들(HD현대일렉트릭 등)도 재생에너지 확대에 따른 투자 확대 수혜주로 부각되었습니다.", "evidence": [{"source_title": "이재명정부 5년 청사진 곧 등장…장밋빛전망 가득한 ‘3대 정책 수혜주’", "url": "https://www.ledesk.co.kr/view.php?uid=13714"}]}, {"politician": "이재명", "policy": "남북 경협 재개 구상", "industry_or_sector": "남북경협/개성공단", "companies": ["좋은사람들", "아난티"], "impact_description": "이재명 대통령이 남북 대화 재개와 접경지역 개발 의지를 밝힘에 따라 개성공단 재가동 등 남북경협 기대감이 높아졌습니다. 이에 개성공단에 공장을 둔 속옷 업체 좋은사람들, 금강산 관광 관련 리조트 사업을 했던 아난티 등의 주가가 급등하는 등 직접적 수혜 기대가 나타났습니다:contentReference[oaicite:9]{index=9}:contentReference[oaicite:10]{index=10}. 정부의 대북 정책 기조 변화로 이들 남북경협 테마 기업들은 향후 장기적 성과에 대한 기대를 모으고 있습니다.", "evidence": [{"source_title": "문재인 정책株, 4대강 복원·개성공단 관련주 급등...테마주는 약세", "url": "https://www.thevaluenews.co.kr/news/6918"}, {"source_title": "남북관계 개선에 남북경협주 들썩", "url": "https://www.ledesk.co.kr/view.php?uid=13714"}]}], "notes": "이재명 대통령의 영향력 분석은 2025년 11월 기준이며, 증권가의 기대 심리와 정책 발표에 따른 시장 반응을 기반으로 작성되었습니다. 일부 연관 기업의 실적 개선은 예상에 따른 것이며 실제 정책 효과는 향후 평가가 필요합니다."}, "model_response": {"report_title": "이재명 대통령의 정책-산업-기업 영향력 분석", "time_range": "2025-12-05 기준", "question_answer": "이재명 대통령은 AI 기술 투자, 금산분리 완화, 에너지 고속도로 정책 등을 통해 SK Group, 켐트로스 등 주요 기업 및 산업과 연결되어 있습니다. SK Group은 금산분리 완화로 AI 인프라 투자 수혜를 받을 것으로 예상되며, 켐트로스는 AI 수요 증가로 HBM 소재 분야에서 성장 가능성이 있습니다. 글로벌 협력 측면에서는 소프트뱅크와의 AI 인프라 논의가 진행 중입니다.", "influence_chains": [{"politician": "이재명", "policy": "금산분리 (financial-industrial separation) easing", "industry_or_sector": "금융-산업 분리 규제 완화", "companies": ["SK Group"], "impact_description": "금산분리 완화로 대규모 AI 인프라 투자 재원 마련 가능", "evidence": [{"source_title": "\"금산분리 규제 완화 최대 수혜주\"…증권가 전망에 SK, 5%대 '강세'", "url": "https://n.news.naver.com/mnews/article/015/0005217360?sid=101"}]}, {"politician": "이재명", "policy": "AI and Technology", "industry_or_sector": "반도체 소재", "companies": ["켐트로스 (Chemtros)"], "impact_description": "AI 수요 증가로 HBM 관련 소재 수혜", "evidence": [{"source_title": "켐트로스, 'AI 데이터센터 필수' 차세대 HBM 수율 핵심 소재 양산 '주목'", "url": "http://www.newsprime.co.kr/news/article.html?no=714121"}]}, {"politician": "이재명", "policy": "AI and Technology", "industry_or_sector": "AI 인프라", "companies": ["SK Group"], "impact_description": "글로벌 AI 인프라 협력 가능성", "evidence": [{"source_title": "[단독] 이재명 대통령, 5일 손정의 만난다", "url": "https://n.news.naver.com/mnews/article/015/0005220073?sid=100"}]}], "notes": ""}} +{"query": "문재인", "gold_report": {"report_title": "문재인 전 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2017–2022", "question_answer": "문재인 전 대통령은 탈원전과 그린뉴딜 정책을 추진하여 태양광·풍력 등 신재생에너지 산업을 육성했고, 4대강 보 철거와 생태 복원 정책으로 환경 관련 기업에 새로운 기회를 제공했습니다. 또한 남북 화해 기조를 바탕으로 개성공단 재가동을 모색하며 남북경협 관련 기업들의 주가에 영향을 미쳤으며, 수소경제 등 미래 산업 투자로 현대모비스 등 친환경차 부품 기업이 성장하는 계기를 마련했습니다.", "influence_chains": [{"politician": "문재인", "policy": "탈원전 및 재생에너지 정책", "industry_or_sector": "에너지/태양광", "companies": ["한화솔루션", "OCI"], "impact_description": "문재인 정부는 신규 원전 건설 백지화와 신재생에너지 비중 확대를 추진하여 태양광 등 친환경 에너지 업계를 부양했습니다. 이로 인해 국내 태양광 대표 기업 한화솔루션과 폴리실리콘 생산업체 OCI 등이 정부 보조금과 시장 확대의 혜택을 입어 실적이 개선되고 주가가 상승했습니다:contentReference[oaicite:11]{index=11}:contentReference[oaicite:12]{index=12}. 반면 원전 관련 산업은 위축되었으나 재생에너지 분야는 정책 지원에 힘입어 성장 기반을 마련했습니다.", "evidence": [{"source_title": "문재인 정책株, 4대강 복원·개성공단 관련주 급등...테마주는 약세", "url": "https://www.thevaluenews.co.kr/news/6918"}]}, {"politician": "문재인", "policy": "4대강 복원 정책", "industry_or_sector": "환경/건설", "companies": ["자연과환경", "이화공영"], "impact_description": "4대강 사업으로 건설된 보의 생태계 영향 조사와 개방을 추진하면서, 하천 환경 복원 사업에 참여하는 자연과환경, 이화공영 등의 환경 토목 업체들이 사업 기회를 얻었습니다. 문재인 당선 직후 이러한 4대강 복원 관련주들은 강세를 보였으며:contentReference[oaicite:13]{index=13}:contentReference[oaicite:14]{index=14}, 향후 준설 및 생태 복원 공사 수주에 대한 기대감으로 주가가 크게 상승했습니다.", "evidence": [{"source_title": "문재인 정책株, 4대강 복원·개성공단 관련주 급등...테마주는 약세", "url": "https://www.thevaluenews.co.kr/news/6918"}]}, {"politician": "문재인", "policy": "남북 경협 및 개성공단 정책", "industry_or_sector": "남북경협/제조", "companies": ["신원", "좋은사람들"], "impact_description": "문재인 정부의 남북 화해 기조로 개성공단 재가동과 남북 경협 확대에 대한 기대가 높아지면서, 개성공단에 생산기지를 둔 의류업체 신원과 속옷 제조사 좋은사람들 등이 큰 폭의 주가 상승을 보였습니다:contentReference[oaicite:15]{index=15}:contentReference[oaicite:16]{index=16}. 이는 남북 경제협력 재개 가능성에 따른 수혜 전망으로, 해당 기업들은 일시적으로 높은 시장 관심을 받았습니다.", "evidence": [{"source_title": "문재인 정책株, 4대강 복원·개성공단 관련주 급등...테마주는 약세", "url": "https://www.thevaluenews.co.kr/news/6918"}]}, {"politician": "문재인", "policy": "수소경제 및 혁신산업 육성", "industry_or_sector": "미래차/배터리", "companies": ["현대모비스", "LG화학"], "impact_description": "문재인 정부는 수소경제 활성화와 전기차 지원 등 혁신성장 정책을 추진하여 현대모비스 등 수소차 부품기업과 LG화학 배터리사업부(현 LG에너지솔루션) 등이 전략적 혜택을 보았습니다:contentReference[oaicite:17]{index=17}:contentReference[oaicite:18]{index=18}. 현대모비스는 수소차 핵심부품 생산라인 증설로 수혜주로 부각되었고, LG화학도 전기차 배터리 투자 확대 정책에 힘입어 글로벌 점유율 상승을 이뤘습니다.", "evidence": [{"source_title": "문재인 대통령 신년회견 수혜株는…수소경제·스마트공장·인터넷銀", "url": "https://www.hankyung.com/article/2019011165741"}]}], "notes": "본 분석은 2017년부터 2022년까지의 문재인 정부 기간을 대상으로 하였으며, 정책 발표 직후 관련 기업들의 주가 동향과 산업계 반응을 토대로 작성되었습니다. 실제 정책 효과와 기업 실적 사이에는 시차가 있을 수 있으며, 일부 평가는 예상에 기반하고 있습니다."}, "model_response": {"report_title": "문재인 대통령의 정책-산업-기업 영향력 네트워크 분석", "time_range": "2017–2022", "question_answer": "문재인 대통령은 재생에너지 3020 계획, 전라남도 해상 풍력 프로젝트, 4500억 달러 반도체 계획 등 주요 정책을 통해 풍력 에너지, 해상 풍력, 반도체 산업에 영향을 미쳤으며, 유니슨, 두산중공업, KEPCO, 삼성전자, SK 하이닉스 등 기업과 연결되었습니다. 정책별 산업 및 기업 간 관계는 제공된 자료에 명시된 증거에 기반합니다.", "influence_chains": [{"politician": "문재인", "policy": "재생에너지 3020 계획", "industry_or_sector": "풍력 에너지", "companies": ["유니슨", "두산중공업"], "impact_description": "재생에너지 3020 계획에 따라 풍력 에너지 확장(6GW → 22GW) 및 유니슨의 저풍속 터빈(U113) 시장 점유율 확대", "evidence": [{"source_title": "이슈&인사이트] 지역균형발전을 위한 노동개혁의 새로운 로드맵’", "url": "https://www.ekn.kr/web/view.php?key=20251127025503780"}, {"source_title": "Naver News Article 1", "url": "https://n.news.naver.com/mnews/article/009/0003941344"}]}, {"politician": "문재인", "policy": "전라남도 해상 풍력 프로젝트", "industry_or_sector": "해상 풍력", "companies": ["KEPCO (Korea Electric Power Corporation)"], "impact_description": "전라남도 해상 풍력 프로젝트(8.2GW) 지원을 위한 KEPCO와의 파트너십", "evidence": [{"source_title": "M-JoongAng Article", "url": "https://www.m-joongang.com/news/articleView.html?idxno=401825"}]}, {"politician": "문재인", "policy": "$450B 반도체 계획", "industry_or_sector": "반도체", "companies": ["Samsung Electronics", "SK Hynix"], "impact_description": "4500억 달러 반도체 계획 및 HBM4 개발을 통한 AI 인프라 수요 증가", "evidence": [{"source_title": "Stratfor: South Korea’s $450 Billion Semiconductor Plan", "url": "https://worldview.stratfor.com/situation-report/south-korea-president-reveals-450-billion-plan-boost-chip-industry-2030"}, {"source_title": "Joins.com: Government Launches Plan to Make Korea a Semiconductor Leader by 2030", "url": "https://koreajoongangdaily.joins.com/2019/04/30/economy/Government-launches-plan-to-make-Korea-a-semiconductor-leader-by-2030/3062504.html"}, {"source_title": "Naver (HBM4 Demand): '14만전자'·'80만닉스'..반도체는 내년에도 물들어온다", "url": "https://n.news.naver.com/mnews/article/052/0002282413"}]}, {"politician": "문재인", "policy": "ARM 학교 이니셔티브", "industry_or_sector": "시스템 반도체", "companies": ["Samsung Electronics", "SK Hynix"], "impact_description": "ARM 학교 이니셔티브를 통한 시스템 반도체 및 팹리스 분야 인재 양성", "evidence": [{"source_title": "Naver (ARM School): 대통령실 \"ARM과 반도체 설계인재 1400명 키운다\"", "url": "https://n.news.naver.com/mnews/article/014/0005444871"}]}], "notes": ""}} +{"query": "박근혜", "gold_report": {"report_title": "박근혜 전 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2013–2017", "question_answer": "박근혜 전 대통령은 창조경제와 문화융성 정책을 통해 사물인터넷·3D프린팅 등 신산업 분야 스타트업과 한류 콘텐츠 기업들의 성장을 도모했습니다. 또한 중동 순방 경제외교를 통해 대형 건설사의 해외수주를 지원했고, 부동산 활성화를 위한 규제 완화로 건설경기에 긍정적인 영향을 미쳤습니다. 그러나 최순실 사태로 일부 기업과의 부정적 연결 고리가 드러나며 정책 추진에 대한 신뢰성이 타격을 입었습니다.", "influence_chains": [{"politician": "박근혜", "policy": "창조경제 산업육성", "industry_or_sector": "ICT/신산업", "companies": ["TPC(티피씨)", "효성ITX"], "impact_description": "박근혜 정부는 ICT 기반 창조경제를 내세워 사물인터넷, 3D프린팅 등 4차산업혁명 관련 기업을 지원했습니다. 그 영향으로 3D 프린터 제조사 TPC 등 관련주들이 정책 발표 직후 급등하는 등 수혜를 입었고:contentReference[oaicite:19]{index=19}:contentReference[oaicite:20]{index=20}, 효성ITX 등 일부 IT기업 주가는 창조경제 언급 때마다 상승세를 보였습니다. 이는 정부의 규제 완화와 R&D 지원에 대한 기대감이 해당 기업들의 성장 모멘텀으로 작용한 사례입니다.", "evidence": [{"source_title": "[상반기 달군 테마주] 朴대통령 “창조경제” 발언에 사물인터넷株 '고공행진'", "url": "https://www.etoday.co.kr/news/view/932921"}]}, {"politician": "박근혜", "policy": "문화융성 정책", "industry_or_sector": "문화콘텐츠/미디어", "companies": ["CJ E&M", "팬엔터테인먼트"], "impact_description": "한류 확산과 문화콘텐츠 산업 육성을 위한 문화융성 정책으로, CJ E&M과 팬엔터테인먼트 같은 드라마·예능 제작사는 정부의 펀드 조성 및 해외진출 지원에 힘입어 사업 확장에 긍정적 영향을 받았습니다:contentReference[oaicite:21]{index=21}:contentReference[oaicite:22]{index=22}. 국내 미디어 기업들은 정책 수혜 기대 속에 투자와 제작이 활성화되었으며, 문화콘텐츠 수출 증대로 이어지는 성과를 거두었습니다.", "evidence": [{"source_title": "신정부 정책 수혜株..코스닥을 주목하라 - 뉴스토마토", "url": "https://www.newstomato.com/ReadNews.aspx?no=333218"}]}, {"politician": "박근혜", "policy": "중동 순방 경제외교", "industry_or_sector": "건설/인프라", "companies": ["현대건설", "대우건설"], "impact_description": "박근혜 정부 시절 적극적인 정상외교를 통해 중동지역 인프라 사업을 수주하도록 지원한 결과, 현대건설과 대우건설 등 국내 대형 건설사들이 이란·중동 시장에서 대규모 공사 계약을 체결하는 성과를 거두었습니다. 2015년 이란 방문 당시 수십조 원 규모의 MOU가 체결되는 등 이러한 경제외교는 건설주에 호재로 작용하여 주가 상승을 이끌기도 했습니다.", "evidence": [{"source_title": "박근혜 대통령, 경제사절단과 순방 성과 논의 / YTN", "url": "https://www.ytn.co.kr/_ln/0101_201603171803123166"}]}, {"politician": "박근혜", "policy": "부동산 규제 완화", "industry_or_sector": "건설/부동산", "companies": ["현대산업개발", "호반건설"], "impact_description": "취득세 영구 인하, 분양가 상한제 탄력운영 등 부동산 활성화 정책을 펼치며 주택시장이 회복되자, HDC현대산업개발과 호반건설 등 국내 건설사들의 분양 실적과 주가에 긍정적 효과가 나타났습니다:contentReference[oaicite:23]{index=23}:contentReference[oaicite:24]{index=24}. 정부가 다주택자 양도세 중과 폐지 등 추가 부동산 대책을 내놓을 것이라는 전망 속에 건설업종 전반에 투자심리가 개선되었습니다.", "evidence": [{"source_title": "신정부 정책 수혜株..코스닥을 주목하라 - 뉴스토마토", "url": "https://www.newstomato.com/ReadNews.aspx?no=333218"}]}], "notes": "2013–2017년 박근혜 정부 기간을 대상으로 하였으며, 정책 발표와 해외 순방 시점의 업계 동향을 중심으로 서술했습니다. 창조경제 추진과 문화융성 정책은 초기 시장 기대를 모았으나, 말기에 불거진 국정농단 사건으로 일부 기업과 정책 간의 부정적 영향도 고려해야 합니다."}, "model_response": {"report_title": "박근혜의 정책, 산업, 기업 연결성 및 영향력 네트워크 분석", "time_range": "2013–2017", "question_answer": "박근혜 전 대통령은 창조경제 정책, 기업 규제 완화 정책 등을 통해 삼성, 네이버, 현대자동차 등 주요 기업 및 산업과 연결되었으며, 미르 재단과 K-스포츠 재단을 중심으로 한 정치적 후원 네트워크를 통해 광범위한 영향력을 행사했습니다. 그러나 간접 영향력(예: 중소기업 대 재벌)이나 덜 알려진 기업과의 개인적 관계 등 일부 연결은 확인되지 않았습니다.", "influence_chains": [{"politician": "박근혜", "policy": "창조경제 정책", "industry_or_sector": "기술 스타트업 및 IT 산업", "companies": ["Samsung", "Naver"], "impact_description": "창조경제 정책은 기술 스타트업과 재벌 기업에 보조금을 지원하는 방식으로 영향을 미쳤으며, 국가 지원 기금을 통해 자금이 조달되었습니다. 삼성 및 네이버와의 연관성이 확인되었습니다.", "evidence": []}, {"politician": "박근혜", "policy": "기업 규제 완화 정책", "industry_or_sector": "전자 및 자동차 산업", "companies": ["Samsung", "Hyundai"], "impact_description": "삼성의 2015년 합병 승인과 현대자동차의 중동 계약은 정책 변화와 동시에 발생했으며, 기부 기록과 유출된 메모를 통해 상호 이익 관계가 시사됩니다.", "evidence": []}, {"politician": "박근혜", "policy": "정치 후원 네트워크 정책", "industry_or_sector": "정치 후원 및 스포츠 산업", "companies": ["Mir 재단", "K-Sports 재단"], "impact_description": "미르 재단과 K-스포츠 재단은 박근혜 정부의 정치적 후원자 네트워크에서 중심적인 역할을 했습니다. 사당 및 관료들이 정책-산업 연계를 촉진한 것으로 나타났습니다.", "evidence": []}], "notes": ""}} +{"query": "이명박", "gold_report": {"report_title": "이명박 전 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2008–2013", "question_answer": "이명박 전 대통령은 4대강 개발 사업을 추진하여 삼성물산 등 대형 건설사가 대규모 토목 공사를 수주하는 혜택을 누렸으며, 해외 자원개발과 원전 수출 외교로 한국전력, 현대건설 등이 글로벌 프로젝트에 참여하는 성과를 거두었습니다. 한편 법인세 인하와 친기업 정책을 통해 대기업들의 투자 환경을 개선시켰으나, 부작용으로 부의 양극화 논란도 야기되었습니다.", "influence_chains": [{"politician": "이명박", "policy": "4대강 사업 추진", "industry_or_sector": "건설/토목", "companies": ["삼성물산", "현대건설"], "impact_description": "이명박 정부의 4대강 정비 사업으로 국내 주요 건설사들이 대규모 준설과 보 건설 공사를 맡아 막대한 공사 물량을 수행했습니다. 특히 삼성물산은 4대강 사업 최대 수혜 기업으로 지목될 만큼 많은 공사를 수주하여 매출 증대에 기여했고:contentReference[oaicite:25]{index=25}, 현대건설을 비롯한 대형 건설사들도 토목 매출이 크게 늘어나며 단기적인 호황을 누렸습니다.", "evidence": [{"source_title": "4대강사업 최대 수혜는 '삼성건설'", "url": "https://ko.wikipedia.org/wiki/4%EB%8C%80%EA%B0%95_%EC%A0%95%EB%B9%84_%EC%82%AC%EC%97%85"}]}, {"politician": "이명박", "policy": "원전 수출 외교", "industry_or_sector": "에너지/원자력", "companies": ["한국전력", "현대건설"], "impact_description": "2009년 이명박 정부는 UAE에 한국형 원자력발전소 4기를 수출하는 대형 계약(약 20조 원 규모)을 따냈습니다:contentReference[oaicite:26]{index=26}. 이 원전 수주 성공으로 한국전력은 글로벌 원전사업 주관사로서 국제 위상이 높아졌고, 현대건설 등 참여 건설사들은 해외 원전 건설 공사를 수행하며 수익과 기술경쟁력을 확보하는 성과를 올렸습니다. 이는 대통령의 적극적인 비즈니스 외교가 결정적인 역할을 한 사례입니다:contentReference[oaicite:27]{index=27}.", "evidence": [{"source_title": "임종석 UAE 방문 논란…한국전력 2009년 UAE 원전 수주", "url": "https://weekly.chosun.com/client/news/viw.asp?ctcd=C09&nNewsNumb=002587100013"}, {"source_title": "아랍에미리트(UAE) 원전의 진실 - 동아일보", "url": "https://www.donga.com/news/Politics/article/all/20180106/88052120/1"}]}, {"politician": "이명박", "policy": "법인세 인하 등 친기업 정책", "industry_or_sector": "재계/대기업", "companies": ["삼성전자", "현대자동차"], "impact_description": "이명박 정부는 법인세 최고세율을 25%에서 22%로 인하하고 각종 규제를 완화하는 친기업 정책을 펼쳤습니다. 그 결과 삼성전자, 현대자동차 등 대기업들은 세 부담 경감으로 이익이 증가하고 잉여현금이 늘어나 대규모 투자와 배당을 확대했습니다. 다만 이러한 혜택은 주로 대기업에 집중되어 중소기업 및 소득분배 측면에서는 한계가 있다는 지적도 있었습니다.", "evidence": [{"source_title": "20대 기업 법인세 부담 감소…투자 대비 배당↑", "url": "https://www.hankyung.com/economy/article/201301244074g"}]}], "notes": "2008–2013년 이명박 정부 기간 동안의 주요 경제정책 영향을 정리했습니다. 당시 대규모 국책사업과 해외사업 성과에 초점을 맞추었으며, 정책의 긍정적 효과와 함께 논란이 된 부분(예: 4대강 환경 문제, 부의 편중 현상)도 존재함을 유의해야 합니다."}, "model_response": {"report_title": "이명박 대통령의 정책-산업-기업 영향력 네트워크 분석", "time_range": "2008–2013", "question_answer": "이명박 대통령은 4대강 프로젝트를 통해 삼환기업 등 건설업계에 직접적인 영향을 미쳤으며, 녹색성장 정책을 통해 재생에너지 산업 전반에 간접적 영향을 준 것으로 확인됩니다. 다만, 특정 기업과의 직접적 연관성은 삼환기업을 제외하고는 명확히 입증되지 않았습니다.", "influence_chains": [{"politician": "Lee Myung-bak", "policy": "4 Rivers Project", "industry_or_sector": "건설업", "companies": ["삼환기업"], "impact_description": "4대강 프로젝트의 실질적인 수혜주로 지목되었으며, 토목 건설 분야에서 직접적인 혜택을 받은 것으로 확인됨", "evidence": [{"source_title": "Newspim: 삼환기업 and 4 Rivers Project", "url": "http://www.newspim.com/sub_view.php?cate1=1&cate2=3&news_id=197822"}, {"source_title": "Naver News: 4 Rivers Project Concerns", "url": "https://n.news.naver.com/mnews/article/008/0005098150?sid=100"}]}, {"politician": "Lee Myung-bak", "policy": "Green Growth Strategy", "industry_or_sector": "재생에너지", "companies": [], "impact_description": "재생에너지 분야(태양광, 풍력) 수출 산업 육성을 위한 40조 원 투자 계획 발표. KEPCO, LSIS, Samsung SDI 등이 스마트그리드 및 재생에너지 분야에서 언급되었으나, 정책 혜택과의 직접적 연관성은 확인되지 않음", "evidence": [{"source_title": "Littlemachinery: Green Growth Investment Plan", "url": "http://www.littlemachinery.com/article-11436.html"}]}], "notes": ""}} +{"query": "홍준표", "gold_report": {"report_title": "홍준표 대구시장의 정치·경제 영향력 네트워크 분석", "time_range": "2025년 11월 24일 기준", "question_answer": "홍준표 대구시장은 대구경북 통합신공항 건설 추진을 통해 대우건설, 화성산업 등 지역 건설사에 대규모 사업 참여 기회를 제공하고 있습니다. 또한 지방정부 차원의 규제 완화와 기업 유치 노력을 통해 대구 지역 산업단지의 투자 활성화를 도모하고 있습니다. 다만 강성 발언과 중앙정치와의 마찰로 정책 추진 과정에서 잡음이 발생하기도 합니다.", "influence_chains": [{"politician": "홍준표", "policy": "대구경북 통합신공항 건설 추진", "industry_or_sector": "건설/지역개발", "companies": ["대우건설", "서한"], "impact_description": "홍준표 시장이 주도하는 대구경북 신공항 건설 사업으로 대우건설을 비롯한 지역 건설사 서한 등이 특수목적법인(SPC) 구성과 사업계획 수립 용역에 참여하고 있습니다:contentReference[oaicite:28]{index=28}. 약 11조 원 규모로 추정되는 공항 및 신도시 개발 사업은 해당 건설사들에게 막대한 수주 기회를 제공해 지역 건설경기를 부양할 것으로 기대됩니다.", "evidence": [{"source_title": "대우건설, TK신공항 건설 주관사 유력…'지역 3社' 화성·서한 - 경북일보", "url": "https://www.kyongbuk.co.kr/news/articleView.html?idxno=4012068"}]}, {"politician": "홍준표", "policy": "대구 산단 규제 완화 및 기업 유치", "industry_or_sector": "지역산업/제조업", "companies": ["삼성메디슨", "홈센타홀딩스"], "impact_description": "홍준표 시장은 대구 국가산업단지의 규제를 완화하고 투자 인센티브를 제공하여 대기업과 중견기업을 대구로 유치하고 있습니다. 최근 삼성메디슨의 의료산업 투자 유치로 의료기기 클러스터에 활력이 돌았고, 지역 건축자재 기업 홈센타홀딩스는 신공항 수혜 기대와 산업단지 투자 확대로 성장 동력을 얻고 있습니다. 이러한 기업 유치 노력은 지역 경제 기반을 강화하는 데 기여하고 있습니다.", "evidence": [{"source_title": "홈센타홀딩스와 홍준표 테마주: 대구 신공항과 지역 건축 자재 강자의 ...", "url": "https://redbluepurple.tistory.com/entry/%ED%99%8D%EC%A4%80%ED%8F%AC-%ED%85%8C%EB%A7%88%EC%A3%BC"}]}], "notes": "홍준표 시장에 대한 분석은 2025년 말 현재 진행 중인 지역 개발 프로젝트에 초점을 맞추었으며, 중앙정부 지원 여부와 정치적 변수에 따라 사업 추진 속도가 달라질 수 있습니다. 일부 기업 언급은 향후 수혜 전망에 근거한 것입니다."}, "model_response": {"report_title": "홍준표 의원의 정책-산업-기업 영향력 네트워크 분석", "time_range": "2021-09-17 ~ 2025-04-16", "question_answer": "홍준표 의원의 정책과 직접적으로 연결된 기업이나 금융적 관계는 공개된 자료에서 확인되지 않습니다. AI, 부동산, 에너지 등 산업 전반에 간접적 영향을 미칠 수 있으나, 특정 기업과의 명시적 연관성은 입증되지 않았습니다.", "influence_chains": [{"politician": "홍준표", "policy": "AI 투자 계획", "industry_or_sector": "AI/양자 기술", "companies": [], "impact_description": "홍준표 의원의 AI 투자 계획은 국내 기술 기업에 잠재적 혜택을 줄 수 있으나, 특정 기업과의 직접적 연결은 확인되지 않음", "evidence": [{"source_title": "홍준표, 5년간 50조 AI 투자·100만 주택 공급 공약", "url": "https://biz.chosun.com/en/en-policy/2025/04/16/I67GYSKOTBDWXNJXO7VQ5Z7M5I/"}]}, {"politician": "홍준표", "policy": "주택 정책", "industry_or_sector": "건설/부동산", "companies": [], "impact_description": "규제 완화를 통한 주택 공급 확대 정책은 건설 및 부동산 개발업체에 영향을 미칠 수 있으나, 특정 기업과의 직접적 연결은 확인되지 않음", "evidence": [{"source_title": "홍준표, 5년간 50조 AI 투자·100만 주택 공급 공약", "url": "https://biz.chosun.com/en/en-policy/2025/04/16/I67GYSKOTBDWXNJXO7VQ5Z7M5I/"}]}, {"politician": "홍준표", "policy": "탈원전 정책 폐기", "industry_or_sector": "에너지", "companies": [], "impact_description": "탈원전 정책 폐기 주장은 에너지 기업에 잠재적 영향을 미칠 수 있으나, 서전기전과의 직접적 연결은 2021년 기사에서 확인되지 않음", "evidence": [{"source_title": "서전기전, 홍준표 '탈원전 정책 폐기' 수혜주?…시간외 주가 급등", "url": "http://www.pinpointnews.co.kr/view.php?ud=202109170712182354cd1e7f0bdf_45"}]}], "notes": ""}} +{"query": "안철수", "gold_report": {"report_title": "안철수 의원의 정치·경제 영향력 네트워크 분석", "time_range": "2025년 11월 24일 기준", "question_answer": "안철수 의원은 벤처기업인 출신답게 ICT 산업과 스타트업 육성을 강조하여 안랩 등 소프트웨어 기업과 코스닥 벤처시장에 긍정적 영향을 미쳤습니다. 4차 산업혁명 및 코로나19 대응 과정에서 IT 혁신과 백신 개발 지원을 주창하며 관련 업계의 성장을 뒷받침했습니다. 다만 정치 행보에 따른 테마주 변동성도 커, 총리설 등으로 안랩 주가가 급등락하는 모습이 나타났습니다.", "influence_chains": [{"politician": "안철수", "policy": "소프트웨어·스타트업 육성", "industry_or_sector": "IT/벤처", "companies": ["안랩", "카카오벤처스"], "impact_description": "안철수 의원은 창업 활성화와 코딩교육 강화 등 IT 인재 양성 정책을 지속적으로 주장해왔습니다. 이러한 흐름 속에 그의 경영철학이 반영된 보안기업 안랩은 국내 소프트웨어 육성 분위기에서 꾸준한 성장을 이어갔습니다. 또한 안 의원이 벤처 생태계 조성을 강조함에 따라 카카오벤처스 등 스타트업 투자업계에도 긍정적 인식이 확산되어 투자가 활성화되는 효과가 있었습니다.", "evidence": [{"source_title": "안랩, 소프트웨어정책 영향으로 성장세 지속", "url": "https://www.sisajournal.com/news/articleView.html?idxno=235310"}]}, {"politician": "안철수", "policy": "코로나19 백신 개발 지원", "industry_or_sector": "제약/백신", "companies": ["SK바이오사이언스"], "impact_description": "의사 출신인 안철수 의원은 코로나19 국면에서 국내 백신 개발의 중요성을 역설하며 범정부 지원을 촉구했습니다. 그에 따라 SK바이오사이언스는 정부로부터 임상시험 비용 지원과 행정절차 간소화 혜택을 받아 국산 백신 개발을 가속화할 수 있었고:contentReference[oaicite:29]{index=29}:contentReference[oaicite:30]{index=30}, 결과적으로 국내 백신 주권 확보와 해당 기업의 위상 제고로 이어졌습니다.", "evidence": [{"source_title": "정부, 코로나19 치료제·백신 개발 임상 비용 940억원 지원 - 정책브리핑", "url": "https://www.korea.kr/news/policyNewsView.do?newsId=148878275"}]}, {"politician": "안철수", "policy": "정치 테마주 변동", "industry_or_sector": "주식시장/테마주", "companies": ["안랩"], "impact_description": "안철수 의원의 정치적 입지 변화는 최대주주로 있는 안랩 주가에 직결되었습니다. 2022년 대통령직 인수위원장 시절 ‘안철수 총리 기용설’이 돌자 안랩 주가가 보름 만에 148% 급등하며 사상 최고가를 경신했고:contentReference[oaicite:31]{index=31}, 이후 총리직 고사 소식에 9% 이상 폭락하는 등:contentReference[oaicite:32]{index=32} 정치 테마주로서 급등락을 반복했습니다. 이는 정치인의 입지가 기업가치와 시장 심리에 미친 대표적 사례입니다.", "evidence": [{"source_title": "'안철수 총리설'에 안랩 주가 고공행진…10년 만에 역대 최고가", "url": "https://www.sisajournal.com/news/articleView.html?idxno=235310"}, {"source_title": "안철수 총리직 고사에....안랩 주가 9%대 폭락", "url": "https://www.chosun.com/economy/stock-finance/2022/03/30/ISPOPMI45JBQ5BEQXZE77YD7FM/"}]}], "notes": "안철수 의원의 영향력은 기업인에서 정치인으로 변모한 특이한 경력에서 비롯되며, IT산업 정책과 주식시장 테마 양측면이 혼재되어 있습니다. 분석은 2025년 기준 공개된 자료와 시장 반응을 토대로 했습니다."}, "model_response": {"report_title": "안철수 의원의 정책, 산업, 기업 간 영향력 네트워크 분석", "time_range": "2025년 12월 5일 기준", "question_answer": "안철수 의원은 AI 인프라, 인재 개발, 중소기업 경쟁력 강화를 위한 정책을 주도했으며, Rebellion, 42Maru, VAIV Company와 같은 AI 관련 기업들과 연결되었습니다. 또한 중소기업 퇴직연금 도입을 촉진하는 법안을 발의했으나, 특정 기업과의 직접적 연결은 확인되지 않았습니다. 약한 연결이나 신뢰할 수 없는 출처에 기반한 관계는 명시적으로 언급되었습니다.", "influence_chains": [{"politician": "Ahn Cheol-soo", "policy": "Government support for AI infrastructure, talent development, and SME competitiveness", "industry_or_sector": "AI semiconductor, AI education, AI collaboration platforms", "companies": ["Rebellions", "42Maru", "VAIV Company"], "impact_description": "Ahn Cheol-soo chaired the People Power Party’s Special Committee on Advancing Korea into a Top Three AI Power, emphasizing government support for AI infrastructure, talent development, and SME competitiveness. The companies Rebellion (AI semiconductor startup), 42Maru (AI education), and VAIV Company (AI collaboration platforms) were linked to this policy through committee meetings and presentations.", "evidence": [{"source_title": "Ruling Party's AI Committee: “Industrial structure must be ...”", "url": "https://nairl.kr/news_13/"}]}, {"politician": "Ahn Cheol-soo", "policy": "Tax deduction bill for SMEs adopting retirement pension systems", "industry_or_sector": "SMEs (General)", "companies": [], "impact_description": "Ahn Cheol-soo proposed a tax deduction bill (20% of pension contributions) to incentivize SMEs to adopt retirement pension systems. No specific companies were named in this policy.", "evidence": [{"source_title": "안철수 의원, 中企 퇴직연금 도입 촉진 법안 발의", "url": "http://www.kbiznews.co.kr/news/articleView.html?idxno=112378"}]}], "notes": ""}} +{"query": "이준석", "gold_report": {"report_title": "이준석 전 국민의힘 대표의 정치·경제 영향력 네트워크 분석", "time_range": "2025년 11월 24일 기준", "question_answer": "이준석 전 대표는 2030 세대의 목소리를 대변하며 플랫폼 경제와 가상자산 등 신산업에 우호적인 태도를 보여 관련 업계 담론을 선도했습니다. 승차공유 등 모빌리티 혁신에 대한 규제 완화를 주장하여 쏘카 등 스타트업의 입지를 언급했고, 젊은 층의 관심이 높은 암호화폐 제도화 필요성을 제기하며 업비트 등 거래소에 간접적인 긍정 여론을 형성했습니다. 다만 직접 정책 집행 권한이 없어 실질 영향은 제한적이었습니다.", "influence_chains": [{"politician": "이준석", "policy": "공유 모빌리티 규제 완화 주장", "industry_or_sector": "모빌리티/스타트업", "companies": ["타다(VCNC)", "쏘카"], "impact_description": "이준석 전 대표는 택시산업과 승차공유 서비스의 공정 경쟁을 강조하며, 스타트업 타다 금지법 통과에 반대 의견을 꾸준히 제시했습니다:contentReference[oaicite:33]{index=33}. 그의 주장들은 쏘카 등 모빌리티 플랫폼 기업이 규제 완화 여론을 얻는 데 기여했고, 관련 업계에 혁신 필요성을 환기시켰습니다. 비록 당장의 정책 변화로 이어지진 않았으나, 미래 세대 정치 담론으로 모빌리티 혁신이 부상하는 효과가 있었습니다.", "evidence": [{"source_title": "두 달 택시 몰아본 이준석 “카풀 반대할 수밖에 없더라” - 서울신문", "url": "https://www.seoul.co.kr/news/newsView.php?id=20181213500020"}]}, {"politician": "이준석", "policy": "가상자산 제도화 및 세대공감", "industry_or_sector": "금융/가상자산", "companies": ["업비트", "빗썸"], "impact_description": "젊은 층의 투자열풍을 의식한 이준석 전 대표는 암호화폐 과세 유예와 제도권 편입의 필요성을 역설했습니다. 이러한 행보는 국내 최대 가상자산 거래소 업비트와 빗썸 등에게 우호적인 환경 조성으로 이어져, 관련 업계는 정치권 논의에 힘입어 일정 기간 투자심리가 개선되는 효과를 누렸습니다. 이는 정치권에서 가상자산이 공식 의제로 다뤄지는 데 일조한 사례로 평가됩니다.", "evidence": [{"source_title": "이준석 “가상자산 과세, 청년층 의견 더 들어야” - 코인데스크코리아", "url": "http://www.coindeskkorea.com/news/articleView.html?idxno=75211"}]}], "notes": "이준석 전 대표는 입법 권한은 없었지만 당대표로서 담론 형성과 여론에 영향을 미쳤습니다. 본 분석에서는 그의 주장과 이에 따른 산업계 분위기 변화를 다루었으며, 실제 정책 실현 여부와는 구분됩니다."}, "model_response": {"report_title": "이준석의 정책 및 영향력 네트워크 분석", "time_range": "2021–2025", "question_answer": "이준석은 민생회복 소비쿠폰 정책 비판과 공영방송 규제 완화 주장과 같은 경제 및 미디어 관련 정책 입장을 보였으나, 특정 산업이나 기업과의 직접적 연결은 확인되지 않았습니다. 그의 영향력은 주로 정책 비판과 경제 경고에 집중되어 있습니다.", "influence_chains": [{"politician": "이준석", "policy": "민생회복 소비쿠폰 정책 비판", "industry_or_sector": "경제 정책", "companies": [], "impact_description": "민생회복 소비쿠폰 정책이 인플레이션을 악화시킬 수 있다는 비판을 제기하며, 장기적 재정 위험을 경고함. 특정 산업이나 기업과의 직접적 연결은 확인되지 않음.", "evidence": [{"source_title": "Wikipedia", "url": "https://ko.wikipedia.org/wiki/%EC%9D%B4%EC%A4%80%EC%84%9D"}]}, {"politician": "이준석", "policy": "공영방송 규제 완화 주장", "industry_or_sector": "미디어 산업", "companies": [], "impact_description": "공영방송의 재정적 안정성을 개선하기 위한 규제 완화를 주장함. 특정 기업과의 연결은 언급되지 않음.", "evidence": [{"source_title": "Naver News", "url": "https://n.news.naver.com/mnews/article/088/0000983620"}]}], "notes": ""}} +{"query": "심상정", "gold_report": {"report_title": "심상정 의원의 정치·경제 영향력 네트워크 분석", "time_range": "2025년 11월 24일 기준", "question_answer": "심상정 의원은 노동존중 사회를 기치로 최저임금 인상과 비정규직의 정규직화 등을 주도하며 대기업의 무노조 경영을 강하게 비판해 삼성전자 등 기업의 노동관행 변화를 촉구했습니다. 또한 그린뉴딜과 탈탄소 정책을 앞장서 제안하여 석탄발전 축소와 재생에너지 확대에 영향을 미쳤습니다. 이처럼 노동·환경 분야에서 진보적 의제를 선도하며 관련 기업들의 경영 전략에도 일정 부분 자극을 주었습니다.", "influence_chains": [{"politician": "심상정", "policy": "노조할 권리 보장 투쟁", "industry_or_sector": "대기업/노동", "companies": ["삼성전자"], "impact_description": "심상정 의원은 국회에서 삼성의 '무노조 경영'을 집요하게 문제삼으며 2013년 삼성의 노조탄압 문건을 폭로하는 등 노조할 권리 보장에 앞장섰습니다:contentReference[oaicite:34]{index=34}. 이러한 노력은 삼성전자에 노조 설립이 현실화되는 계기를 마련했고, 법원도 삼성의 조직적 노조와해 행위를 유죄로 인정하여 삼성으로 하여금 무노조 경영 원칙을 폐기하고 노동조합을 받아들이도록 압력을 가했습니다:contentReference[oaicite:35]{index=35}:contentReference[oaicite:36]{index=36}.", "evidence": [{"source_title": "심상정이 노동절 앞두고 또다시 '삼성' 지목한 이유 - 오마이뉴스", "url": "http://www.ohmynews.com/NWS_Web/View/at_pg.aspx?CNTN_CD=A0002429571"}, {"source_title": "심상정 “삼성 노조와해 유죄…반헌법적 무노조 황제경영 원칙 폐기해야”", "url": "http://www.lawleader.co.kr/news/articleView.html?idxno=3823"}]}, {"politician": "심상정", "policy": "최저임금 인상 및 정규직화", "industry_or_sector": "소매/서비스", "companies": ["이마트", "CJ대한통운"], "impact_description": "정의당의 심상정 의원은 최저임금의 가파른 인상을 강력히 지지하고 공공부문 비정규직의 정규직 전환을 추진했습니다. 그 결과 대형마트 이마트는 급격한 인건비 상승으로 무인계산대 도입 등 구조조정을 검토하게 되었고, 택배회사 CJ대한통운은 분류인력 직고용 등 고용구조 변화를 단행했습니다. 이처럼 노동자의 처우 개선 정책은 해당 기업들의 비용 구조와 운영 방식에 직접적 영향을 미쳤습니다.", "evidence": [{"source_title": "심상정 의원 “최저임금 1만원 시대, 대기업도 사회적 책임 다해야”", "url": "https://www.khan.co.kr/economy/economy-general/article/201807181453001"}]}, {"politician": "심상정", "policy": "녹색뉴딜·탈탄소 정책", "industry_or_sector": "에너지/환경", "companies": ["한국남동발전", "두산중공업"], "impact_description": "심상정 의원은 일찍이 Green New Deal을 주장하며 석탄발전소 폐쇄와 재생에너지 전환을 촉구했습니다. 이로 인해 석탄 발전을 주력으로 하던 한국남동발전은 영흥화력 등의 조기 폐지와 LNG 전환 계획을 수립했고, 원전·석탄 플랜트 기업 두산중공업(현 두산에너빌리티)은 정부의 탈석탄 기조 속에서 경영 위기를 겪기도 했으나 이후 신재생 사업으로 사업 방향을 선회했습니다. 이러한 변화는 진보정당의 환경 의제 선도가 기업 전략 재편에 영향을 준 사례입니다.", "evidence": [{"source_title": "심상정 “2050 탄소중립 위해 석탄발전 중단 로드맵 시급”", "url": "https://www.edaily.co.kr/news/read?newsId=03715206625924472&mediaCodeNo=257"}]}], "notes": "심상정 의원의 영향력은 입법보다는 의제 설정과 여론 압박을 통한 간접적인 효과가 크며, 본 분석에서는 노동·환경 분야에서 기업에 미친 영향을 위주로 서술했습니다. 정치인의 발언과 실제 정책 실현 간에는 차이가 있을 수 있습니다."}, "model_response": {"report_title": "심상정 후보의 정치경제적 영향력 네트워크 분석", "time_range": "2021-11-01 ~ 2025-12-05", "question_answer": "심상정 후보는 주4일제 도입, 재생에너지 확대, 사회복지 강화 등 주요 정책을 통해 노동권, 기후정의, 사회복지 분야에서 영향력을 행사하고 있습니다. 한국전력, 태양광/풍력 산업, 의료/고탄소 산업, 전국사회복지유니온 등과 직접적 또는 간접적으로 연결되어 있으며, 기업은행(IBK)과의 연결은 간접적입니다. SK이노베이션, 현대자동차 등과의 연결성은 증거가 부족합니다.", "influence_chains": [{"politician": "심상정", "policy": "재생에너지 확대", "industry_or_sector": "재생에너지", "companies": ["한국전력"], "impact_description": "한국전력 산하 발전자회사 통합 및 재생에너지 공사 설립 계획에 명시됨", "evidence": [{"source_title": "정의당 심상정 대선 후보, 주4일제 공약 발표", "url": "https://www.yna.co.kr/view/AKR20211101155300001"}, {"source_title": "심상정 후보, 주4일제 및 기후정의 정책 발표", "url": "https://www.youtube.com/watch?v=QevxOaO-WSA"}, {"source_title": "심상정 후보의 노동정책 요약", "url": "https://www.laborplus.co.kr/news/articleView.html?idxno=11126"}, {"source_title": "심상정 후보의 에너지 전환 공약", "url": "https://imnews.imbc.com/news/2021/politics/article/6323751_34866.html"}]}, {"politician": "심상정", "policy": "재생에너지 확대", "industry_or_sector": "재생에너지", "companies": ["태양광/풍력 산업"], "impact_description": "재생에너지 확대 정책의 직접적 수혜", "evidence": [{"source_title": "정의당 심상정 대선 후보, 주4일제 공약 발표", "url": "https://www.yna.co.kr/view/AKR20211101155300001"}, {"source_title": "심상정 후보, 주4일제 및 기후정의 정책 발표", "url": "https://www.youtube.com/watch?v=QevxOaO-WSA"}, {"source_title": "심상정 후보의 노동정책 요약", "url": "https://www.laborplus.co.kr/news/articleView.html?idxno=11126"}, {"source_title": "심상정 후보의 에너지 전환 공약", "url": "https://imnews.imbc.com/news/2021/politics/article/6323751_34866.html"}]}, {"politician": "심상정", "policy": "주4일제 도입", "industry_or_sector": "금융", "companies": ["기업은행(IBK)"], "impact_description": "국책은행 중 주4일제 도입 추진 중이지만 정책 직접 연결성 없음", "evidence": [{"source_title": "정의당 심상정 대선 후보, 주4일제 공약 발표", "url": "https://www.yna.co.kr/view/AKR20211101155300001"}]}, {"politician": "심상정", "policy": "주4일제 도입", "industry_or_sector": "의료/고탄소", "companies": ["의료/고탄소 산업"], "impact_description": "주4일제 시범 대상 산업", "evidence": [{"source_title": "심상정 후보, 주4일제 및 기후정의 정책 발표", "url": "https://www.youtube.com/watch?v=QevxOaO-WSA"}, {"source_title": "심상정 후보의 주4일제 공약 분석", "url": "https://www.hani.co.kr/arti/politics/politics_general/1021320.html"}]}, {"politician": "심상정", "policy": "사회복지사 처우 개선", "industry_or_sector": "사회복지", "companies": ["전국사회복지유니온"], "impact_description": "사회복지사 처우 개선을 위한 정책 협약 체결", "evidence": [{"source_title": "심상정 후보와 전국사회복지유니온 협약", "url": "http://www.gokorea.kr/news/articleView.html?idxno=16908"}]}], "notes": ""}} +{"query": "Joe Biden", "gold_report": {"report_title": "Joe Biden 미국 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2021–2025년 11월 24일 기준", "question_answer": "조 바이든 대통령은 인플레이션 감축법(IRA)과 반도체 지원법(CHIPS Act) 등 대규모 산업 육성 정책을 통해 미국 내 전기차·배터리 및 반도체 기업에 막대한 지원을 제공했습니다. 이로써 Tesla와 LG Energy Solution 등이 세액공제 혜택으로 생산 투자를 늘리고, Intel과 TSMC는 첨단 공장 건설에 나섰습니다. 또한 동맹국들과 협력하여 글로벌 공급망을 재편하고, 친환경 에너지 전환을 추진함으로써 관련 기업들의 성장을 견인하고 있습니다.", "influence_chains": [{"politician": "Joe Biden", "policy": "인플레이션 감축법(IRA)", "industry_or_sector": "전기차/배터리", "companies": ["Tesla", "LG Energy Solution"], "impact_description": "2022년 제정된 IRA는 북미산 전기차에 대한 세액공제 혜택을 부여하여 Tesla 등 미국 전기차 제조사의 판매 경쟁력을 높였습니다. 또한 배터리 핵심광물 요건을 정함으로써 LG Energy Solution 등 한국 배터리 업체가 미국 현지공장 투자를 확대하도록 유인했습니다:contentReference[oaicite:37]{index=37}:contentReference[oaicite:38]{index=38}. 그 결과 Tesla는 미국 시장 점유율을 공고히 했고 LG에너지솔루션은 현지 생산을 늘려 IRA 인센티브를 확보하는 등 양사 모두 수혜를 입었습니다.", "evidence": [{"source_title": "\"미국이 제조업 미래 가질 것\"…바이든, 연일 'IRA 성과' 자축", "url": "https://news.nate.com/view/20220915n03449"}, {"source_title": "LG엔솔, 美 IRA 훈풍 업고 600MWh급 ESS 수주 - 글로벌이코노믹", "url": "https://m.g-enews.com/article/Industry/2023/07/20230707113056852699375367"}]}, {"politician": "Joe Biden", "policy": "CHIPS 및 과학법", "industry_or_sector": "반도체/제조", "companies": ["Intel", "TSMC"], "impact_description": "2022년 통과된 CHIPS Act를 통해 미국은 반도체 공장 건설에 527억 달러 보조금을 투입하여 자국 내 생산을 장려했습니다. 이에 Intel은 오하이오 등에 신규 팹 건설을 발표했고, TSMC도 애리조나에 첨단 파운드리 공장을 착공하는 등 적극 호응했습니다. 이 법안은 미국 내 반도체 생산능력 확충으로 공급망 안보를 강화하고, 관련 기업들에게 대규모 투자를 촉발하는 효과를 가져왔습니다.", "evidence": [{"source_title": "바이든, \"메이드 인 아메리카 반도체\" 인텔 공장 방문", "url": "https://www.voakorea.com/a/biden-intel-ohio-chips/6359882.html"}, {"source_title": "TSMC, 미국 애리조나에 3나노 공장 추가 투자", "url": "https://www.bbc.com/korean/news-63896506"}]}, {"politician": "Joe Biden", "policy": "동맹 공급망 및 친환경 정책", "industry_or_sector": "에너지/인프라", "companies": ["General Motors", "First Solar"], "impact_description": "바이든 대통령은 동맹국들과 협력하여 핵심 광물 공급망을 구축하고 친환경 인프라 투자를 확대했습니다. 이를 통해 General Motors는 호주·캐나다 업체와 배터리 핵심광물 공급 계약을 맺어 전기차 생산을 안정화했고, 태양광 패널 기업 First Solar는 IRA의 재생에너지 투자 세액공제에 힘입어 미국 내 신규 공장을 건설했습니다. 이 같은 국제 공조와 친환경 정책은 관련 기업들의 장기적 성장 기반을 강화했습니다.", "evidence": [{"source_title": "바이든, 호주·캐나다와 핵심광물 동맹 강화…GM 리튬 확보", "url": "https://www.reuters.com/business/autos-transportation/gm-signs-lithium-supply-agreement-with-australias-controlled-thermal-resources-2021-07-02/"}, {"source_title": "First Solar, IRA 타고 미 남부에 태양광 패널 공장 신설", "url": "https://www.nytimes.com/2023/08/11/business/energy-environment/first-solar-manufacturing-ira.html"}]}], "notes": "2021년 취임 이후 바이든 행정부의 주요 경제정책에 따른 기업 영향을 분석했습니다. 대규모 재정 지원 법안들은 아직 진행 중인 사안으로, 여기서 언급된 효과는 2025년 현재 가시화된 초기 성과를 토대로 작성되었습니다."}, "model_response": {"report_title": "조 바이든의 정책-산업-기업 영향력 네트워크 분석", "time_range": "2021–2024", "question_answer": "조 바이든 대통령은 주요 정책(인프라, 반도체, 기후, 의료)을 통해 다양한 산업 및 기업과 연결되어 있습니다. 인프라 법에는 Bechtel, Siemens 등이, CHIPS 법안에는 Intel, TSMC 등이, 인플레이션 감축법에는 LG Chem, Syrah Resources 등이, 의료 정책에는 UnitedHealth, Merck 등이 관련되어 있습니다. 로비 및 기부 활동이 확인되었으나, 연방 계약자 기부 금지 규정으로 인해 직접적 연결은 제한적입니다.", "influence_chains": [{"politician": "조 바이든", "policy": "양당 인프라 법(Bipartisan Infrastructure Law)", "industry_or_sector": "인프라/건설", "companies": ["Bechtel", "Siemens", "Union Pacific", "Amtrak"], "impact_description": "조 바이든 대통령의 '양당 인프라 법(Bipartisan Infrastructure Law)'은 1.2조 달러 규모의 인프라 투자를 통해 도로, 교량, 전기 그리드, 전기차 충전소 등 다양한 분야에서 Bechtel, Siemens, Union Pacific, Amtrak 등의 기업이 참여하고 있습니다. 이 정책은 미국 전역의 인프라 현대화를 목표로 하며, 해당 기업들은 정부 계약자로서 프로젝트에 참여하고 있습니다.", "evidence": [{"source_title": "Wikipedia – Infrastructure Investment and Jobs Act", "url": "https://en.wikipedia.org/wiki/Infrastructure_Investment_and_Jobs_Act"}, {"source_title": "BlueGreen Alliance – User Guide to the Bipartisan Infrastructure Law", "url": "https://www.bluegreenalliance.org/site/a-user-guide-to-the-bipartisan-infrastructure-law-bil/"}, {"source_title": "Forbes – Everything in the $1.2 Trillion Infrastructure Bill", "url": "https://www.forbes.com/sites/jonathanponciano/2021/11/15/everything-in-the-12-trillion-infrastructure-bill-biden-just-signed-new-roads-electric-school-buses-and-more/"}, {"source_title": "Datex Corporation – Overview of the Bipartisan Infrastructure Law", "url": "https://datexcorp.com/overview-bipartisan-infrastructure-law/"}, {"source_title": "Build.gov – Guidebook to the Bipartisan Infrastructure Law", "url": "https://bidenwhitehouse.archives.gov/build/guidebook/"}]}, {"politician": "조 바이든", "policy": "CHIPS and Science Act", "industry_or_sector": "반도체", "companies": ["Intel", "TSMC"], "impact_description": "조 바이든 대통령의 'CHIPS and Science Act'는 반도체 산업 지원을 위해 Intel, TSMC 등에 자금을 지원하고 있습니다. 반도체 업계는 환경 규제 완화를 요구하며 바이든 행정부에 로비를 진행했으나, 특정 계약자나 로비스트와의 직접적 연결은 확인되지 않았습니다.", "evidence": [{"source_title": "Politico – Lobbyists to Biden: Unless You Want to Cede to China, Relax Environmental Rules", "url": "https://www.politico.com/news/2023/02/27/with-billions-at-stake-chip-lobby-pushes-biden-to-waive-enviro-rules-00084390"}]}, {"politician": "조 바이든", "policy": "인플레이션 감축법(Inflation Reduction Act)", "industry_or_sector": "청정 에너지/전기차", "companies": ["LG Chem", "Syrah Resources", "Ioneer"], "impact_description": "조 바이든 대통령의 '인플레이션 감축법(Inflation Reduction Act)'은 청정 에너지 및 전기차 분야에서 LG Chem, Syrah Resources, Ioneer 등의 기업에 자금을 지원하고 있습니다. 이 정책은 탄소 중립 목표 달성을 위해 배터리 및 광물 공급망 확대를 추진하고 있습니다.", "evidence": [{"source_title": "Biden’s Climate Bill: Inflation Reduction Act", "url": "https://www.theguardian.com/us-news/2023/aug/11/biden-climate-bill-inflation-reduction-act"}]}, {"politician": "조 바이든", "policy": "ACA 확장 및 인플레이션 감축법", "industry_or_sector": "의료/제약", "companies": ["UnitedHealth", "Kaiser Permanente", "Merck", "Moderna"], "impact_description": "조 바이든 대통령의 'ACA(Patient Protection and Affordable Care Act) 확장' 정책은 UnitedHealth, Kaiser Permanente 등의 기업과 연결되어 있습니다. 또한, '인플레이션 감축법'을 통한 의약품 가격 개혁 정책은 Merck, Moderna 등의 제약사와 관련이 있으며, 해당 기업들은 바이든 캠페인에 기부하거나 로비를 진행했습니다.", "evidence": [{"source_title": "Pharmaceuticals / Health Products Lobbying", "url": "https://www.opensecrets.org/industries/lobbying?cycle=2024&ind=H04"}, {"source_title": "Healthcare Executives Favored Biden in 2020", "url": "https://politicalaccountability.net/hifi/files/CPA---Business-Insider---We-combed-through-records-of-100-healthcare-companies-L-L----10-30-20---CPA-quoted.pdf"}]}], "notes": ""}} +{"query": "Donald Trump", "gold_report": {"report_title": "Donald Trump 전 미국 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2017–2021", "question_answer": "도널드 트럼프 전 대통령은 대규모 감세와 규제 완화 정책으로 Apple, JPMorgan Chase 등 미국 대기업들의 순이익 증가와 투자 여력을 확대시켰습니다. 한편 미국 우선주의에 입각한 관세 부과와 무역전쟁을 통해 철강·에너지 업계를 보호하여 U.S. Steel 등의 국내 기업이 수혜를 입었지만, 글로벌 공급망 긴장으로 일부 제조업에는 불확실성을 초래했습니다. 전반적으로 친기업 기조로 단기 주가 상승과 고용 호조를 이끌었으나 무역갈등의 부작용도 야기되었습니다.", "influence_chains": [{"politician": "Donald Trump", "policy": "2017년 감세정책", "industry_or_sector": "대기업/금융", "companies": ["Apple", "JPMorgan Chase"], "impact_description": "트럼프 행정부는 2017년 말 법인세 최고세율을 35%에서 21%로 대폭 인하하는 감세법안을 통과시켰습니다. 이로 인해 Apple은 해외유보금 약 2500억 달러를 본국으로 송환하여 주주배당과 자사주 매입을 확대했고, JPMorgan Chase 등 대형 은행들은 세금 부담 감소로 순이익이 크게 증가하여 신규 대출과 인력 채용을 늘렸습니다. 감세정책은 월가와 기업들의 투자 심리를 자극하며 증시 활황으로 이어졌습니다.", "evidence": [{"source_title": "Apple, 세제혜택으로 100조원 규모 자사주 매입 발표", "url": "https://www.cnbc.com/2018/05/01/apple-will-buy-back-100-billion-in-stock-and-boost-dividend.html"}, {"source_title": "미국 은행들, 법인세 인하로 수익 급증", "url": "https://www.wsj.com/articles/tax-law-delivers-a-million-dollar-boost-to-big-banks-ceos-11550527000"}]}, {"politician": "Donald Trump", "policy": "무역전쟁 및 관세 정책", "industry_or_sector": "철강/제조", "companies": ["U.S. Steel", "Harley-Davidson"], "impact_description": "트럼프 전 대통령은 2018년부터 중국을 비롯한 교역국에 대한 관세부과로 무역전쟁을 전개했습니다. 특히 수입 철강에 25% 관세를 매겨 U.S. Steel 등 미 철강사들이 내수 가격 상승으로 단기적 호황을 누렸습니다. 그러나 중국의 보복관세로 모터사이클 제조사 할리데이비슨은 유럽 판매가격 급등으로 생산 일부를 해외로 이전하는 등 어려움을 겪었습니다. 보호무역 조치는 일부 제조업에 이익이 되었지만 다른 기업에는 비용 부담과 시장 축소를 초래했습니다.", "evidence": [{"source_title": "미국 철강업, 관세 덕에 반짝 호황", "url": "https://www.bloomberg.com/news/articles/2018-08-01/u-s-steel-s-profit-swells-as-trump-tariffs-add-momentum-to-rally"}, {"source_title": "할리데이비슨, EU 관세에 일부 생산 해외 이전 결정", "url": "https://www.bbc.com/news/business-44595070"}]}, {"politician": "Donald Trump", "policy": "에너지산업 지원 정책", "industry_or_sector": "석유/가스", "companies": ["ExxonMobil", "Chevron"], "impact_description": "트럼프 정부는 파리기후협약 탈퇴와 환경규제 완화로 화석연료 산업을 적극 지원했습니다. 연방 토지의 원유 시추 제한을 풀고 송유관 건설을 승인하여 ExxonMobil과 Chevron 같은 석유 대기업이 신규 유전 개발과 생산량 증대에 나설 수 있었습니다. 이로 인해 미국은 2018년 세계 1위 산유국이 되었고 관련 기업들의 매출과 이익이 증가했습니다. 다만 탄소배출 증가에 따른 국제사회 비판도 함께 야기되었습니다.", "evidence": [{"source_title": "미국, 2018년 세계 최대 산유국 등극…셰일 혁명과 트럼프 정책 영향", "url": "https://www.eia.gov/todayinenergy/detail.php?id=37053"}, {"source_title": "트럼프, 키스톤XL 송유관 부활…에너지 업계 환영", "url": "https://www.reuters.com/article/us-usa-pipeline-keystone-idUSKBN1582OH"}]}], "notes": "2017–2021년 트럼프 행정부 시기의 경제정책 영향을 정리했습니다. 친기업 조치로 단기적인 주가 및 고용 지표 개선이 있었지만, 무역갈등 등 장기적 파장도 초래하여 평가가 엇갈립니다. 언급된 사례들은 대표적인 긍정·부정 효과를 보여주는 기업들입니다."}, "model_response": {"report_title": "도널드 트럼프의 정책, 산업, 기업 간 영향력 네트워크 분석", "time_range": "2017–2025", "question_answer": "도널드 트럼프는 Tax Cuts and Jobs Act (2017), 규제 완화, 무역 정책 등을 통해 제약, 금융, 로봇공학, 방위 산업과 연결되었으며, Pfizer, Goldman Sachs, Tesla, Vulcan Elements 등의 기업이 주요 혜택을 받았습니다. 트럼프 주니어의 1789 Capital은 연방 계약을 획득한 방위 기업에 투자했습니다.", "influence_chains": [{"politician": "Donald Trump", "policy": "Tax Cuts and Jobs Act (2017)", "industry_or_sector": "제약", "companies": ["Pfizer"], "impact_description": "제약 산업인 Pfizer는 세금 감면으로 40억 달러의 세금 절감 효과를 얻었습니다.", "evidence": [{"source_title": "Wikipedia: Tax Cuts and Jobs Act", "url": "https://en.wikipedia.org/wiki/Tax_Cuts_and_Jobs_Act"}, {"source_title": "Marketplace: Corporate Lobbying and TCJA", "url": "https://www.marketplace.org/story/2020/01/03/how-corporate-lobbying-changed-the-2017-tax-overhaul"}]}, {"politician": "Donald Trump", "policy": "Tax Cuts and Jobs Act (2017)", "industry_or_sector": "금융", "companies": ["Goldman Sachs"], "impact_description": "금융 산업인 Goldman Sachs는 규제 완화로 이익을 얻었습니다.", "evidence": [{"source_title": "Marketplace: Corporate Lobbying and TCJA", "url": "https://www.marketplace.org/story/2020/01/03/how-corporate-lobbying-changed-the-2017-tax-overhaul"}]}, {"politician": "Donald Trump", "policy": "규제 완화", "industry_or_sector": "로봇공학", "companies": ["Tesla"], "impact_description": "로봇공학 산업인 Tesla는 트럼프 행정부의 제조업 지원 정책 아래 Optimus 로봇을 홍보했습니다.", "evidence": [{"source_title": "Naver News 1: U.S.-China Robotics Rivalry", "url": "https://n.news.naver.com/mnews/article/008/0005287528"}]}, {"politician": "Donald Trump", "policy": "규제 완화", "industry_or_sector": "방위", "companies": ["Vulcan Elements", "Firehawk Aerospace", "Unusual Machines"], "impact_description": "방위 산업인 Vulcan Elements, Firehawk Aerospace, Unusual Machines는 트럼프 주니어의 1789 Capital 투자 후 연방 계약을 획득했습니다.", "evidence": [{"source_title": "Naver News 2: Trump Jr.’s 1789 Capital and Federal Contracts", "url": "https://n.news.naver.com/mnews/article/018/0006177694"}]}], "notes": ""}} +{"query": "Xi Jinping", "gold_report": {"report_title": "Xi Jinping 중국 국가주석의 정치·경제 영향력 네트워크 분석", "time_range": "2012–2025년 11월 24일 기준", "question_answer": "시진핑 주석은 일대일로 전략을 통해 중국 국영 건설기업들의 해외 인프라 수주를 획기적으로 늘렸고, 기술굴기 정책으로 SMIC 등 반도체 기업의 자립을 추진했습니다. 동시에 공동부유 기치 아래 빅테크 기업들에 대한 강도 높은 규제를 단행하여 Alibaba와 Tencent의 성장에 제동을 걸었습니다. 이러한 정책들은 중국 경제에 국가의 역할을 강화하여 국유기업이 부상하고 민영 기술기업은 구조조정과 사회공헌 압력을 받는 등 명암이 교차하는 영향을 미쳤습니다.", "influence_chains": [{"politician": "Xi Jinping", "policy": "일대일로(一带一路) 전략", "industry_or_sector": "해외인프라/건설", "companies": ["중국교통건설공사(CCCC)", "중국철도건설공사(CRCC)"], "impact_description": "2013년 시작된 시진핑 주석의 일대일로 구상은 아시아, 아프리카, 유럽의 140여 개국에 걸친 대규모 인프라 투자로, 중국교통건설공사와 중국철도건설공사 같은 국영 건설사가 해외 도로·항만·철도 공사를 대거 수주하는 결과를 낳았습니다. 예컨대 CCCC는 파키스탄 과다르 항만과 아프리카 여러 나라의 도로 건설을 수행했고, CRCC는 동남아 고속철 등 프로젝트를 맡아 매출 급증과 국제적 영향력 확대를 누렸습니다.", "evidence": [{"source_title": "중국 '일대일로' 10년, 누적 투자 1천조 돌파", "url": "https://www.xinhuanet.com/english/2023-08/17/c_1319807381.htm"}, {"source_title": "Rail giant CRCC thrives on Belt and Road projects", "url": "https://www.globaltimes.cn/content/1207394.shtml"}]}, {"politician": "Xi Jinping", "policy": "빅테크 규제와 공동부유", "industry_or_sector": "인터넷/플랫폼", "companies": ["Alibaba", "Tencent"], "impact_description": "2020년 말 Ant그룹 상장 중단을 시작으로 시진핑 정부는 플랫폼 독점과 자본확장을 억제하기 위한 빅테크 규제를 본격화했습니다. 이에 따라 알리바바는 독점행위로 182억 위안(약 3조원)의 과징금을 부과받았고:contentReference[oaicite:39]{index=39}:contentReference[oaicite:40]{index=40}, 텐센트 역시 신규 게임 서비스 인가 지연과 반독점 조사로 성장세가 둔화되었습니다. 이 공동부유 기조 속에 두 기업은 수익의 사회 환원을 확대하고 사업 구조를 보수적으로 조정하게 되어, 중국 인터넷 업계 전반에 걸쳐 긴장과 변화가 일어났습니다.", "evidence": [{"source_title": "中, 알리바바에 반독점법 위반 벌금 3조원 부과…사상최대 규모", "url": "https://news.nate.com/view/20210410n02051"}, {"source_title": "중국 게임산업 규제에 텐센트 실적 타격", "url": "https://www.reuters.com/technology/tencent-quarterly-revenue-falls-first-time-weaker-ad-gaming-sales-2022-08-17/"}]}, {"politician": "Xi Jinping", "policy": "기술굴기와 자립화", "industry_or_sector": "반도체/통신", "companies": ["SMIC", "화웨이"], "impact_description": "미중 기술패권 경쟁이 심화되자, 시진핑 주석은 핵심 기술 자립을 위해 막대한 국가자금을 투입했습니다. 중국 파운드리 업체 SMIC는 국가의 지원 아래 14nm 공정 양산에 성공하며 일부 국산화 성과를 거뒀고, 제재를 받은 화웨이는 자체 운영체제와 5G 장비 국산 부품 개발에 집중했습니다. 이러한 기술굴기 노력으로 미국 제재에도 불구하고 화웨이는 2023년 7nm 칩을 탑재한 스마트폰을 출시하는 등 자급 능력을 일정 부분 입증했습니다.", "evidence": [{"source_title": "SMIC receives government funds to boost chip self-sufficiency", "url": "https://www.ft.com/content/35c4e7fa-519a-4d44-9a02-414a2caba90b"}, {"source_title": "화웨이, 자체 칩 탑재 '메이트60' 출시…미국 제재 돌파구", "url": "https://www.hani.co.kr/arti/economy/it/1108186.html"}]}], "notes": "시진핑 주석 집권 하 중국 경제는 고속성장에서 질적 발전 및 안보 중시로 전환되고 있습니다. 본 분석은 대표적 사례로 국영기업의 약진과 민영기업 규제를 다루었으며, 중국 정부의 강력한 개입이 기업 운명에 직접 영향을 주는 특성을 반영합니다."}, "model_response": {"report_title": "시진핑의 정책, 산업, 기업 및 정치-경제 영향력 네트워크 분석", "time_range": "2013-2025", "question_answer": "시진핑은 'Made in China 2025' 및 '중국의 꿈' 정책과 연결되어 있으며, 로봇공학, 바이오제약, 기후 기술 등 주요 산업 분야와 관련이 있습니다. 그러나 특정 기업들과의 직접적인 연결 증거는 제한적입니다. 시진핑의 정치적 영향력 네트워크는 반부패 운동을 통한 파벌 강화와 20차 당 대회에서의 권력 집중으로 특징지어집니다.", "influence_chains": [{"politician": "Xi Jinping", "policy": "Made in China 2025 (MIC2025)", "industry_or_sector": "로봇공학", "companies": ["UBTECH Robotics", "Siasun Robot & Automation", "Estun Automation", "Inovance Technology", "Ecovacs Robotics"], "impact_description": "로봇 산업은 MIC2025의 주요 목표 분야 중 하나로, 2023년 기준 170억 달러 규모의 시장을 형성하며 지속적인 성장을 보이고 있습니다. 그러나 해당 기업들이 MIC2025의 직접적인 수혜자라는 증거는 없습니다.", "evidence": [{"source_title": "Source 1", "url": "https://tmsstory.co.kr/%EC%A4%91%EA%B5%AD-%ED%9C%B4%EB%A8%B8%EB%85%B8%EC%9D%B4%EB%93%9C-%EB%A1%9C%EB%B4%87-%EA%B4%80%EB%A0%A8%EC%A3%BC-top5-%EB%AF%B8%EB%9E%98-%EC%82%B0%EC%97%85-%ED%88%AC%EC%9E%90/"}, {"source_title": "Source 4", "url": "https://mini-buu.com/62"}]}, {"politician": "Xi Jinping", "policy": "Made in China 2025 (MIC2025)", "industry_or_sector": "바이오제약", "companies": ["Huarong (Guangdong) Pharmaceutical Co., Ltd.", "Jiangsu Hengrui Medicine Co., Ltd.", "Shanghai Fosun Pharmaceutical (Group) Co., Ltd."], "impact_description": "바이오제약 산업은 MIC2025의 주요 목표 분야 중 하나이지만, 해당 기업들이 MIC2025의 직접적인 수혜자라는 증거는 없습니다.", "evidence": [{"source_title": "Source 2", "url": "https://www.huarongpharma.com/blog/2025-top-10-biopharmaceuticals-manufacturers-in-ch-1921845.html"}]}, {"politician": "Xi Jinping", "policy": "시진핑의 권력 집중", "industry_or_sector": "정치-경제 영향력 네트워크", "companies": [], "impact_description": "시진핑은 반부패 운동을 통해 상하이 및 청년 연맹 파벌을 겨냥하며 개인 파벌을 강화했고, 20차 당 대회에서 정책 선호도와 인사 임명에서 시진핑 파벌의 영향력을 더욱 공고히 했습니다.", "evidence": [{"source_title": "Source 3", "url": "https://orcasia.org/article/140/faction-politics-in-china-and-its-implications-for-the-20th-party-congress"}]}], "notes": ""}} +{"query": "Vladimir Putin", "gold_report": {"report_title": "Vladimir Putin 러시아 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2000–2025년 11월 24일 기준", "question_answer": "블라디미르 푸틴 대통령은 에너지 국유화와 자원무기화를 통해 Gazprom과 Rosneft 등 국영 에너지 기업을 러시아 경제의 핵심으로 부상시켰습니다. 2022년 우크라이나 침공 이후에는 군수산업에 대한 수요가 폭증하여 Kalashnikov Concern 등의 방산업체가 내수와 수출 모두 급증하는 효과를 보았습니다. 동시에 서방의 제재로 러시아 경제는 위축되었지만, 정부는 수입대체 정책으로 국내 제조업 육성을 추진하며 제한된 범위 내에서 일부 IT·농업 기업의 성장을 도모하고 있습니다.", "influence_chains": [{"politician": "Vladimir Putin", "policy": "에너지 국유화·자원 무기화", "industry_or_sector": "에너지/가스", "companies": ["Gazprom", "Rosneft"], "impact_description": "푸틴 대통령은 집권 초부터 민영화되었던 에너지 자산을 재국유화하거나 국가 통제권을 강화했습니다. 천연가스 기업 가스프롬과 석유기업 로스네프트는 크렘린의 지원 아래 해외 파이프라인 건설과 OPEC+ 협조를 통해 막대한 수익을 올렸습니다. 특히 2006년 우크라이나 가스 차단 사태 등 자원을 외교무기로 활용하면서 Gazprom은 유럽 시장 지배력을 높였고:contentReference[oaicite:41]{index=41}, Rosneft는 국유화된 Yukos 자산 인수로 국내 1위 석유사가 되는 등 푸틴 정책의 최대 수혜자가 되었습니다.", "evidence": [{"source_title": "푸틴, Yukos 해체 후 로스네프트 국영 석유왕국 건설", "url": "https://www.wsj.com/articles/SB119705486110361204"}, {"source_title": "러시아 가스프롬, 우크라이나 파이프라인 분쟁 일지", "url": "https://www.bbc.com/russian/russia/2014/06/140616_gas_dispute_timeline"}]}, {"politician": "Vladimir Putin", "policy": "우크라이나 침공과 군수산업", "industry_or_sector": "방위산업", "companies": ["Kalashnikov Concern", "Uralvagonzavod"], "impact_description": "2022년 2월 푸틴 대통령의 우크라이나 침공 이후 러시아 군수산업은 전시에 준하는 생산증대로 특수를 누렸습니다. 소총과 드론을 만드는 칼라시니코프 콘체른사는 정부로부터 막대한 군수품 주문을 받아 생산량이 크게 늘었고, 전차 제조사 우랄바곤자보드는 손실 기업에서 전쟁 기간 핵심 군수업체로 급부상했습니다. 내수 수요로 매출이 급증함과 동시에 제재로 서방 부품 조달이 어렵지만, 정부의 전폭적 지원 아래 이들 업체는 러시아 경제에서 차지하는 비중이 한층 높아졌습니다.", "evidence": [{"source_title": "우크라이나 전쟁 1년, 러시아 군수산업 '밤낮없이 가동'", "url": "https://www.nytimes.com/2023/02/18/world/europe/russia-weapons-industry-war.html"}, {"source_title": "제재 속에서도 러 전차공장 Uralvagonzavod 생산 확대", "url": "https://www.reuters.com/world/europe/despite-sanctions-russia-is-making-materiel-faster-than-west-2023-08-18/"}]}, {"politician": "Vladimir Putin", "policy": "수입대체산업 육성", "industry_or_sector": "제조/기술", "companies": ["Yandex", "Ростсельмаш(Rostselmash)"], "impact_description": "2014년 크림 합병 이후 서방 제재가 시작되자 푸틴 정부는 '수입대체(Импортозамещение)' 정책을 내걸고 국내 산업 보호에 나섰습니다. 검색포털 얀덱스는 구글 제한 조치의 반사이익으로 러시아 인터넷 시장 점유율을 60% 이상으로 높였고, 농기계 제조사 Rostselmash는 외산 농기계 대체를 위한 보조금 지원으로 러시아 내 트랙터 시장의 65%를 차지하게 되었습니다. 제재 하에서 자립을 도모한 이 정책은 제한적 성공을 거두었지만 첨단 반도체 등에서는 여전히 취약점을 드러냈습니다.", "evidence": [{"source_title": "러시아, 제재 대응 수입대체 정책 강화", "url": "https://www.economist.com/europe/2018/07/05/russia-is-struggling-to-replace-western-imports"}, {"source_title": "Yandex Becomes Unlikely Beneficiary of Russia's Tech Clampdown", "url": "https://www.ft.com/content/c0e7d9a2-3fa3-11e9-b896-fe36ec32aece"}]}], "notes": "푸틴 집권기의 러시아 경제는 에너지와 군수에 크게 의존하며, 외부 제재에 적응하는 형태로 전개되었습니다. 본 보고서는 그 중 눈에 띄는 사례들을 추려냈으며, 러시아 기업들은 국가정책 방향에 따라 흥망이 좌우되는 경향이 강함을 보여줍니다."}, "model_response": {"report_title": "블라디미르 푸틴의 정책, 산업, 기업 영향력 네트워크 분석", "time_range": "2014–2025", "question_answer": "블라디미르 푸틴은 에너지(가즈프롬, 로스네프트), 방위(로스테크), 금융(뱅크 로시야) 부문에서 주요 정책과 기업에 영향을 미치며, 올리가르히 및 국가 연계 기관과의 관계를 통해 광범위한 정치·경제적 영향력을 행사함. 이는 제재, 해외 자산, 지정학적 수사(예: '러시아의 국경은 끝이 없다')로 확인됨.", "influence_chains": [{"politician": "블라디미르 푸틴", "policy": "에너지 부문 국가 통제 강화", "industry_or_sector": "에너지", "companies": ["Gazprom", "Rosneft"], "impact_description": "푸틴은 가즈프롬과 로스네프트를 통제하며 이고리 세친과 같은 충성파를 임명했고, 가즈프롬은 크렘린의 지정학적 이익을 위한 도구로 활용됨. 푸틴의 자연자원 관리 학문적 배경이 에너지 정책 결정에 영향을 미침.", "evidence": [{"source_title": "Kremlin Energy Politics and Putin’s Seizure of Russia’s Strategic Resources", "url": "https://medium.com/@petergrant_14485/kremlin-energy-politics-and-putins-seizure-of-russia-s-strategic-resources-68f8a5864595"}]}, {"politician": "블라디미르 푸틴", "policy": "방위 산업 통제 및 군사 행동 지원", "industry_or_sector": "방위", "companies": ["Rostec"], "impact_description": "세르게이 체메조프(로스테크 CEO)는 푸틴의 오랜 동료로, 크림 반도 통합에 로스테크가 관여했으며 미국, EU, 영국으로부터 제재를 받음. 체메조프 가족은 모스크바 아파트와 초호화 요트를 소유.", "evidence": [{"source_title": "Putin-Russia Offshore Network", "url": "https://www.icij.org/investigations/panama-papers/20160403-putin-russia-offshore-network/"}, {"source_title": "U.S. Treasury Sanctions Russian Officials and Entities", "url": "https://home.treasury.gov/news/press-releases/jl2369"}, {"source_title": "Sergei Chemezov Sanctions Profile", "url": "https://ngoreport.org/sanctions-database/chemezov-sergey-viktorovich/"}]}, {"politician": "블라디미르 푸틴", "policy": "금융 부문 영향력 행사 및 제재 회피", "industry_or_sector": "금융", "companies": ["Bank Rossiya"], "impact_description": "뱅크 로시야는 '푸틴의 개인 은행'으로 불리며 유리 코발추크 등 올리가르히가 소유. 2014년 미국 제재 후 푸틴이 고객 보호를 위해 개입했으며, 이고리 안드레이브는 뇌물 수수로 8.5년 형을 선고받음.", "evidence": [{"source_title": "Vice President of Putin’s Personal Cashbox Jailed 85 Years for Bribery", "url": "https://www.themoscowtimes.com/2025/12/01/vice-president-of-putins-personal-cashbox-jailed-85-years-for-bribery-a91297"}, {"source_title": "U.S. Treasury Sanctions Russian Officials and Entities", "url": "https://home.treasury.gov/news/press-releases/jl2369"}, {"source_title": "EU Hits Back with New Evidence Against Daughter of Putin Ally’s Wife", "url": "https://www.gazetaexpress.com/en/EU-hits-back-with-new-evidence-against-daughter-of-Putin-allys-wife-under-sanctions-for-Kremlin-ties-and-suspicious-assets/"}]}, {"politician": "블라디미르 푸틴", "policy": "에너지 수출 확대 및 경제적 안정성 유지", "industry_or_sector": "에너지", "companies": ["OPEC+"], "impact_description": "푸틴은 서방의 제재에도 러시아 에너지 부문이 안정적이라고 주장하며, OPEC+ 데이터에 따르면 원유 생산량은 전쟁 전 대비 0.5백만 배럴/일 감소했으나 9.3백만 배럴/일을 유지.", "evidence": [{"source_title": "Russian President Vladimir Putin Claims Energy Sector Stability", "url": "https://www.industrialinfo.com/iirenergy/showNews.jsp?newsitemID=331144"}]}], "notes": ""}} +{"query": "Narendra Modi", "gold_report": {"report_title": "Narendra Modi 인도 총리의 정치·경제 영향력 네트워크 분석", "time_range": "2014–2025년 11월 24일 기준", "question_answer": "나렌드라 모디 총리는 'Make in India' 캠페인을 통해 Foxconn, Tata Motors 등 제조 기업의 투자를 유치하여 인도를 글로벌 생산기지로 부상시켰습니다. 디지털 인디아와 금융 포용 정책으로 Paytm 같은 핀테크와 Reliance Jio 통신사가 폭발적 성장을 이뤘으며, 2016년 화폐개혁(디모네타이제이션)은 디지털 결제 기업에 호재로 작용했습니다. 또한 GST 도입으로 전국 단일시장 형성 등 경제 현대화를 추진하여 기업 경영환경을 개선했으나, 일부 중소상인은 적응에 어려움을 겪기도 했습니다.", "influence_chains": [{"politician": "Narendra Modi", "policy": "Make in India 캠페인", "industry_or_sector": "제조업/전자", "companies": ["Foxconn", "Tata Motors"], "impact_description": "2014년 시작된 Make in India 정책으로 외국 기업의 인도 제조 투자가 대폭 늘었습니다. 아이폰 위탁생산업체 폭스콘은 인도 공장에 수십억 달러를 투자해 2025년까지 일자리 5만 개 창출을 발표했고, Tata Motors는 전기차 및 배터리 생산을 위해 정부 인센티브를 받아 국내 생산능력을 확충했습니다. 이 정책 덕분에 인도 제조업 GDP 비중이 상승했고, 스마트폰 등 여러 제품에서 인도가 조립허브로 떠올랐습니다.", "evidence": [{"source_title": "Foxconn to Invest $5 Billion in India for Manufacturing", "url": "https://www.bloomberg.com/news/articles/2015-08-08/foxconn-said-to-plan-5-billion-investment-in-india-over-5-years"}, {"source_title": "Tata Motors banks on Make in India to drive EV growth", "url": "https://economictimes.indiatimes.com/industry/auto/auto-news/tata-motors-to-drive-in-more-evs-focuses-on-localisation-under-make-in-india/articleshow/86365921.cms"}]}, {"politician": "Narendra Modi", "policy": "디지털 인디아 및 핀테크", "industry_or_sector": "IT/통신·결제", "companies": ["Reliance Jio", "Paytm"], "impact_description": "모디 총리는 2015년 'Digital India' 프로그램으로 전국에 저가 고속인터넷과 디지털 서비스를 확산시켰습니다. Reliance Jio는 파격적인 무료 통신요금 전략과 정부 지원으로 4G 가입자 4억 명을 돌파하며 인도 통신시장을 재편했고, 2016년 화폐개혁 이후 Paytm 등 모바일 결제 플랫폼은 현금 부족 사태 속 폭발적 이용 증가로 거래액이 급증했습니다. 이처럼 정부의 디지털화 드라이브는 인도를 세계 최대 데이터 소비시장으로 만들며 관련 기업들의 급성장을 이끌었습니다.", "evidence": [{"source_title": "Reliance Jio's free data revolution spurred Digital India", "url": "https://www.theguardian.com/technology/2017/sep/21/reliance-jio-mukesh-ambani-india-mobile-internet-free-data-4g"}, {"source_title": "Paytm usage surges after demonetisation", "url": "https://www.bbc.com/news/world-asia-india-37974423"}]}, {"politician": "Narendra Modi", "policy": "GST 도입과 세제 개혁", "industry_or_sector": "물류/소비재", "companies": ["Dabur", "Mahindra Logistics"], "impact_description": "2017년 모디 정부는 인도 전역에 단일 부가가치세(GST)를 도입하여 복잡한 연방별 세금을 통합했습니다. 이로 인해 FMCG(일용소비재) 기업 Dabur는 물류비 절감과 재고회전율 개선으로 이익률이 상승했고, 물류기업 Mahindra Logistics는 창고를 허브화하며 전국 배송 효율이 크게 높아졌습니다. GST 시행 초반 일시적 혼란에도 불구하고 장기적으로는 기업 환경이 투명해지고 국내 무역이 촉진되는 효과를 가져왔습니다.", "evidence": [{"source_title": "GST has cut logistics cost by 20%, says CRISIL", "url": "https://www.financialexpress.com/economy/gst-cut-logistics-cost-by-20-crisil/1190728/"}, {"source_title": "Dabur sees volume growth post GST", "url": "https://www.business-standard.com/article/companies/dabur-india-posts-strong-volume-growth-as-gst-impact-wanes-118020101284_1.html"}]}], "notes": "모디 총리 재임 기간 인도 경제는 구조개혁과 디지털화에 속도를 냈습니다. 본 분석은 그 중 기업에 미친 주요 사례들을 다루었으며, 정책마다 득실이 있었으나 전반적으로 인도 기업의 국제 경쟁력이 제고되는 방향으로 나아갔습니다."}, "model_response": {"report_title": "나렌드라 모디의 정책-산업-기업 영향력 네트워크 분석", "time_range": "2014–2025", "question_answer": "나렌드라 모디 총리는 'Make in India' 및 'Digital India' 정책을 통해 제조업 및 디지털 인프라 분야에서 삼성, 폭스콘, 타타 그룹, 릴라이언스 Jio, Paytm 등 기업들과 협력했습니다. 또한 아다니 그룹, 릴라이언스 인더스트리즈 등 주요 기업 리더들과의 회의를 통해 경제 성장 정책을 추진했습니다.", "influence_chains": [{"politician": "Narendra Modi", "policy": "Make in India", "industry_or_sector": "제조업", "companies": ["Samsung", "Foxconn", "Tata Group"], "impact_description": "Make in India 정책은 제조업, 자동차, 전자제품, 제약, 방위산업, 재생에너지, 항공우주, 섬유 등 25개 산업을 대상으로 하며, 국내 제조업 촉진, FDI 유치, 일자리 창출을 목표로 합니다. 삼성, 폭스콘, 타타 그룹 등이 PLI 인센티브 및 주정부 지원을 통해 인도 내 생산 시설을 확장했습니다.", "evidence": [{"source_title": "How India’s Make in India Initiative is Boosting Manufacturing", "url": "https://www.diversitech-global.com/post/how-indias-make-in-india-initiative-is-boosting-manufacturing"}, {"source_title": "Make in India", "url": "https://razorpay.com/learn/make-in-india/"}, {"source_title": "Make in India", "url": "https://byjus.com/free-ias-prep/make-in-india/"}, {"source_title": "[단독] 대러시아 수출 제재의 빈틈… 모스크바에 전시된 한국 첨단 장비", "url": "https://www.dnews.co.kr/uhtml/view.jsp?idxno=202508181138497390009"}, {"source_title": "Foxconn and Apple Bolster India’s Make in India Initiative with Record Investments", "url": "https://www.pgurus.com/foxconn-and-apple-bolster-indias-make-in-india-initiative-with-record-investments/"}, {"source_title": "Foxconn Invest $1.5bn in India, Apple Strategy", "url": "https://www.techmonitor.ai/digital-economy/big-tech/foxconn-invest-1-5bn-india-apple-strategy"}, {"source_title": "All About Foxconn in India: Boosted Manufacturing in TN Under Scanner for Labour Practices", "url": "https://theprint.in/india/all-about-foxconn-in-india-boosted-manufacturing-in-tn-under-scanner-for-labour-practices/2150207/"}, {"source_title": "YouTube Video on India’s PLI Scheme and Foxconn’s $1.5 Billion Investment", "url": "https://www.youtube.com/watch?v=CusSU32Oslk"}, {"source_title": "How Tata is Putting the Roar in the Make in India Lion", "url": "https://economictimes.indiatimes.com/industry/cons-products/electronics/how-tata-is-putting-the-roar-in-the-make-in-india-lion/articleshow/109168823.cms"}, {"source_title": "Tata’s $11 Billion Leap: India’s First Semiconductor Fab in Partnership with Taiwan’s PSMC", "url": "https://carboncredits.com/tatas-11-billion-leap-indias-first-semiconductor-fab-in-partnership-with-taiwans-psmc/"}]}, {"politician": "Narendra Modi", "policy": "Digital India", "industry_or_sector": "디지털 인프라", "companies": ["Reliance Jio", "Paytm", "Google"], "impact_description": "디지털 인도 이니셔티브는 통신, 핀테크, IT/인프라 분야를 중심으로 디지털 인프라, 거버넌스, 시민 역량 강화를 목표로 합니다. Reliance Jio는 5G 및 BharatNet 인프라 구축으로 연결성 목표를 지원했으며, Paytm은 UPI를 통해 디지털 결제 혁신을 주도했습니다.", "evidence": [{"source_title": "Reliance Jio", "url": "https://www.ril.com/businesses/digital-services-jio"}, {"source_title": "Jio", "url": "https://www.jio.com/aboutus/jio-effect/"}, {"source_title": "Jio", "url": "https://www.jio.com/aboutus/innovations/"}, {"source_title": "UPI and Digital Payments Transforming India’s Financial Landscape", "url": "https://uppcsmagazine.com/upi-and-digital-payments-transforming-indias-financial-landscape/"}, {"source_title": "Paytm", "url": "https://paytm.com/faqs/upi/does-upi-come-under-digital-india"}, {"source_title": "Revolutionizing Payments: How Paytm Became the UPI Leader in India", "url": "https://www.thequint.com/brandstudio/revolutionizing-payments-how-paytm-became-the-upi-leader-in-india"}, {"source_title": "Impact of UPI Wars", "url": "https://paytm.com/blog/payments/upi/impact-of-upi-wars/"}, {"source_title": "Digital India Act 2023", "url": "https://www.shankariasparliament.com/current-affairs/digital-india-act-2023"}, {"source_title": "Digital India Act", "url": "https://vajiramandravi.com/current-affairs/digital-india-act/"}, {"source_title": "Digital India", "url": "https://en.wikipedia.org/wiki/Digital_India"}, {"source_title": "Digital India", "url": "https://www.ibef.org/government-schemes/digital-india"}, {"source_title": "Digital India Initiative", "url": "https://businessviewpointmagazine.com/digital-india-initiative/"}, {"source_title": "What is Digital India: Initiatives, Objectives and Benefits", "url": "https://www.businessgo.hsbc.com/en/article/what-is-digital-india-initiatives-objectives-and-benefits"}]}, {"politician": "Narendra Modi", "policy": "경제 성장 정책", "industry_or_sector": "인프라 및 통신", "companies": ["Adani Group", "Reliance Industries", "Tata Sons", "Bharti Airtel", "Mahindra Group"], "impact_description": "모디 총리는 아다니 그룹, 릴라이언스 인더스트리즈, 타타 그룹, 바르티 에어텔, 마힌드라 그룹 등 주요 기업 리더들과 경제 성장 및 예산 논의를 진행했습니다. 아다니 그룹은 인프라 분야에서, 릴라이언스 Jio는 디지털 인도 정책과 연계되어 성장했습니다.", "evidence": [{"source_title": "PM Modi holds meet with Indian business leaders: Ambani, Tata, Adani attend event", "url": "https://www.businesstoday.in/business/news/story/pm-modi-holds-meet-with-indian-business-leaders-ambani-tata-adani-attend-event-241954-2020-01-06"}, {"source_title": "How Modi’s leadership and initiatives of Ambani and Adani are leading India’s growth", "url": "https://theindianeye.com/2024/05/13/how-modis-leadership-and-initiatives-of-ambani-and-adani-are-leading-indias-growth/"}, {"source_title": "Ahead of the Budget, PM Narendra Modi meets top industrialists", "url": "https://www.livemint.com/news/india/ahead-of-the-budget-pm-narendra-modi-meets-top-industrialists-11578312075784.html"}, {"source_title": "PM Modi meets India’s top business leaders to discuss reviving economy, biz sentiment", "url": "https://www.thenewsminute.com/money/pm-modi-meets-indias-top-business-leaders-discuss-reviving-economy-biz-sentiment-115489"}]}], "notes": ""}} +{"query": "Rishi Sunak", "gold_report": {"report_title": "Rishi Sunak 영국 총리의 정치·경제 영향력 네트워크 분석", "time_range": "2020–2025년 11월 24일 기준", "question_answer": "리시 수낙 총리는 재무장관 시절 코로나19 직격탄을 맞은 경제를 살리기 위해 대규모 임금 보조(Furlough) 정책을 펼쳐 British Airways, 마크스앤드스펜서 등 기업들이 고용을 유지하도록 도왔습니다. 총리 재직 중에는 영국을 AI 혁신 허브로 만들겠다며 AI 안전 서밋을 개최하고 반도체 연구에 투자하여 DeepMind, Graphcore 같은 첨단기업에 우호적 환경을 조성했습니다. 또한 브렉시트 이후 금융규제 개혁을 추진해 런던 금융시장의 경쟁력을 높이려 시도하고 있습니다.", "influence_chains": [{"politician": "Rishi Sunak", "policy": "코로나 고용유지 지원(Furlough)", "industry_or_sector": "항공/소매", "companies": ["British Airways", "Marks & Spencer"], "impact_description": "수낙 총리가 재무장관으로 있던 2020년, 영국 정부는 코로나19 봉쇄로 타격받은 기업 직원을 대상으로 인건비의 80%를 보전해주는 Furlough 제도를 도입했습니다. 그 결과 국제선 운항이 중단된 British Airways는 대규모 정리해고를 피하고 수만 명의 직원을 유지할 수 있었으며, 매장 영업이 막혔던 유통업체 Marks & Spencer도 인력 유지를 통해 팬데믹 후 빠른 영업 재개가 가능했습니다. 이 조치는 18개월간 114억 파운드 규모로 투입되어 실업률 급등을 억제하는 효과를 냈습니다.", "evidence": [{"source_title": "영국 코로나 휴직지원에 900만명 혜택…BA 등 대규모 해고 방지", "url": "https://www.bbc.com/news/business-52528304"}, {"source_title": "Marks & Spencer says furlough scheme crucial to survival", "url": "https://www.theguardian.com/business/2020/may/20/marks-spencer-ms-coronavirus-lockdown"}]}, {"politician": "Rishi Sunak", "policy": "AI·반도체 혁신 지원", "industry_or_sector": "첨단기술/반도체", "companies": ["DeepMind", "Graphcore"], "impact_description": "수낙 총리는 2023년 영국에서 최초의 AI 안전 정상회의를 주최하고, AI 연구 및 반도체 설계 분야에 10억 파운드 이상을 투자하겠다고 발표했습니다. 구글 산하의 인공지능 연구소 DeepMind는 정부의 규제 완화와 런던을 AI 글로벌 허브로 만들겠다는 약속 속에 연구 인력을 확충하고 있고, 영국 팹리스 반도체 스타트업 Graphcore는 정부 지원금과 주문형 반도체 연구 인프라 조성 계획에 힘입어 Nvidia와 경쟁할 수 있는 AI칩 개발에 박차를 가하고 있습니다. 이러한 지원으로 영국 첨단기술 업계는 브렉시트 이후에도 투자 유치를 이어가고 있습니다.", "evidence": [{"source_title": "UK to invest £1 billion in supercomputer and AI chips", "url": "https://www.ft.com/content/2b3f0d58-e1fb-4a8c-a6f7-4f4a7b9becec"}, {"source_title": "Sunak's AI Summit draws DeepMind, OpenAI to UK", "url": "https://www.bloomberg.com/news/articles/2023-10-31/sunak-s-ai-summit-draws-pitches-from-google-s-deepmind-and-openai"}]}, {"politician": "Rishi Sunak", "policy": "금융규제 개혁(에든버러 개혁)", "industry_or_sector": "금융/핀테크", "companies": ["Barclays", "Revolut"], "impact_description": "브렉시트 이후 금융 경쟁력 강화를 위해 수낙 총리는 2022년 말 '에든버러 개혁' 계획을 발표해 EU 규제였던 은행 자기자본 규제 등 일부를 완화하고 핀테크 혁신을 장려했습니다. 이에 따라 Barclays 같은 대형은행은 파생상품 거래 등에서 규제비용이 줄어들 것으로 기대하고 있고, 디지털은행 Revolut는 보다 유연한 규제 환경 속에서 신규 라이선스 취득과 해외 진출에 탄력이 붙을 전망입니다. 다만 이러한 개혁이 2008년 금융위기 이후 강화된 투자자 보호 장치를 약화시킬 수 있다는 우려도 있습니다.", "evidence": [{"source_title": "영국, ‘에든버러 개혁’으로 EU 금융규제 대체…런던 경쟁력 강화 시도", "url": "https://www.economist.com/britain/2022/12/09/britain-unveils-its-biggest-package-of-financial-reforms-in-decades"}, {"source_title": "핀테크 Revolut, 영국 규제 완화 기대 속 성장 가속", "url": "https://www.ft.com/content/0d7451ec-5325-4f50-8af1-349172226ec7"}]}], "notes": "리시 수낙 총리의 경제정책은 팬데믹 대응부터 브렉시트 후속조치까지 폭넓게 전개되었습니다. 영국의 구조적 도전을 마주한 상황에서 단기 응급조치(코로나 지원)와 중장기 경쟁력 강화 전략(AI, 금융)이 혼재되어 있으며, 그 실효성은 향후 몇 년간의 성과에 따라 평가될 것입니다."}, "model_response": {"report_title": "리시 수낵의 정책-산업-기업 영향력 네트워크 분석", "time_range": "2025년 12월 5일 기준", "question_answer": "리시 수낵은 경제 정책(미니 예산 철회, 투자 구역)을 통해 금융 서비스, 부동산, 제조업 분야와 연결되었으며, 보수당 지도부 시절 에너지(Shell), 기술(DeepMind), 금융(Standard Chartered) 기업으로부터 기부를 받았습니다. 또한 TCI 재직 및 재무장관 시절 헤지펀드/사모펀드와의 문서화된 비직접적 연계가 확인되었습니다. 단, 정책 수혜 기업과의 개인적 금융 공개 기록은 검증되지 않았습니다.", "influence_chains": [{"politician": "Rishi Sunak", "policy": "보수당 지도부 기부 및 로비 활동", "industry_or_sector": "에너지, 기술, 금융 서비스", "companies": ["Shell", "DeepMind", "Standard Chartered"], "impact_description": "리시 수낵의 보수당 지도부 시절 기부자로 에너지 기업(Shell), 기술 기업(DeepMind), 금융 기관(Standard Chartered)이 포함되었으며, 로비스트와의 공식 회의 기록이 공개됨", "evidence": [{"source_title": "Transparency Data", "url": "https://transparencydata.com"}]}, {"politician": "Rishi Sunak", "policy": "경제 정책(미니 예산 철회, 투자 구역)", "industry_or_sector": "금융 서비스", "companies": ["hedge funds", "private equity firms"], "impact_description": "수낵의 TCI 재직 및 재무장관 시절 헤지펀드/사모펀드와의 문서화된 비직접적 연계 존재", "evidence": [{"source_title": "TCI tenure and Chancellor-era interactions", "url": "https://tci.com/sunak-interactions"}]}, {"politician": "Rishi Sunak", "policy": "경제 정책(미니 예산 철회, 투자 구역)", "industry_or_sector": "금융 서비스, 부동산, 제조업", "companies": ["financial services", "real estate", "manufacturing sectors"], "impact_description": "수낵의 경제 정책(미니 예산 철회, 투자 구역)이 금융 서비스, 부동산, 제조업 분야에 직접적 영향", "evidence": [{"source_title": "Economic policy analysis", "url": "https://economicpolicy.gov.uk/sunak-policies"}]}], "notes": ""}} +{"query": "Emmanuel Macron", "gold_report": {"report_title": "Emmanuel Macron 프랑스 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2017–2025년 11월 24일 기준", "question_answer": "에마뉘엘 마크롱 대통령은 노동시장 유연화와 연금개혁을 단행하여 프랑스 기업들의 인건비 부담을 덜고 고용을 늘리는 기반을 마련했으며, 친환경 정책으로 프랑스 전력공사(EDF)의 원전 투자와 르노 등의 전기차 전환에 박차를 가했습니다. 또한 EU 차원에서 디지털세 추진과 반도체·배터리 육성에 앞장서며 유럽 기업들의 기술 주권을 강화했습니다. 다만 연금개혁에 따른 국민 반발로 사회적 갈등이 일시적으로 기업 활동에 불확실성을 주기도 했습니다.", "influence_chains": [{"politician": "Emmanuel Macron", "policy": "노동법 개혁", "industry_or_sector": "산업 전반/고용", "companies": ["TotalEnergies", "Carrefour"], "impact_description": "2017년 마크롱 정부는 노조와 사회적 합의를 거쳐 해고 절차 완화, 노조교섭 단위 축소 등 노동법 개혁을 실시했습니다. 이에 따라 TotalEnergies 같은 대기업은 인건비 유연성이 높아져 신규 고용과 구조조정에 신속히 대응할 수 있게 되었고, 소매체인 까르푸는 점포 운영시간 연장과 주말 노동투입 등 생산성 향상 방안을 원활히 시행할 수 있었습니다. 이 개혁 이후 프랑스 실업률은 10%대에서 7%대로 하락하며 기업들의 고용여건이 개선되었습니다.", "evidence": [{"source_title": "마크롱 노동개혁 후 프랑스 실업률 최저치 기록", "url": "https://www.reuters.com/article/us-france-reform-employment-idUSKCN1M01R3"}, {"source_title": "Carrefour welcomes new labor flexibility under Macron", "url": "https://www.ft.com/content/2e3f4d62-d353-11e7-a303-9060cb1e5f44"}]}, {"politician": "Emmanuel Macron", "policy": "연금개혁 추진", "industry_or_sector": "공공재정/시장", "companies": ["BNP Paribas", "AXA"], "impact_description": "2023년 마크롱 대통령은 연금정년을 62세에서 64세로 상향하는 개혁을 강행하여 장기적으로 재정안정과 노동인구 증가를 도모했습니다. 이에 프랑스 최대 은행 BNP파리바는 국가신용도 유지와 금리안정의 간접 혜택을 기대할 수 있었고, 대형 보험사 AXA는 민영 연금상품 수요 증가에 대비해 상품 개발을 서둘렀습니다. 다만 연금개혁 과정에서 대규모 파업이 발생해 단기적으로 소비와 생산에 지장을 초래하기도 했습니다.", "evidence": [{"source_title": "프랑스 연금개혁 통과…BNP파리바 등 금융권 '환영'", "url": "https://www.bloomberg.com/news/articles/2023-04-14/bnp-paribas-says-pension-reform-is-good-for-france-s-economy"}, {"source_title": "AXA sees opportunities in Macron pension reform", "url": "https://www.reuters.com/business/finance/insurer-axa-sees-opportunity-french-pension-reform-2023-01-23/"}]}, {"politician": "Emmanuel Macron", "policy": "친환경·산업 주권 정책", "industry_or_sector": "에너지/제조", "companies": ["EDF", "STMicroelectronics"], "impact_description": "마크롱 대통령은 파리협정 이행과 에너지 안보 강화를 위해 원전 부흥과 배터리·반도체 등 전략산업 육성을 추진했습니다. 이에 따라 프랑스전력公(EDF)은 신규 원자로 건설과 노후원전 수명연장에 정부 지원을 받아 대규모 투자를 진행하고, 유럽 반도체 기업 ST마이크로일렉트로닉스는 프랑스 정부 보조금을 통해 그르노블 공장 증설 및 차세대 칩 R&D에 박차를 가했습니다. 이 같은 정책으로 프랑스는 유럽 배터리 연합 및 반도체 동맹의 중심에 서서 관련 기업들의 공급망 자립을 도왔습니다.", "evidence": [{"source_title": "Macron bets on nuclear revival, EDF to build new reactors", "url": "https://www.ft.com/content/039e8c38-0b9e-11ea-b2d6-9bf4d1957a67"}, {"source_title": "STMicro to get French aid for chip plant expansion", "url": "https://www.reuters.com/technology/france-italy-pledge-funds-stmicroelectronics-chip-plant-2022-07-11/"}]}], "notes": "에마뉘엘 마크롱 정부는 친시장 개혁과 유럽 차원의 산업 전략을 병행하였습니다. 노동 및 연금개혁은 단기 사회 갈등에도 불구하고 중장기적으로 기업 활력을 높이는 데 기여했고, 프랑스 주도의 EU 산업정책은 공급망 다변화 시대에 자국 기업 보호 및 육성으로 이어지고 있습니다."}, "model_response": {"report_title": "에마뉘엘 마크롱의 정책-산업-기업 영향력 네트워크 분석", "time_range": "2017–2025", "question_answer": "에마뉘엘 마크롱은 녹색 에너지 전환 및 기술 혁신 정책을 통해 EDF, TotalEnergies, Renault, ACC, Mistral AI, Station F 등 다양한 기업 및 산업과 연결되어 있습니다. 그러나 마크롱 행정부와 특정 기업 간의 직접적인 금융적 또는 로비 관계는 명시적으로 문서화되지 않았습니다. 알렉시스 코흘러 수석 보좌관의 MSC와의 이해관계 충돌 사례가 조사되었으나, 마크롱 대통령의 직접적인 관여는 확인되지 않았습니다.", "influence_chains": [{"politician": "에마뉘엘 마크롱", "policy": "녹색 에너지 전환", "industry_or_sector": "원자력 에너지", "companies": ["EDF"], "impact_description": "프랑스의 원자력 에너지 정책 지원 및 인프라 유지", "evidence": [{"source_title": "France’s Energy Future with Macron at the Helm", "url": "https://leadersinenergy.org/frances-energy-future-with-macron-at-the-helm/"}, {"source_title": "French President Macron unveils latest plan for meeting climate-related commitments in the coming years", "url": "https://www.pbs.org/newshour/world/french-president-macron-unveils-latest-plan-for-meeting-climate-related-commitments-in-the-coming-years"}, {"source_title": "France fights back against US with aid for green transition", "url": "https://www.energyconnects.com/news/renewables/2023/may/france-fights-back-against-us-with-aid-for-green-transition/"}]}, {"politician": "에마뉘엘 마크롱", "policy": "녹색 에너지 전환", "industry_or_sector": "녹색 수소", "companies": ["TotalEnergies"], "impact_description": "녹색 수소 및 재생에너지 프로젝트 지원을 위한 보조금 및 세제 혜택", "evidence": [{"source_title": "Commission d’enquête du Sénat sur TotalEnergies: des lacunes et des perspectives de progrès pour la transparence du lobbying", "url": "https://transparency-france.org/2024/07/12/commission-denquete-du-senat-sur-totalenergies-des-lacunes-et-des-perspectives-de-progres-pour-la-transparence-du-lobbying/"}, {"source_title": "Our advocacy efforts", "url": "https://totalenergies.com/sustainability/stakeholder-relationships-advocacy/advocacy-principles/our-advocacy-efforts"}, {"source_title": "The French Senate recommends that the French state acquire a stake in TotalEnergies", "url": "https://energynews.pro/en/the-french-senate-recommends-that-the-french-state-acquire-a-stake-in-totalenergies/"}, {"source_title": "France", "url": "https://gh2.org/countries/france"}, {"source_title": "France’s new green hydrogen support mechanism: an opportunity for European players", "url": "https://bmhavocats.com/2024/02/15/energie-frances-new-green-hydrogen-support-mechanism-an-opportunity-for-european-players/"}, {"source_title": "Energy: France’s new green hydrogen support mechanism: an opportunity for European players", "url": "https://bmhavocats.com/en/2024/02/15/energy-frances-new-green-hydrogen-support-mechanism-an-opportunity-for-european-players/"}, {"source_title": "EC approves €900m French State aid to support biomass and renewable hydrogen", "url": "https://hydrogeneurope.eu/ec-approves-e900m-french-state-aid-to-support-biomass-and-renewable-hydrogen/"}]}, {"politician": "에마뉘엘 마크롱", "policy": "녹색 에너지 전환", "industry_or_sector": "전기차", "companies": ["Renault", "ACC (Automotive Cells Company)"], "impact_description": "전기차 배터리 생산 및 국내 생산 목표 지원", "evidence": [{"source_title": "France’s Energy Future with Macron at the Helm", "url": "https://leadersinenergy.org/frances-energy-future-with-macron-at-the-helm/"}, {"source_title": "French President Macron unveils latest plan for meeting climate-related commitments in the coming years", "url": "https://www.pbs.org/newshour/world/french-president-macron-unveils-latest-plan-for-meeting-climate-related-commitments-in-the-coming-years"}, {"source_title": "France fights back against US with aid for green transition", "url": "https://www.energyconnects.com/news/renewables/2023/may/france-fights-back-against-us-with-aid-for-green-transition/"}]}, {"politician": "에마뉘엘 마크롱", "policy": "기술 혁신", "industry_or_sector": "인공지능", "companies": ["Mistral AI", "Iliad", "Orange", "Thales"], "impact_description": "AI 공공-민간 파트너십 및 전문가 양성 지원", "evidence": [{"source_title": "France unveils €109 billion AI initiative to compete globally", "url": "https://www.riotimesonline.com/france-unveils-e109-billion-a-i-initiative-to-compete-globally/"}, {"source_title": "France leads push for widespread adoption of European AI", "url": "https://sciencebusiness.net/news/ai/france-leads-push-widespread-adoption-european-ai"}, {"source_title": "Germany and France sign agreement for public-private partnership on AI with Mistral, SAP", "url": "https://www.telecompaper.com/news/germany-france-sign-agreement-for-public-private-partnership-on-ai-with-mistral-sap--1554686"}, {"source_title": "France AI Strategy Report", "url": "https://ai-watch.ec.europa.eu/countries/france/france-ai-strategy-report_en"}]}, {"politician": "에마뉘엘 마크롱", "policy": "기술 혁신", "industry_or_sector": "스타트업", "companies": ["Station F"], "impact_description": "정부 지원 스타트업 인큐베이터 운영", "evidence": [{"source_title": "French startup culture at Station F in Paris", "url": "https://frenchamericancultural.org/2024/02/05/french-startup-culture-at-station-f-in-paris/"}, {"source_title": "Paris mega-campus Station F wooing tech startups from London", "url": "https://www.businesstimes.com.sg/startups-tech/technology/paris-mega-campus-station-f-wooing-tech-startups-london"}, {"source_title": "About", "url": "https://stationf.co/about"}, {"source_title": "Ask Me Anything with Xavier Niel, founder of Free, 42 Coding School, Kima and Station F", "url": "https://medium.com/station-f/ask-me-anything-with-xavier-niel-founder-of-free-42-coding-school-kima-and-station-f-9c509159450b"}, {"source_title": "World’s biggest startup campus", "url": "https://www.orosound.com/worlds-biggest-startup-campus/"}]}, {"politician": "에마뉘엘 마크롱", "policy": "STX 조선소 관련 정책", "industry_or_sector": "해운업", "companies": ["MSC (Mediterranean Shipping Company)"], "impact_description": "알렉시스 코흘러의 MSC와의 이해관계 충돌 조사", "evidence": [{"source_title": "Emmanuel Macron’s chief staff corruption inquiry Alexis Kohler", "url": "https://www.theguardian.com/world/2018/jun/04/emmanuel-macrons-chief-staff-corruption-inquiry-alexis-kohler"}, {"source_title": "Emmanuel Macron adviser Alexis Kohler charged with conflict of interest", "url": "https://www.theguardian.com/world/2022/oct/04/emmanuel-macron-adviser-alexis-kohler-charged-conflict-of-interest"}, {"source_title": "Macron’s chief of staff under investigation for conflict of interest", "url": "https://timesofmalta.com/article/macrons-chief-of-staff-under-investigation-for-conflict-of-interest.680861"}, {"source_title": "Macron’s aide charged with conflict of interest", "url": "https://www.dawn.com/news/1412044"}]}], "notes": ""}} +{"query": "Volodymyr Zelensky", "gold_report": {"report_title": "Volodymyr Zelensky 우크라이나 대통령의 정치·경제 영향력 네트워크 분석", "time_range": "2019–2025년 11월 24일 기준", "question_answer": "볼로디미르 젤렌스키 대통령은 2022년 러시아 침공에 맞서 서방의 군사지원을 이끌어내며 Lockheed Martin, BAE Systems 등 글로벌 방산 기업들의 수주가 급증하는 간접 효과를 주었습니다. 국내적으로는 반부패 개혁과 올리가르히(재벌) 견제를 추진하여 PrivatBank 국유화 등 금융 부문의 투명성을 높였고, 전시경제 하에서도 전력·농업 인프라 복구에 집중 투자하여 DTEK, Kernel과 같은 기업들이 국제기구 지원 아래 재건 사업에 참여하도록 독려했습니다. 전쟁이 장기화됨에 따라 우크라이나 재건 계획은 Bechtel 등 해외 건설사의 관심을 모으고 있습니다.", "influence_chains": [{"politician": "Volodymyr Zelensky", "policy": "서방 군사지원 외교", "industry_or_sector": "방위산업/국제", "companies": ["Lockheed Martin", "BAE Systems"], "impact_description": "젤렌스키 대통령은 연일 미국과 NATO 동맹국을 상대로 무기 지원을 호소하여, HIMARS 로켓과 전차, 포탄 등이 대거 우크라이나로 지원되었습니다. 그에 따라 미 방산업체 록히드마틴은 HIMARS 생산라인을 증설해 주문량을 늘렸고, 영국 BAE 시스템즈는 우크라이나에 곡사포와 장갑차 수출이 증가하면서 2022~2023년 실적이 크게 향상되었습니다. 젤렌스키의 외교 행보는 서방 방산기업들에게 예상치 못한 특수를 안겨준 셈입니다.", "evidence": [{"source_title": "우크라 전쟁 특수, 미 방산업체 실적 급등", "url": "https://www.wsj.com/articles/lockheed-martin-earnings-ukraine-war-11670969844"}, {"source_title": "BAE Systems, 우크라 지원에 힘입어 신규 수주 기록", "url": "https://www.bloomberg.com/news/articles/2023-07-27/bae-systems-lands-record-orders-on-ukraine-boost-raises-outlook"}]}, {"politician": "Volodymyr Zelensky", "policy": "반부패·재벌 개혁", "industry_or_sector": "금융/철강", "companies": ["PrivatBank", "Metinvest"], "impact_description": "젤렌스키 집권 초기부터 부패 척결과 올리가르히 축소에 방점을 찍어왔습니다. 2016년 부실사태를 맞은 최대 민영은행 프리바트뱅크를 국유화하고, 2021년에는 올리가르히(재벌) 등록법을 제정하여 철강재벌 리나트 아흐메토프가 소유한 Metinvest 등 거대 기업들의 정치 영향력을 제한했습니다. 이러한 조치는 국제통화기금(IMF) 지원 조건이기도 했으며, 우크라이나 금융시스템 안정과 대외신인도 제고에 기여했으나 올리가르히 경제력 집중은 여전히 과제로 남아있습니다.", "evidence": [{"source_title": "우크라이나, 최대은행 PrivatBank 국유화", "url": "https://www.reuters.com/article/us-ukraine-crisis-privatbank-idUSKBN1480RX"}, {"source_title": "Zelenskiy signs law curbing oligarchs' influence", "url": "https://www.bloomberg.com/news/articles/2021-11-05/ukraine-s-zelenskiy-signs-law-curbing-oligarchs-influence"}]}, {"politician": "Volodymyr Zelensky", "policy": "인프라 재건 및 에너지 복구", "industry_or_sector": "전력/건설", "companies": ["DTEK", "Bechtel"], "impact_description": "전쟁으로 파괴된 인프라를 복구하기 위해 젤렌스키 대통령은 2023년부터 '우크라이나 재건 계획'을 추진하고 있습니다. 최대 민간 전력회사 DTEK는 정부 및 국제 원조로 피해입은 발전소와 송전망을 긴급 복구하여 작동시켰고, 미국 건설사 Bechtel은 우크라이나 정부와 재건 사업 협력 MOU를 체결하고 향후 철도·교량 재건 입찰 참여를 준비 중입니다. 이러한 노력은 전시에도 불구하고 국민 생활을 지탱하고, 향후 수백조원 규모로 예상되는 재건 시장에서 글로벌 기업들의 관심을 모으고 있습니다.", "evidence": [{"source_title": "DTEK restores power for millions amid ongoing strikes", "url": "https://news.yahoo.com/ukraines-dtek-restores-power-millions-123456789.html"}, {"source_title": "Ukraine signs deal with Bechtel on reconstruction projects", "url": "https://www.reuters.com/world/europe/ukraine-signs-deal-with-bechtel-cooperate-reconstruction-projects-2023-05-22/"}]}], "notes": "젤렌스키 대통령의 임기 중 2022년 이후 전쟁상황이 기업환경에 막대한 영향을 주었으며, 본 분석은 그 가운데서도 주요한 경제적 연쇄 효과를 추린 것입니다. 우크라이나의 재건은 진행형으로, 향후 국제사회의 지원과 기업들의 참여에 따라 성과가 가시화될 전망입니다."}, "model_response": {"report_title": "볼로디미르 젤렌스키의 정치-경제적 영향력 네트워크 분석", "time_range": "2019–2025", "question_answer": "볼로디미르 젤렌스키는 반부패 개혁, EU/NATO 통합, 방산 개혁 등 주요 정책과 연결되어 있으며, 미디어/엔터테인먼트 산업(Kvartal 95, 1+1 Media) 및 에너지 산업(DTEK)과의 연관성이 확인됨. 그러나 직접적인 재정적 이해관계나 지속적인 사업 참여는 문서화되지 않았음.", "influence_chains": [{"politician": "Volodymyr Zelensky", "policy": "반부패 개혁", "industry_or_sector": "미디어/엔터테인먼트", "companies": ["1+1 Media"], "impact_description": "젤렌스키는 2019년 대선 당시 올리가르히 이고르 콜로모이스키의 정치적 지지를 받았으며, 콜로모이스키가 소유한 1+1 미디어(젤렌스키의 쇼를 방영한 TV 네트워크)와의 연결이 확인됨. 그러나 직접적인 금융 거래나 사업 파트너십은 문서화되지 않음.", "evidence": [{"source_title": "우크라이나 재건 뉴스", "url": "https://www.ukrainerebuildnews.com/zelensky-meets-us-execs-to-seek-support-for-energy-infrastructure-2/"}, {"source_title": "우크라이나 인포름", "url": "https://www.ukrinform.net/rubric-economy/4045283-zelensky-discusses-strengthening-ukraines-defense-industry-with-heads-of-investment-funds-and-business-associations.html"}]}, {"politician": "Volodymyr Zelensky", "policy": "반부패 개혁", "industry_or_sector": "미디어/엔터테인먼트", "companies": ["Kvartal 95"], "impact_description": "젤렌스키는 1997년 엔터테인먼트 제작사 Kvartal 95를 공동 설립했으며, 이 회사는 TV 프로그램, 영화, 코미디 프로그램(예: *Servant of the People*)을 제작함. 대통령 취임 후 소유권이나 재정적 통제에 대한 공개 기록은 없음.", "evidence": [{"source_title": "우크라이나 재건 뉴스", "url": "https://www.ukrainerebuildnews.com/zelensky-meets-us-execs-to-seek-support-for-energy-infrastructure-2/"}, {"source_title": "우크라이나 인포름", "url": "https://www.ukrinform.net/rubric-economy/4045283-zelensky-discusses-strengthening-ukraines-defense-industry-with-heads-of-investment-funds-and-business-associations.html"}]}, {"politician": "Volodymyr Zelensky", "policy": "EU 통합 노력", "industry_or_sector": "에너지", "companies": ["DTEK"], "impact_description": "젤렌스키는 2024년 9월 뉴욕에서 미국 에너지, 금융, 보험 임원들과 만나 우크라이나 에너지 인프라 지원을 요청했으며, 이는 EU의 러시아 에너지 제재로 인해 우크라이나 가스 수출업체에 기회가 창출됨. DTEK는 우크라이나 최대 에너지 기업 중 하나임.", "evidence": [{"source_title": "우크라이나 재건 뉴스", "url": "https://www.ukrainerebuildnews.com/zelensky-meets-us-execs-to-seek-support-for-energy-infrastructure-2/"}]}, {"politician": "Volodymyr Zelensky", "policy": "반부패 개혁", "industry_or_sector": "미디어/엔터테인먼트", "companies": ["Kvartal 95"], "impact_description": "젤렌스키는 1997년 엔터테인먼트 제작사 Kvartal 95를 공동 설립했으며, 이 회사는 TV 프로그램, 영화, 코미디 프로그램(예: *Servant of the People*)을 제작함. 대통령 취임 후 소유권이나 재정적 통제에 대한 공개 기록은 없음.", "evidence": [{"source_title": "우크라이나 재건 뉴스", "url": "https://www.ukrainerebuildnews.com/zelensky-meets-us-execs-to-seek-support-for-energy-infrastructure-2/"}, {"source_title": "우크라이나 인포름", "url": "https://www.ukrinform.net/rubric-economy/4045283-zelensky-discusses-strengthening-ukraines-defense-industry-with-heads-of-investment-funds-and-business-associations.html"}]}], "notes": ""}} +{"query": "Fumio Kishida", "gold_report": {"report_title": "기시다 후미오 일본 총리의 정치·경제 영향력 네트워크 분석", "time_range": "2021–2025년 11월 24일 기준", "question_answer": "기시다 총리는 방위비를 대폭 증액하여 미쓰비시중공업 등 방산기업에 새로운 성장 기회를 제공했고, 핵심전략산업(반도체·배터리)에 보조금을 지급하여 일본 기업의 국내 투자와 TSMC 등의 유치를 이끌었습니다. 또한 '새로운 자본주의' 기치 하에 기업들에 임금 인상과 투자 확대를 독려하여 소니, 도요타 등에서 기록적인 임금인상 합의를 끌어냈습니다. 이러한 정책들은 장기 정체에 빠진 일본 경제에 변화를 주려는 시도로 평가되나, 재원 마련과 구조개혁의 한계로 효과가 부분적이라는 지적도 있습니다.", "influence_chains": [{"politician": "Fumio Kishida", "policy": "방위비 증액 정책", "industry_or_sector": "방위산업", "companies": ["Mitsubishi Heavy Industries", "IHI Corporation"], "impact_description": "2022년 기시다 내각은 안보환경 악화를 이유로 GDP 대비 방위비를 1%대에서 2%로 올리기로 결정했습니다. 이로써 미쓰비시중공업은 장거리 미사일 개발과 함정 건조 등 새로운 방위사업을 수주하여 주가가 2023년에 크게 상승했고, 항공엔진 제조사 IHI도 전투기 엔진 및 우주방위 관련 예산 증가로 연구개발 기회가 확대되었습니다. 방위산업 전반에 수십년 만의 특수가 찾아와 일본 기업들의 방산 부문 투자가 늘어나는 계기가 되었습니다.", "evidence": [{"source_title": "일본, 방위비 2배로…미쓰비시重 등 방산주 강세", "url": "https://www.wsj.com/articles/japan-defense-stocks-surge-on-budget-hike-11671234567"}, {"source_title": "IHI, 전투기 엔진 개발 참여...방위비 증액 수혜", "url": "https://asia.nikkei.com/Business/Aerospace-Defense/IHI-s-military-engine-unit-set-for-lift-off-under-Japan-defense-plan"}]}, {"politician": "Fumio Kishida", "policy": "산업부흥 보조금 (반도체 등)", "industry_or_sector": "반도체/배터리", "companies": ["TSMC Japan", "Toyota-Panasonic (Prime Planet Energy)"], "impact_description": "기시다 총리는 공급망 안보와 첨단 산업 육성을 위해 해외 첨단기업 유치와 국내 설비 투자에 막대한 보조금을 지급했습니다. 세계 1위 파운드리 TSMC는 구마모토현에 소니와 합작으로 반도체 공장을 건설하며 일본 정부로부터 약 4,760억 엔의 지원을 받아 2024년 가동 예정이고, 도요타-파나소닉 배터리 합작사 Prime Planet Energy는 차량용 배터리 공장 증설에 정부 지원금을 확보해 생산능력을 확대하고 있습니다. 이같은 산업 정책은 일본 제조업의 기술 주권을 강화하고 하이테크 부문의 고용을 창출하는 효과를 거두고 있습니다.", "evidence": [{"source_title": "TSMC, 일본 소니와 구마모토에 반도체 공장…정부 4760억엔 지원", "url": "https://www.reuters.com/technology/tsmc-plans-build-second-japan-chip-plant-report-2023-02-24/"}, {"source_title": "일본, 배터리 공장 7곳에 3300억엔 보조금 지원", "url": "https://asia.nikkei.com/Business/Energy/Japan-to-subsidize-battery-plants-by-Panasonic-Toshiba-and-GS-Yuasa"}]}, {"politician": "Fumio Kishida", "policy": "신자본주의 (임금인상 촉구)", "industry_or_sector": "경영/노동", "companies": ["Toyota", "Sony"], "impact_description": "기시다 총리는 '새로운 자본주의' 슬로건 아래 기업들에게 임금 인상과 사내유보 활용을 촉구했습니다. 그 결과 2023년 춘투(봄철 임금교섭)에서 도요타는 약 20년만에 최고 수준의 임금인상을 단행했고, 소니도 기본급 7% 인상과 보너스 확대를 결정하여 노동자들의 실질임금 상승을 이루었습니다. 이는 일본 경제의 구조적 과제였던 임금 정체를 완화하고 소비 진작에 기여할 조짐을 보였으나, 한편으로 기업 수익성 압박과 중소기업 미흡 등 한계도 지적됩니다.", "evidence": [{"source_title": "도요타, 기시다 요청에 화답…전 직원 임금 9% 인상", "url": "https://www.japantimes.co.jp/news/2023/02/23/business/corporate-business/toyota-wage-hike-agreement/"}, {"source_title": "소니, 26년만에 최고 임금인상…기시다 '임금UP' 가속", "url": "https://www.bloomberg.com/news/articles/2023-03-29/sony-to-raise-base-pay-by-7-highest-hike-in-two-decades"}]}], "notes": "기시다 후미오 총리의 경제정책은 아베노믹스 이후 일본의 새로운 방향 모색으로 볼 수 있습니다. 방위비 증액과 산업지원은 안보와 성장 두 마리 토끼를 잡으려는 전략이며, 임금인상 유도는 디플레이션 탈출을 위한 사회적 노력의 일환입니다. 정책 효과는 아직 진행형으로, 향후 일본 경제의 활력 회복 여부에 따라 평가가 달라질 것입니다."}, "model_response": {"report_title": "기시다 후미오 총리의 정책-산업-기업 영향력 네트워크 분석", "time_range": "2022–2024", "question_answer": "기시다 후미오 총리는 '신자본주의' 정책, 방위비 확대, 디지털 전환 전략 등을 통해 반도체, 방위 산업, 디지털 인프라 등 다양한 분야에 영향을 미쳤으며, Rapidus, Mitsubishi Heavy Industries, Amazon.com Inc. 등 특정 기업들과 직접적인 연관성이 확인됨", "influence_chains": [{"politician": "Fumio Kishida", "policy": "반도체 산업 지원", "industry_or_sector": "반도체 및 첨단 제조", "companies": ["Rapidus"], "impact_description": "Rapidus는 반도체 생산을 위해 정부-민간 자금으로 2.9조 엔을 지원받음", "evidence": [{"source_title": "Naver News (Japan’s Semiconductor Investments)", "url": "https://n.news.naver.com/mnews/article/020/0003676377"}]}, {"politician": "Fumio Kishida", "policy": "그린 트랜스포메이션(GX) 프로그램", "industry_or_sector": "그린 테크 및 재생에너지", "companies": ["Toyota", "Panasonic"], "impact_description": "Toyota와 Panasonic은 정책 대상 분야(자동차/EV, 배터리)에서 간접적으로 혜택을 받을 수 있음", "evidence": [{"source_title": "Goldman Sachs Insights", "url": "https://www.goldmansachs.com/insights/articles/japans-prime-minister-how-japan-is-promoting-a-new-form-of-capitalism"}, {"source_title": "Wikipedia (New Form of Capitalism)", "url": "https://en.wikipedia.org/wiki/New_Form_of_Capitalism"}]}, {"politician": "Fumio Kishida", "policy": "GDP 2% 목표 방위비 확대", "industry_or_sector": "방위 산업", "companies": ["Mitsubishi Heavy Industries", "IHI Corporation"], "impact_description": "Mitsubishi Heavy Industries와 IHI Corporation은 방위성 계약업체로 전투기 엔진 및 미사일 부품 공급", "evidence": [{"source_title": "日 방산업체 IHI도 미쓰비시중공업 이어 사이버 공격 받아", "url": "https://n.news.naver.com/mnews/article/003/0013641234?sid=104"}]}, {"politician": "Fumio Kishida", "policy": "디지털 가든 시티 네이션 이니셔티브", "industry_or_sector": "디지털 인프라 및 AI", "companies": ["Amazon.com Inc.", "Google LLC"], "impact_description": "Amazon.com Inc.와 Google LLC는 디지털 에이전시와의 공공-민간 협력 파트너십에 참여", "evidence": [{"source_title": "JETRO", "url": "https://www.jetro.go.jp/en/invest/insights/japan-insight/nation-drive-datafirst-digital-society-future.html"}]}], "notes": ""}} +{"query": "Mohammed bin Salman", "gold_report": {"report_title": "무함마드 빈 살만 사우디 왕세자의 정치·경제 영향력 네트워크 분석", "time_range": "2016–2025년 11월 24일 기준", "question_answer": "무함마드 빈 살만 왕세자는 'Vision 2030'을 통해 Saudi Aramco 상장과 석유산업 민영화로 막대한 자금을 조달하고, NEOM 스마트시티 등 초대형 프로젝트를 추진하여 건설·관광 분야에 Bechtel, Bouygues 등 글로벌 기업을 끌어들였습니다. 또한 OPEC+ 감산을 주도하여 유가를 부양함으로써 Aramco와 SABIC 등 사우디 에너지·석유화학 기업의 수익을 극대화했습니다. 동시에 Public Investment Fund(PIF)를 활용해 Lucid Motors, SoftBank Vision Fund 등에 투자하여 사우디 경제를 다각화하려는 노력을 기울이고 있습니다.", "influence_chains": [{"politician": "Mohammed bin Salman", "policy": "Vision 2030 경제개혁", "industry_or_sector": "국부펀드/투자", "companies": ["Saudi Aramco", "Lucid Motors"], "impact_description": "2016년 발표된 Vision 2030에 따라 MBS는 국영 석유회사 Saudi Aramco 지분 일부를 2019년 국내 상장시켜 약 294억 달러를 조달하며 세계 최대 IPO를 기록했습니다:contentReference[oaicite:44]{index=44}. 이를 통해 확보한 자금은 사우디 국부펀드(PIF)에 투입되어 전기차 기업 Lucid Motors 지분 인수 등 해외 첨단산업 투자로 이어졌습니다. 그 결과 Lucid는 사우디에 공장 건설을 약속받고 PIF로부터 10억 달러 추가 투자를 유치하는 등 사우디의 전략적 투자 파트너로 부상했습니다. 이러한 경제개혁 조치는 사우디 경제의 탈석유화를 촉진하고 있습니다.", "evidence": [{"source_title": "사우디 아람코 IPO, 세계 최고 시가총액 기업 등극", "url": "https://www.reuters.com/article/us-saudi-aramco-ipo-idUSKBN1YI14V"}, {"source_title": "사우디 PIF, Lucid 모터스에 추가 투자…현지 생산 추진", "url": "https://www.bloomberg.com/news/articles/2023-05-03/saudi-arabia-s-pif-nears-deal-for-new-funding-for-ev-maker-lucid"}]}, {"politician": "Mohammed bin Salman", "policy": "OPEC+ 감산 및 유가 정책", "industry_or_sector": "석유/화학", "companies": ["Saudi Aramco", "SABIC"], "impact_description": "MBS는 2017년 이후 러시아 등 산유국과 OPEC+ 동맹을 맺어 산유량 조절을 주도했습니다. 특히 2020년 팬데믹과 2022년 우크라이나 전쟁 시기에 대규모 감산 합의를 이끌어내어 국제 유가를 부양함으로써, Saudi Aramco의 2022년 순이익이 전년 대비 2배 이상 폭증하고:contentReference[oaicite:45]{index=45} 석유화학 기업 SABIC도 고유가로 인한 원료가격 상승분을 판매가에 전가해 수익 개선을 누렸습니다. 유가 상승은 사우디 재정을 흑자로 돌려놓았고, MBS는 이를 재투자해 미래 사업에 재원을 투입하는 선순환을 만들고 있습니다.", "evidence": [{"source_title": "사우디 아람코, 2022년 사상 최대 1611억달러 순이익 기록", "url": "https://www.bbc.com/news/business-64932727"}, {"source_title": "OPEC+ 감산 결정, 글로벌 유가 4%↑…사우디 주도", "url": "https://www.reuters.com/markets/commodities/opec-surprise-output-cuts-send-oil-prices-soaring-2023-04-02/"}]}, {"politician": "Mohammed bin Salman", "policy": "초대형 프로젝트(NEOM 등)", "industry_or_sector": "건설/관광", "companies": ["Bechtel", "Marriott International"], "impact_description": "빈 살만 왕세자는 5000억 달러 규모 미래형 도시 '네옴(Neom)'과 홍해 관광단지 등 초대형 프로젝트를 추진하여 글로벌 건설·관광기업을 사우디로 불러들이고 있습니다. 미국 건설사 Bechtel은 네옴의 첨단 신도시 '더 라인(The Line)' 건설관리 계약을 체결했고:contentReference[oaicite:46]{index=46}, 메리어트 등 세계적 호텔 체인은 홍해 프로젝트에 고급 리조트를 운영하기로 하는 등 사우디 관광산업 진출을 확대하고 있습니다. 이러한 메가프로젝트는 사우디 건설업에 활황을 가져와 현지 건설사와 외국 기업 모두에게 큰 기회가 되고 있습니다.", "evidence": [{"source_title": "Bechtel lands contract for NEOM The Line project", "url": "https://www.constructionweekonline.com/projects-tenders/bechtel-neom-the-line-project-management"}, {"source_title": "Marriott to open three luxury resorts in Saudi Red Sea project", "url": "https://www.hoteliermiddleeast.com/business/marriott-red-sea-saudi"}]}], "notes": "MBS의 주도로 사우디는 석유 중심에서 탈피해 미래 성장동력을 찾고자 노력 중이며, 그 과정에서 국내외 기업들의 참여를 적극 유도하고 있습니다. 정책 추진은 왕정체제의 강력한 드라이브로 단기간에 성과를 내고 있으나, 정치적 위험과 인권 문제 등이 외국 투자에 변수로 작용할 수 있습니다."}, "model_response": {"report_title": "모하메드 빈 살만의 정책, 산업, 기업 영향력 분석", "time_range": "2016–2026", "question_answer": "모하메드 빈 살만(MBS)은 사우디아라비아의 실질적인 지도자로서 비전 2030을 통해 경제 다각화를 추진하고 있습니다. 그는 사우디 아람코의 IPO를 주도했으며, 공공투자펀드(PIF)를 통해 NEOM과 같은 메가 프로젝트를 추진하며 에너지, 기술, 관광, 재생에너지 분야에서 영향력을 행사하고 있습니다. MBS는 PIF의 의장으로서 뉴캐슬 유나이티드 FC, 우버, 테슬라 등에 투자하며 국제적 파트너십을 강화하고 있습니다.", "influence_chains": [{"politician": "Mohammed bin Salman", "policy": "비전 2030", "industry_or_sector": "에너지, 기술, 관광, 재생에너지", "companies": ["Saudi Aramco", "Public Investment Fund (PIF)", "NEOM"], "impact_description": "모하메드 빈 살만(MBS)은 사우디아라비아의 실질적인 지도자로서 비전 2030의 주요 설계자입니다. 그는 사우디 아람코의 IPO를 주도했으며, 공공투자펀드(PIF)를 통해 NEOM과 같은 메가 프로젝트를 추진하며 경제 다각화를 이끌고 있습니다. PIF는 사우디 아람코의 8% 지분을 보유하고 있으며, NEOM을 완전히 소유하고 있습니다. MBS는 PIF의 의장으로서 기술, 관광, 재생에너지 분야의 투자를 주도하고 있습니다.", "evidence": [{"source_title": "Mohammed bin Salman (Wikipedia)", "url": "https://en.wikipedia.org/wiki/Mohammed_bin_Salman"}, {"source_title": "Saudi Aramco IPO and Bin Salman’s Fiscal Takeover (Baker Institute)", "url": "https://www.bakerinstitute.org/research/revamping-energy-policy-saudi-arabia-view-future"}, {"source_title": "Saudi Arabia’s 2026 Budget (Majalla)", "url": "https://en.majalla.com/node/328566/business-economy/saudi-arabias-2026-budget-carefully-boosts-spending"}, {"source_title": "NEOM (Wikipedia)", "url": "https://en.wikipedia.org/wiki/Neom"}, {"source_title": "Public Investment Fund (Wikipedia)", "url": "https://en.wikipedia.org/wiki/Public_Investment_Fund"}]}, {"politician": "Mohammed bin Salman", "policy": "비전 2030", "industry_or_sector": "에너지, 국방", "companies": ["Saudi Aramco"], "impact_description": "MBS는 사우디 아람코의 IPO를 주도하여 비전 2030의 자금 조달을 지원했습니다. 사우디 아람코는 미국과의 LNG 계약을 통해 에너지 다각화 전략을 추진하고 있습니다. MBS는 PIF를 통해 간접적으로 아람코에 영향을 미치며, 생산 및 투자 결정에 대한 정부 통제를 유지하고 있습니다.", "evidence": [{"source_title": "Saudi Aramco IPO and Bin Salman’s Fiscal Takeover (Baker Institute)", "url": "https://www.bakerinstitute.org/research/revamping-energy-policy-saudi-arabia-view-future"}, {"source_title": "Saudi Aramco IPO Analysis (Breaking Defense)", "url": "https://breakingdefense.com/2025/02/saudi-arabia-increases-defense-spending-to-78b-in-2025/"}, {"source_title": "Saudi Arabia’s Military Spending (Middle East Eye)", "url": "https://www.middleeasteye.net/news/saudi-arabia-rejoins-worlds-top-five-military-spenders-says-report"}]}, {"politician": "Mohammed bin Salman", "policy": "비전 2030", "industry_or_sector": "투자, 기술, 스포츠", "companies": ["Public Investment Fund (PIF)"], "impact_description": "MBS는 PIF의 의장으로서 9,410억 달러 규모의 자산을 관리하며, 비전 2030의 핵심 프로젝트를 추진합니다. PIF는 NEOM을 완전히 소유하고 있으며, 사우디 아람코의 8% 지분을 보유하고 있습니다. 또한 뉴캐슬 유나이티드 FC, 우버, 테슬라 등에 투자하며 경제 다각화를 실현하고 있습니다.", "evidence": [{"source_title": "Public Investment Fund (Wikipedia)", "url": "https://en.wikipedia.org/wiki/Public_Investment_Fund"}, {"source_title": "Saudi Arabia’s 2026 Budget (Majalla)", "url": "https://en.majalla.com/node/328566/business-economy/saudi-arabias-2026-budget-carefully-boosts-spending"}]}, {"politician": "Mohammed bin Salman", "policy": "비전 2030", "industry_or_sector": "기술, 관광, 재생에너지", "companies": ["NEOM"], "impact_description": "NEOM은 MBS가 주도하는 비전 2030의 핵심 프로젝트로, PIF가 완전히 소유하고 있습니다. 이 프로젝트는 녹색 수소 및 미래 도시 개발을 목표로 하며, 사우디 경제 다각화의 상징입니다. 그러나 지연, 비용 초과, 인권 논란 등으로 어려움을 겪고 있습니다.", "evidence": [{"source_title": "NEOM (Wikipedia)", "url": "https://en.wikipedia.org/wiki/Neom"}, {"source_title": "Fortune Korea", "url": "https://www.fortunekorea.co.kr/news/articleView.html?idxno=39565"}]}], "notes": ""}} diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/dev_test/influence_model_responses_eval.jsonl b/usecase/solar-political-influence-analyzer/src/ai-engine/dev_test/influence_model_responses_eval.jsonl new file mode 100644 index 0000000..21a3f3c --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/dev_test/influence_model_responses_eval.jsonl @@ -0,0 +1,18 @@ +{"query": "윤석열", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "윤석열", "policy": "규제 혁파를 통한 민간 주도 성장, 물가 안정, 수출 증대, 투자 활성화, 부동산 시장 정상화, 원전 생태계 복원", "industry_or_sector": "경제 성장 및 민생 안정", "companies": ["삼성전자", "현대차", "부동산 개발사"], "impact_description": "윤석열 정부의 규제 완화 정책은 삼성, 현대차, 부동산 개발사와 같은 대기업에 혜택을 제공했으나, 물가 상승률 완화는 미흡했으며 탄핵으로 인해 장기 프로젝트가 중단되거나 지연됨", "impact_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEy8D5-vRFmyOexozl4_qdeevuel1uszOOmPNtoEv8iFbHIpQcnmIBwfiftrJyhdtHXp_6ZwEsZZTFHb9R339RvtOwyXBI09udT7t7a7bRmkBojrf3DwopbBzy-IsKQbGWO-4Nh190fUGxrtBDjjdkC97ZWo9svNa1I2ngwgkKZNtWDmyP3h8M=", "source_title": "wikipedia.org", "http_status": 200, "ok": true, "label": "UNSUPPORTED", "score": 0.2, "reasoning": "제공된 웹 페이지는 윤석열 정부의 구성, 인사, 주요 사건 및 탄핵 과정을 상세히 설명하고 있습니다. 그러나 윤석열 정부의 규제 완화 정책이 삼성, 현대차, 부동산 개발사와 같은 대기업에 혜택을 주었다는 내용, 물가 상승률 완화가 미흡했다는 내용, 또는 탄핵으로 인해 장기 프로젝트가 중단되거나 지연되었다는 구체적인 경제적 영향에 대한 언급은 찾을 수 없습니다. 페이지는 주로 정치적 사건과 인사에 초점을 맞추고 있습니다.", "evidence_spans": [], "error_type": "NONE"}], "attribution_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEy8D5-vRFmyOexozl4_qdeevuel1uszOOmPNtoEv8iFbHIpQcnmIBwfiftrJyhdtHXp_6ZwEsZZTFHb9R339RvtOwyXBI09udT7t7a7bRmkBojrf3DwopbBzy-IsKQbGWO-4Nh190fUGxrtBDjjdkC97ZWo9svNa1I2ngwgkKZNtWDmyP3h8M=", "source_title": "wikipedia.org", "http_status": 200, "ok": true, "label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "이 문서는 윤석열 정부에 대한 위키백과 문서로, 윤석열 대통령과 그의 내각 구성, 주요 사건 등을 상세히 다루고 있습니다. 제시된 정책들은 윤석열 정부의 핵심 국정 과제이므로, 정부 자체를 다루는 이 문서는 정책과 매우 밀접하게 관련됩니다.", "evidence_spans": ["윤석열 정부", "대통령 윤석열", "경제부총리 겸 기획재정부 장관", "국토교통부 장관"], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}]}, {"chain_index": 1, "politician": "윤석열", "policy": "반도체, AI, 바이오 등 첨단 산업 초격차 확보, 디지털 인재 양성", "industry_or_sector": "미래 성장 동력 확보 (첨단 산업 육성)", "companies": ["SK하이닉스", "네이버", "카카오", "대학 및 연구소"], "impact_description": "K-반도체 전략 추진으로 SK하이닉스, 네이버, 카카오 등 첨단 산업 기업에 R&D 투자 확대 및 인프라 구축 지원이 이루어졌으나, 인재 양성 프로그램은 예산 삭감 및 정권 교체로 지연됨", "impact_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQFLouOHMAd4fMD22HT-9YG95CesGyt3PXy42cyYW__9xESd84JAuKQktS-QeGOIRVhSyeHURhDEPvUhS4vF9hEVujkIjRqF9xN3iIQpNslu8jQfYlGMRw94mdejIHuUrjq23yeXmeI=", "source_title": "koreaherald.com", "http_status": 200, "ok": true, "label": "CONTRADICTED", "score": 0.2, "reasoning": "기사에는 R&D 투자 확대 및 첨단 산업 지원에 대한 내용이 일부 언급되어 있으나, SK하이닉스, 네이버, 카카오 등 특정 기업에 대한 언급은 없습니다. 또한, 인재 양성 프로그램이 예산 삭감 및 정권 교체로 지연되었다는 설명과 달리, 기사에서는 첨단 분야 인재 유치를 위해 정부 초청 장학금 프로그램 수혜자를 확대하고 우수 인재의 영주권 및 귀화 제도 개선 방안을 도입할 것이라고 명시하여 인재 양성 프로그램의 확대를 시사하고 있어 내용이 상충됩니다.", "evidence_spans": ["Companies will see a 10 percentage point rise in tax credits on the excess of research and development expenditure for the tax period over the base amount.", "The cash support rate for foreign investment in national high-tech strategic industries such as semiconductors, will increase to a maximum of 50 percent of outstanding investments.", "In order to attract talent in high-tech fields, the number of recipients of government-invited scholarship programs will be expanded for those majoring in science and engineering in the first half of this year.", "Measures to improve the permanent residency and naturalization systems for talented workers will also be introduced."], "error_type": "NONE"}], "attribution_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQFLouOHMAd4fMD22HT-9YG95CesGyt3PXy42cyYW__9xESd84JAuKQktS-QeGOIRVhSyeHURhDEPvUhS4vF9hEVujkIjRqF9xN3iIQpNslu8jQfYlGMRw94mdejIHuUrjq23yeXmeI=", "source_title": "koreaherald.com", "http_status": 200, "ok": true, "label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "기사는 윤석열 대통령이 2024년 정부 정책을 논의하는 행사에서 연설한 내용을 포함하며, 정부의 경제 정책 방향 중 첨단 산업 육성 및 인재 양성 관련 내용을 다루고 있습니다. 특히 반도체 등 국가 첨단 전략 산업에 대한 투자 유치 및 R&D 세액 공제 확대, 첨단 분야 인재 유치 방안 등이 명확히 언급되어 있습니다.", "evidence_spans": ["President Yoon Suk Yeol speaks during an event to discuss 2024 government policies", "The tax credit program has been focused on national strategic technologies or new growth technologies so far.", "In order to attract talent in high-tech fields, the number of recipients of government-invited scholarship programs will be expanded for those majoring in science and engineering", "The cash support rate for foreign investment in national high-tech strategic industries such as semiconductors, will increase to a maximum of 50 percent of outstanding investments."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}]}, {"chain_index": 2, "politician": "윤석열", "policy": "복지 사각지대 해소, 주거·의료·교육 격차 완화", "industry_or_sector": "사회 안전망 강화", "companies": ["보건복지부", "복지단체", "청년 단체"], "impact_description": "중위소득 인상 및 생계급여 확대 등 복지 확대 정책이 발표되었으나, 탄핵으로 인해 실행이 중단됨", "impact_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEaYL1E8qg_LknedeJi1izjqf02886UX8OmASrlvVG8s6SMMUNbZXqcq1TaXAfbKq55UkYRJI1hbj3YBNAJqs1lr6uvqCDZO7K1G95fQrizAg8XK2BVgb93gCU1cMotBqmdCL_yfLQLTqGYb8n7IGFRJWTyhZz6dFhzF7JqjlJ4", "source_title": "koreakr", "http_status": 200, "ok": true, "label": "UNSUPPORTED", "score": 0.1, "reasoning": "제공된 원문은 과학기술정보통신부의 2025년 업무계획에 대한 브리핑 내용으로, 중위소득 인상, 생계급여 확대 등 복지 확대 정책이나 탄핵으로 인한 정책 실행 중단에 대한 언급이 전혀 없습니다. 또한, 보건복지부, 복지단체, 청년 단체 등 언급된 회사/기관에 대한 내용도 없습니다.", "evidence_spans": [], "error_type": "NONE"}], "attribution_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEaYL1E8qg_LknedeJi1izjqf02886UX8OmASrlvVG8s6SMMUNbZXqcq1TaXAfbKq55UkYRJI1hbj3YBNAJqs1lr6uvqCDZO7K1G95fQrizAg8XK2BVgb93gCU1cMotBqmdCL_yfLQLTqGYb8n7IGFRJWTyhZz6dFhzF7JqjlJ4", "source_title": "koreakr", "http_status": 200, "ok": true, "label": "WEAKLY_RELATED", "score": 0.6, "reasoning": "기사는 과학기술정보통신부의 2025년 업무계획 브리핑으로, '민생안정'과 '디지털포용정책'을 통해 청각·언어장애인을 위한 시스템 도입 등 '복지 사각지대 해소'의 일부 측면을 다루고 있습니다. 그러나 윤석열 대통령의 이름은 직접 언급되지 않았으며, 정책의 다른 주요 부분(주거, 의료, 교육 격차 완화)은 다루지 않아 관련성이 약합니다.", "evidence_spans": ["저희가 2년 반, 정부의 전반기를 지나가고 있습니다.", "민생을 좀 더 어떻게 하면 안정시키겠냐", "민생안정에 조금 더 도움이 될 수 있도록 총력의 노력을 다하겠습니다.", "청각, 언어장애인분들을 위한 실시간 3자 영상통화 119 시스템을 도입하는 등 디지털포용정책도 가시화해 나가겠습니다."], "error_type": "NONE", "politician_mentioned": false, "policy_topic_mentioned": true}]}, {"chain_index": 3, "politician": "윤석열", "policy": "북한 억제력 강화, 한미 동맹 공고화, 글로벌 중추 국가 역할", "industry_or_sector": "국방·외교 정책", "companies": ["국방부", "외교부", "미국", "일본 정부", "NATO"], "impact_description": "한미일 3국 협력 강화로 군사·정보 공유가 확대되었으나, 이재명 정부에서 대북 정책 전환 가능성이 높음", "impact_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEaYL1E8qg_LknedeJi1izjqf02886UX8OmASrlvVG8s6SMMUNbZXqcq1TaXAfbKq55UkYRJI1hbj3YBNAJqs1lr6uvqCDZO7K1G95fQrizAg8XK2BVgb93gCU1cMotBqmdCL_yfLQLTqGYb8n7IGFRJWTyhZz6dFhzF7JqjlJ4", "source_title": "koreakr", "http_status": 200, "ok": true, "label": "UNSUPPORTED", "score": 0.1, "reasoning": "제공된 원문은 과학기술정보통신부의 2025년 업무계획에 대한 브리핑 내용으로, 과학기술 및 디지털 정책에 초점을 맞추고 있습니다. 한미일 3국 협력 강화, 군사·정보 공유 확대, 이재명 정부의 대북 정책 전환 가능성 등 영향 설명에 언급된 국방·외교 정책 관련 내용은 전혀 포함되어 있지 않습니다. 따라서 영향 설명은 원문으로 뒷받침되지 않습니다.", "evidence_spans": [], "error_type": "NONE"}], "attribution_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEaYL1E8qg_LknedeJi1izjqf02886UX8OmASrlvVG8s6SMMUNbZXqcq1TaXAfbKq55UkYRJI1hbj3YBNAJqs1lr6uvqCDZO7K1G95fQrizAg8XK2BVgb93gCU1cMotBqmdCL_yfLQLTqGYb8n7IGFRJWTyhZz6dFhzF7JqjlJ4", "source_title": "koreakr", "http_status": 200, "ok": true, "label": "UNRELATED", "score": 0.1, "reasoning": "기사는 과학기술정보통신부의 2025년 업무계획에 대한 브리핑으로, AI, 양자, 바이오 등 과학기술 및 디지털 정책에 중점을 두고 있습니다. 윤석열 대통령은 언급되지 않았으며, '북한 억제력 강화'는 전혀 다루지 않습니다. '한미 동맹 공고화'와 '글로벌 중추 국가 역할'은 과학기술 안보 연대 및 과학기술 외교 이니셔티브와 같이 과학기술 분야에 한정되어 간접적으로 언급될 뿐, 주어진 정책의 핵심 내용인 국방·외교 정책과는 거리가 멀어 관련성이 매우 낮습니다.", "evidence_spans": ["미국의 신정부와의 기술안보 연대를 강화하고", "국제무대에서 우리의 위상을 공고히 하겠습니다.", "외교부와 공동으로 과학기술 외교 이니셔티브를 마련할 예정으로 있고"], "error_type": "NONE", "politician_mentioned": false, "policy_topic_mentioned": false}]}, {"chain_index": 4, "politician": "윤석열", "policy": "탄소중립 및 RE100 솔루션 지원", "industry_or_sector": "에너지 정책", "companies": ["그리드위즈", "SK가스"], "impact_description": "그리드위즈는 탄소중립 및 RE100 솔루션 전문 기업으로 SK가스와 협력하여 2025년 상반기 매출 483억 원을 기록하며 ESS 및 태양광 프로젝트를 확대함", "impact_results": [{"url": "https://www.dailysportshankook.co.kr/news/articleView.html?idxno=419082", "source_title": "dailysportshankook.co.kr", "http_status": null, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 원문 텍스트가 비어 있어 영향 설명을 평가할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT"}], "attribution_results": [{"url": "https://www.dailysportshankook.co.kr/news/articleView.html?idxno=419082", "source_title": "dailysportshankook.co.kr", "http_status": null, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 기사 내용이 비어 있어 윤석열 대통령과 탄소중립 및 RE100 솔루션 지원 정책 간의 관련성을 판단할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT", "politician_mentioned": false, "policy_topic_mentioned": false}]}], "gold_eval": {"similarity_score": 0.7, "reasoning": "두 보고서는 이재명 의원의 기본소득 및 일부 인프라 정책에 대한 분석에서 유사점을 보였습니다. 골드 보고서는 부동산 시장 안정화 정책과 대규모 국책 사업의 경제적 파급 효과를 심층적으로 다룬 반면, 모델 보고서는 소상공인 및 지역 특화 산업 지원 정책에 대한 독자적인 관점을 제시했습니다. 전반적으로 골드 보고서가 주요 거시 경제 정책의 시장 영향 분석에서 더 깊이 있는 설명을 제공했습니다.", "model_unique_points": ["소상공인 및 중소기업 지원 정책이 지역 경제 활성화에 미치는 영향", "지역 특화 산업 육성 방안과 관련 중소 제조 기업의 성장 가능성"], "gold_unique_points": ["부동산 시장 안정화 정책이 건설 및 금융 산업에 미치는 구체적인 영향 분석", "대규모 국책 사업 추진에 따른 특정 대기업 및 관련 하청 기업의 수혜 전망"]}}} +{"query": "이재명", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "이재명", "policy": "바이오산업 혁신 성장 전략", "industry_or_sector": "바이오의약품 및 생명과학", "companies": ["Samsung Biologics", "Celltrion"], "impact_description": "이재명 정부의 바이오산업 육성 정책은 삼성바이오로직스와 셀트리온과 같은 기업에 R&D 지원 및 세제 혜택을 제공하여 글로벌 시장 경쟁력을 강화했습니다.", "impact_results": [{"url": "https://example.com/biotech-policy-2025", "source_title": "이재명 정부의 바이오산업 육성 정책 분석", "http_status": 404, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 원문 텍스트는 \"Example Domain\"이라는 일반적인 예시 도메인 페이지이며, 바이오산업 육성 정책, 삼성바이오로직스, 셀트리온 또는 이재명 정부와 관련된 어떠한 정보도 포함하고 있지 않습니다. 따라서 영향 설명을 평가하기에 충분한 정보가 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT"}], "attribution_results": [{"url": "https://example.com/biotech-policy-2025", "source_title": "이재명 정부의 바이오산업 육성 정책 분석", "http_status": 404, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 웹 페이지 내용은 실제 기사 내용이 아닌 \"Example Domain\" 텍스트로, 관련성을 판단하기에 정보가 부족합니다.", "evidence_spans": [], "error_type": "TOO_SHORT", "politician_mentioned": false, "policy_topic_mentioned": false}]}, {"chain_index": 1, "politician": "이재명", "policy": "2030 전기차 보급 확대 계획", "industry_or_sector": "자동차 및 전기차", "companies": ["Hyundai Motor Group", "Kia Corporation"], "impact_description": "이재명 정부의 전기차 충전 인프라 확충 정책은 현대자동차그룹과 기아자동차의 전기차 판매 증가에 직접적인 기여를 했습니다.", "impact_results": [{"url": "https://example.com/ev-infrastructure-2025", "source_title": "전기차 인프라 확대 정책의 경제적 효과", "http_status": 404, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 소스 텍스트는 일반적인 예시 도메인 페이지이며, 이재명 정부의 전기차 충전 인프라 정책이나 현대자동차그룹 및 기아자동차의 전기차 판매 증가에 대한 어떠한 정보도 포함하고 있지 않습니다. 따라서 영향 설명을 평가하기에 정보가 충분하지 않습니다.", "evidence_spans": [], "error_type": "TOO_SHORT"}], "attribution_results": [{"url": "https://example.com/ev-infrastructure-2025", "source_title": "전기차 인프라 확대 정책의 경제적 효과", "http_status": 404, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 웹 페이지 텍스트는 실제 기사 내용이 아닌 'Example Domain'이라는 일반적인 플레이스홀더 텍스트입니다. 따라서 이재명 정치인과 2030 전기차 보급 확대 계획 정책과의 관련성을 판단할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT", "politician_mentioned": false, "policy_topic_mentioned": false}]}, {"chain_index": 2, "politician": "이재명", "policy": "2050 탄소 중립 산업 로드맵", "industry_or_sector": "철강 및 배터리", "companies": ["POSCO Holdings", "LG Energy Solution"], "impact_description": "이재명 정부의 탄소 중립 산업 정책은 포스코홀딩스와 LG에너지솔루션의 친환경 제품 개발 투자를 촉진시켰습니다.", "impact_results": [{"url": "https://example.com/green-steel-battery-2025", "source_title": "친환경 철강 및 배터리 산업 지원 정책", "http_status": 404, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 웹 페이지는 \"Example Domain\"이라는 일반적인 예시 도메인 페이지로, 이재명 정부의 탄소 중립 산업 정책이나 포스코홀딩스, LG에너지솔루션의 친환경 제품 개발 투자에 대한 어떠한 정보도 포함하고 있지 않습니다. 따라서 주어진 영향 설명을 평가할 충분한 정보가 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT"}], "attribution_results": [{"url": "https://example.com/green-steel-battery-2025", "source_title": "친환경 철강 및 배터리 산업 지원 정책", "http_status": 404, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 기사 내용이 \"Example Domain\"이라는 매우 짧고 일반적인 텍스트로, 이재명 정치인이나 2050 탄소 중립 산업 로드맵 정책과 관련된 정보를 전혀 포함하고 있지 않아 관련성을 판단하기에 정보가 부족합니다.", "evidence_spans": [], "error_type": "TOO_SHORT", "politician_mentioned": false, "policy_topic_mentioned": false}]}], "gold_eval": {"similarity_score": 0.7, "reasoning": "두 보고서는 이재명 의원의 기본소득 및 일부 인프라 정책에 대한 분석에서 유사점을 보였습니다. 골드 보고서는 부동산 시장 안정화 정책과 대규모 국책 사업의 경제적 파급 효과를 심층적으로 다룬 반면, 모델 보고서는 소상공인 및 지역 특화 산업 지원 정책에 대한 독자적인 관점을 제시했습니다. 전반적으로 골드 보고서가 주요 거시 경제 정책의 시장 영향 분석에서 더 깊이 있는 설명을 제공했습니다.", "model_unique_points": ["소상공인 및 중소기업 지원 정책이 지역 경제 활성화에 미치는 영향", "지역 특화 산업 육성 방안과 관련 중소 제조 기업의 성장 가능성"], "gold_unique_points": ["부동산 시장 안정화 정책이 건설 및 금융 산업에 미치는 구체적인 영향 분석", "대규모 국책 사업 추진에 따른 특정 대기업 및 관련 하청 기업의 수혜 전망"]}}} +{"query": "문재인", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "문재인", "policy": "소득주도성장, 공정경제 개혁, 한국판 뉴딜", "industry_or_sector": "반도체, 자동차, 에너지, 제조업", "companies": ["Samsung", "Hyundai Motor Group", "SK Group", "POSCO"], "impact_description": "문재인 정부는 소득주도성장, 공정경제 개혁, 혁신성장 및 한국판 뉴딜 정책을 통해 주요 기업들과 협력 및 갈등을 빚었다. 삼성, 현대자동차, SK그룹, 포스코 등은 정책 수혜와 동시에 노동 개혁 및 규제 강화로 인한 부담을 경험했다.", "impact_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQE2RHVHlmfevlCyE2hik3zgicslBuCawLIafv9FiImdI6IFrrGmoAXLvSpZP6p7UzCMR0VoXvr5x4L2n8YomsK7j-2uroXeCEH9fXSufHVqVMEkHNQeN4mb1z7ueCK9GcU8XiHa0A==", "source_title": "koreaherald.com", "http_status": 200, "ok": true, "label": "UNSUPPORTED", "score": 0.2, "reasoning": "제공된 원문은 문재인 대통령이 협동조합 운동과 기업의 사회적 책임 증진을 강조했다는 내용을 다루고 있습니다. 하지만 영향 설명에 언급된 소득주도성장, 공정경제 개혁, 혁신성장, 한국판 뉴딜과 같은 구체적인 정책명이나 삼성, 현대자동차, SK그룹, 포스코 등 주요 기업들이 이러한 정책으로 인해 겪은 협력 및 갈등, 정책 수혜, 노동 개혁 및 규제 강화로 인한 부담에 대한 내용은 포함되어 있지 않습니다. 원문은 전반적인 사회적 책임에 대한 내용이며, 특정 기업에 대한 구체적인 정책 영향에 대한 증거를 제공하지 않습니다.", "evidence_spans": [], "error_type": "NONE"}, {"url": "https://n.news.naver.com/mnews/article/056/0012072974?sid=100", "source_title": "naver_search", "http_status": 200, "ok": true, "label": "UNSUPPORTED", "score": 0.1, "reasoning": "제공된 원문은 한미 팩트 시트 발표 이후의 경제 및 안보 영향에 대한 토론 내용을 담고 있으며, 주로 이재명 정부와 윤석열 정부의 정책 및 대응에 대해 논의합니다. 영향 설명에 언급된 \"문재인 정부\"의 소득주도성장, 공정경제 개혁, 혁신성장, 한국판 뉴딜 정책에 대한 내용은 전혀 포함되어 있지 않습니다. 또한, 삼성, SK그룹, 포스코에 대한 구체적인 영향 언급도 없습니다. 현대자동차그룹은 언급되지만, 문재인 정부의 정책으로 인한 수혜나 노동 개혁 및 규제 강화로 인한 부담에 대한 내용은 아닙니다.", "evidence_spans": ["◆황정아: 이번 협상은 정말 어려운 협상이었습니다. 글로벌 패권 경쟁의 시대에 미국의 자국 우선주의 일변도 정책에서 이재명 정부가 국익과 실용을 모두 지켜낸 결실이라고 할 수 있겠습니다.", "◆황정아: 이재명 대통령께서 강조하셨던 국내 기업들의 지속적인 대규모 국내 투자를 견인하기 위한 규제 완화 이것 역시 필요하다고 보이고 속도전을 내서 이 관세 협상의 후속 조치 뒷받침하도록 하겠습니다."], "error_type": "NONE"}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQE2RHVHlmfevlCyE2hik3zgicslBuCawLIafv9FiImdI6IFrrGmoAXLvSpZP6p7UzCMR0VoXvr5x4L2n8YomsK7j-2uroXeCEH9fXSufHVqVMEkHNQeN4mb1z7ueCK9GcU8XiHa0A==", "source_title": "tavily_search", "http_status": 200, "ok": true, "label": "UNSUPPORTED", "score": 0.2, "reasoning": "제공된 원문은 문재인 정부가 협동조합 운동과 사회적 책임을 강조했다는 내용을 담고 있지만, 소득주도성장, 공정경제 개혁, 혁신성장, 한국판 뉴딜 정책이 삼성, 현대자동차, SK그룹, 포스코 등 주요 기업들과 협력 및 갈등을 빚고 정책 수혜와 동시에 노동 개혁 및 규제 강화로 인한 부담을 경험했다는 구체적인 내용은 포함하고 있지 않습니다. 삼성과 SK그룹은 다른 헤드라인에서 언급되지만, 문재인 정부의 정책 영향과는 직접적인 관련이 없습니다.", "evidence_spans": [], "error_type": "NONE"}], "attribution_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQE2RHVHlmfevlCyE2hik3zgicslBuCawLIafv9FiImdI6IFrrGmoAXLvSpZP6p7UzCMR0VoXvr5x4L2n8YomsK7j-2uroXeCEH9fXSufHVqVMEkHNQeN4mb1z7ueCK9GcU8XiHa0A==", "source_title": "koreaherald.com", "http_status": 200, "ok": true, "label": "HIGHLY_RELATED", "score": 0.85, "reasoning": "문재인 대통령이 협동조합 운동과 사회적 책임, ESG 경영의 중요성을 강조하는 내용으로, 이는 소득주도성장 및 공정경제 개혁의 기조와 밀접하게 연관된 정책 방향을 보여줍니다.", "evidence_spans": ["President Moon Jae-in on Wednesday lauded the cooperative movement's role in promoting social responsibility on a range of issues, including environment and society.", "Moon said the competitiveness of coexistence and cooperation will be strengthened when socially responsible companies like cooperative federations bolster their cooperation.", "South Korea will continue to foster socially responsible firms and encourage more companies to act on environmental, social and governance issues, Moon said."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}, {"url": "https://n.news.naver.com/mnews/article/056/0012072974?sid=100", "source_title": "naver_search", "http_status": 200, "ok": true, "label": "UNRELATED", "score": 0.15, "reasoning": "기사는 한미 팩트 시트와 이재명 정부의 경제 및 안보 정책에 대해 주로 다루고 있습니다. 문재인 대통령은 핵잠수함 논의의 과거 사례로 한 번 언급되었을 뿐, 기사의 핵심 주제와 관련하여 의미 있게 다뤄지지 않았습니다. 제시된 정책(소득주도성장, 공정경제 개혁, 한국판 뉴딜)은 기사에서 전혀 언급되지 않았습니다.", "evidence_spans": ["그러나 핵잠수함 문제가 이번만 나온 게 아니라 지난 문재인 정부 때도 나왔던 문제입니다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": false}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQE2RHVHlmfevlCyE2hik3zgicslBuCawLIafv9FiImdI6IFrrGmoAXLvSpZP6p7UzCMR0VoXvr5x4L2n8YomsK7j-2uroXeCEH9fXSufHVqVMEkHNQeN4mb1z7ueCK9GcU8XiHa0A==", "source_title": "tavily_search", "http_status": 200, "ok": true, "label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "기사는 문재인 대통령이 협동조합 운동의 사회적 책임 증진 역할을 강조하고, 사회적 책임 기업 육성 및 ESG 경영을 독려하는 내용을 다루고 있습니다. 이는 문재인 정부의 주요 정책인 공정경제 개혁 및 한국판 뉴딜의 정신과 밀접하게 연관된 주제입니다.", "evidence_spans": ["President Moon Jae-in on Wednesday lauded the cooperative movement's role in promoting social responsibility on a range of issues, including environment and society.", "South Korea will continue to foster socially responsible firms and encourage more companies to act on environmental, social and governance issues, Moon said."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}]}], "gold_eval": {"similarity_score": 0.75, "reasoning": "두 보고서는 이재명 의원의 기본소득 및 친환경 에너지 정책을 공통적으로 다루며 관련 산업과 기업을 유사하게 분석했습니다. 그러나 부동산 정책에서 Gold Report는 민간 시장 규제를, Model Report는 공공 주거 확대를 강조하여 접근 방식이 달랐습니다. Gold Report는 기본소득의 플랫폼 산업 영향과 신재생에너지의 이차전지 산업 연관성을 더 깊이 다루어 더 구체적이고 균형 잡힌 시장 파급 효과 설명을 제공했습니다. Model Report는 긍정적 측면에 집중하는 경향이 있었습니다.", "model_unique_points": ["청년 주거 안정화를 위한 공공임대주택 확대 정책과 공공 건설 부문의 영향 분석.", "친환경 에너지 전환 정책에서 RE100 지원을 통한 기업의 재생에너지 사용 확대 측면 강조."], "gold_unique_points": ["다주택자 규제 강화를 통한 민간 부동산 시장 안정화 정책과 그에 따른 민간 건설사 영향 분석.", "기본소득 정책이 플랫폼 산업 및 특정 온라인 유통 기업에 미치는 영향에 대한 심층 분석.", "신재생에너지 정책에서 이차전지 산업 및 관련 기업의 성장 가능성 강조."]}}} +{"query": "박근혜", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "박근혜", "policy": "창조경제 이니셔티브", "industry_or_sector": "첨단 산업 및 스타트업", "companies": ["Samsung", "SK Group", "Hyundai"], "impact_description": "창조경제 정책을 통해 대기업들이 정부 지원을 받고 로비 활동을 통해 특혜를 얻었으며, 최순실 게이트와 같은 부패 사건으로 연결됨", "impact_results": [{"url": "https://n.news.naver.com/mnews/article/009/0003851382?sid=101", "source_title": "[단독] `창조경제 수혜` 이창환…父 이영복 로비 도왔나", "http_status": 200, "ok": true, "label": "PARTIALLY_SUPPORTED", "score": 0.6, "reasoning": "제공된 기사는 창조경제 정책이 로비 활동 및 부패 사건과 연루되었음을 시사하며, 관련 벤처 기업(FX기어)이 정부 사업을 수주하며 성장했음을 언급합니다. 하지만 영향 설명에 명시된 삼성, SK그룹, 현대와 같은 특정 대기업들이 정부 지원을 받고 로비 활동을 통해 특혜를 얻었다는 내용은 기사에서 찾을 수 없습니다. 따라서 일부 내용은 지지되지만, 핵심적인 주체에 대한 정보가 부족합니다.", "evidence_spans": ["정·관계 로비 의혹을 받고 있는 부산 해운대 엘시티 사업의 불똥이 박근혜정부의 역점 시책인 '창조경제'로 번지고 있다.", "이씨가 불법 로비에 개입했다는 게 확인되면 그가 참여한 창조경제 정책의 도덕성과 타당성도 타격을 입을 것으로 예상된다.", "FX기어는 정부의 각종 사업까지 따내며 몸집을 키웠다."], "error_type": "NONE"}, {"url": "https://namu.wiki/w/%EC%B0%BD%EC%A1%B0%EA%B2%BD%EC%A0%9C?uuid=615b40ad-ed25-42ed-93ea-06841939a135", "source_title": "창조경제 (r737 판) - 나무위키", "http_status": 200, "ok": true, "label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 웹 페이지는 창조경제 정책이 박근혜-최순실 게이트와 연결되어 대기업들이 정부 지원을 받고 로비 활동을 통해 특혜를 얻었음을 명확하게 설명하고 있습니다. 특히 삼성과 SK 그룹이 최순실에게 자금을 제공하고 그 대가로 오너의 민원 해결이나 그룹 승계 비용 절감 등의 편익을 얻었음이 구체적으로 언급되어 있습니다.", "evidence_spans": ["2016년 박근혜-최순실 게이트가 터지면서 창조경제의 실체가 드러났다.", "기업으로부터 세무조사 등의 채찍과 재벌오너의 민원해결이라는 당근으로 모금을 하여, 비선 실세의 목적과 편의에 맞게 나라의 문화예술계와 스포츠계를 주물러 온 것으로 보인다.", "재벌은 이 과정에서 최순실 로비 비용보다 훨씬 더 많은 편익을 취한 것으로 보인다.", "예를 들어 삼성은 250억 원 가량을 최순실에 바치고 삼성물산과 제일모직의 합병 과정에서 국민연금을 움직여 수십배의 그룹 승계 비용을 절약한 것으로 보인다.", "롯데·SK 등은 오너의 수사 혹은 사면 등과 관련 있었다."], "error_type": "NONE"}], "attribution_results": [{"url": "https://n.news.naver.com/mnews/article/009/0003851382?sid=101", "source_title": "[단독] `창조경제 수혜` 이창환…父 이영복 로비 도왔나", "http_status": 200, "ok": true, "label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "기사는 박근혜 정부의 핵심 정책인 '창조경제'와 관련된 로비 의혹 및 수혜자 문제를 다루고 있다. 박근혜 대통령이 '코리아 VR페스티벌' 간담회에서 창조경제 수혜자와 대화한 사실이 언급되며, 창조경제 정책의 도덕성과 타당성에 대한 논의가 중심이 된다.", "evidence_spans": ["정·관계 로비 의혹을 받고 있는 부산 해운대 엘시티 사업의 불똥이 박근혜정부의 역점 시책인 '창조경제'로 번지고 있다.", "이씨는 지난 10월 서울에서 열린 '코리아 VR페스티벌' 간담회에서 박근혜 대통령과 대화를 나누기도 했다.", "이씨가 불법 로비에 개입했다는 게 확인되면 그가 참여한 창조경제 정책의 도덕성과 타당성도 타격을 입을 것으로 예상된다.", "미래창조과학부 산하 한국과학창의재단 창조경제문화운동 추진위원회 선임위원으로 활동했고"], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}, {"url": "https://namu.wiki/w/%EC%B0%BD%EC%A1%B0%EA%B2%BD%EC%A0%9C?uuid=615b40ad-ed25-42ed-93ea-06841939a135", "source_title": "창조경제 (r737 판) - 나무위키", "http_status": 200, "ok": true, "label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "이 문서는 박근혜 정부의 핵심 정책이었던 창조경제 이니셔티브에 대해 상세하게 설명하고 비판하며, 박근혜 대통령과의 직접적인 연관성 및 박근혜-최순실 게이트와의 관계까지 다루고 있어 정치인과 정책 모두에 대해 매우 깊이 있게 다루고 있습니다.", "evidence_spans": ["1. 박근혜정부의 정책(?)", "박근혜정부가 밝힌 창조경제의 정의", "창조경제는 크게 문화컨텐츠와 스포츠 사업으로 구분되어 있는데, 문화컨텐츠는 미르 재단을 통해 차은택 감독이, 스포츠는 K-스포츠 재단을 통해 최순실의 조카인 승마선수 장시호가 해먹도록 만들어진 국가 착취 시스템에 그럴듯한 이름을 붙인 것에 불과했다.", "박근혜 대통령이 취임하자마자 공들여 만든 홈페이지인 '창조경제타운'에는 성공 및 실패 사례랍시고 뭔가 주르륵 나와 있다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}]}, {"chain_index": 1, "politician": "박근혜", "policy": "창조경제 이니셔티브", "industry_or_sector": "대기업 및 재벌", "companies": ["Samsung", "SK Group", "Hyundai"], "impact_description": "대기업들이 최순실 재단 등에 기부금을 제공하고 정부로부터 규제 완화 및 합병 승인 등의 특혜를 받음", "impact_results": [{"url": "https://n.news.naver.com/mnews/article/009/0003851382?sid=101", "source_title": "[단독] `창조경제 수혜` 이창환…父 이영복 로비 도왔나", "http_status": 200, "ok": true, "label": "UNSUPPORTED", "score": 0.2, "reasoning": "제공된 기사 내용은 이창환 씨와 엘시티 사업, 그리고 그의 벤처기업 FX기어가 정부 사업을 수주하는 과정에서의 로비 의혹 및 특혜 논란에 초점을 맞추고 있습니다. 하지만 임팩트 설명에 언급된 삼성, SK그룹, 현대와 같은 대기업들이 최순실 재단에 기부금을 제공하고 정부로부터 규제 완화 및 합병 승인 등의 특혜를 받았다는 내용은 기사에서 전혀 찾아볼 수 없습니다. 기사는 대기업이 아닌 특정 개인과 그의 회사를 다루고 있으며, 임팩트 설명의 핵심 내용과 일치하지 않습니다.", "evidence_spans": [], "error_type": "NONE"}, {"url": "https://namu.wiki/w/%EC%B0%BD%EC%A1%B0%EA%B2%BD%EC%A0%9C?uuid=615b40ad-ed25-42ed-93ea-06841939a135", "source_title": "창조경제 (r737 판) - 나무위키", "http_status": 200, "ok": true, "label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 웹 페이지는 대기업들이 최순실 재단에 기부금을 제공하고 그 대가로 정부로부터 특혜를 받았다는 내용을 명확하게 지지합니다. 특히 삼성은 최순실에게 자금을 제공하고 삼성물산과 제일모직 합병 과정에서 국민연금을 동원하여 그룹 승계 비용을 절약하는 특혜를 받았다고 구체적으로 언급되어 있습니다. SK 그룹 또한 오너의 수사 및 사면과 관련이 있었다고 명시되어 있습니다. 전반적으로 재벌의 민원 해결과 노동유연화 등 대기업에 유리한 정책이 추진되었음이 나타납니다.", "evidence_spans": ["재벌은 이 과정에서 최순실 로비 비용보다 훨씬 더 많은 편익을 취한 것으로 보인다. 예를 들어 삼성은 250억 원 가량을 최순실에 바치고 삼성물산과 제일모직의 합병 과정에서 국민연금을 움직여 수십배의 그룹 승계 비용을 절약한 것으로 보인다.", "롯데·SK 등은 오너의 수사 혹은 사면 등과 관련 있었다.", "박근혜 정부는 자금 출연을 한 재벌의 민원을 들어주며 노동유연화, 저성과자 퇴출, 최저요금 인상률 삭감 등 저임금 반노동 정책을 견지했다."], "error_type": "NONE"}], "attribution_results": [{"url": "https://n.news.naver.com/mnews/article/009/0003851382?sid=101", "source_title": "[단독] `창조경제 수혜` 이창환…父 이영복 로비 도왔나", "http_status": 200, "ok": true, "label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "이 기사는 엘시티 로비 의혹이 박근혜 정부의 핵심 정책인 '창조경제'로 확산되고 있음을 다룹니다. 엘시티 관련 인물이 창조경제 정책에 참여하고 박근혜 대통령과 대화한 사실을 언급하며, 창조경제 정책의 도덕성과 타당성에 대한 의문을 제기하고 있어 정치인과 정책 모두 기사의 핵심 주제입니다.", "evidence_spans": ["정·관계 로비 의혹을 받고 있는 부산 해운대 엘시티 사업의 불똥이 박근혜정부의 역점 시책인 '창조경제'로 번지고 있다.", "이씨는 지난 10월 서울에서 열린 '코리아 VR페스티벌' 간담회에서 박근혜 대통령과 대화를 나누기도 했다.", "그가 참여한 창조경제 정책의 도덕성과 타당성도 타격을 입을 것으로 예상된다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}, {"url": "https://namu.wiki/w/%EC%B0%BD%EC%A1%B0%EA%B2%BD%EC%A0%9C?uuid=615b40ad-ed25-42ed-93ea-06841939a135", "source_title": "창조경제 (r737 판) - 나무위키", "http_status": 200, "ok": true, "label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "이 문서는 박근혜 정부의 핵심 정책인 창조경제 이니셔티브에 대해 상세하게 설명하고, 박근혜 대통령과의 직접적인 연관성, 정책의 정의, 비판, 성과, 그리고 박근혜-최순실 게이트와의 연관성까지 다루고 있습니다. 정치인과 정책 모두 문서의 핵심 주제입니다.", "evidence_spans": ["1. 박근혜정부의 정책(?)", "박근혜 후보가 내세운 활성화 방안 중 일부를 창조경제라고 말한다.", "창조경제는 크게 문화컨텐츠와 스포츠 사업으로 구분되어 있는데, 문화컨텐츠는 미르 재단을 통해 차은택 감독이, 스포츠는 K-스포츠 재단을 통해 최순실의 조카인 승마선수 장시호가 해먹도록 만들어진 국가 착취 시스템에 그럴듯한 이름을 붙인 것에 불과했다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}]}], "gold_eval": {"similarity_score": 0.7, "reasoning": "두 보고서는 이재명 의원의 기본소득 및 일부 인프라 정책에 대한 분석에서 유사점을 보였습니다. 골드 보고서는 부동산 시장 안정화 정책과 대규모 국책 사업의 경제적 파급 효과를 심층적으로 다룬 반면, 모델 보고서는 소상공인 및 지역 특화 산업 지원 정책에 대한 독자적인 관점을 제시했습니다. 전반적으로 골드 보고서가 주요 거시 경제 정책의 시장 영향 분석에서 더 깊이 있는 설명을 제공했습니다.", "model_unique_points": ["소상공인 및 중소기업 지원 정책이 지역 경제 활성화에 미치는 영향", "지역 특화 산업 육성 방안과 관련 중소 제조 기업의 성장 가능성"], "gold_unique_points": ["부동산 시장 안정화 정책이 건설 및 금융 산업에 미치는 구체적인 영향 분석", "대규모 국책 사업 추진에 따른 특정 대기업 및 관련 하청 기업의 수혜 전망"]}}} +{"query": "이명박", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "이명박", "policy": "4대강 복원 프로젝트", "industry_or_sector": "건설업", "companies": ["Hyundai Engineering & Construction", "Samsung C&T", "Daewoo Construction", "GS Engineering", "SK Engineering & Construction"], "impact_description": "이명박 정부의 4대강 사업은 현대건설, 삼성물산, 대우건설 등 주요 건설사들과 1조 원 규모의 계약을 체결했으며, 입찰 조작 스캔들로 8개 기업이 1.115조 원의 벌금을 부과받았습니다. 이 프로젝트는 건설사들에게 막대한 수익을 제공했으나, 환경 파괴와 안전 문제로 비판을 받았습니다.", "impact_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQF0ttKnDQMaQEoM-rAH2ifbsCxDsLz-Hp_WLNJikbuY_pzP-XB_RmIJlB3gOXOapuvZ3Hhd3AAjNgYkKuDc3Xd_AjM6BO4APcWYVTF0_5Ub48Xm8gxASEyqSVBW4vkMwhVXB7XqCAf3SWWfL2lZBJ7PmrMZTFA=", "source_title": "Four Rivers Project Contracts (CAUON)", "http_status": 200, "ok": true, "label": "PARTIALLY_SUPPORTED", "score": 0.6, "reasoning": "제시된 웹 페이지는 이명박 정부의 4대강 사업과 건설사들의 참여, 그리고 환경 파괴 및 안전 문제로 비판받았다는 내용은 지지합니다. 특히 2013년 건설사들의 담합 사실이 드러났다는 내용도 포함되어 있습니다. 하지만 현대건설, 삼성물산, 대우건설 등 특정 건설사들의 이름이 명시되어 있지 않으며, 1조 원 규모의 계약 체결, 8개 기업이 1.115조 원의 벌금을 부과받았다는 구체적인 수치와 기업 수에 대한 정보는 웹 페이지에 없습니다. 또한 건설사들에게 막대한 수익을 제공했다는 직접적인 언급도 없습니다.", "evidence_spans": ["When Lee Myung-bak was a presidential candidate, he pledged to fund the completion of a Grand Canal project. In response to fierce criticism to the project, Lee revised the commitment to the major four rivers project.", "In July 2013, the fact that construction companies that participated in the project [was fixing] was exposed.", "Moreover, it destroyed the nature of the river by wrapping its riverside and riverbeds with cement.", "In January 2013, the Board of Audit and Inspection reversed its previous audit and announced that the durability of dam is weak due to poor design, and that there are many problems in water quality due to incorrect prediction of water quality and incorrect application of management standards. In addition, despite the large size of the four major rivers, it was found that a repair is needed according to the standard for the installation of small dams. In particular, water quality has deteriorated to such a degree that it threatens the safety of drinking water."], "error_type": "NONE"}, {"url": "https://www.koreatimes.co.kr/business/companies/20120606/hyundai-daewoo-face-trouble-overseas", "source_title": "Hyundai and Daewoo Bid-Rigging (Korea Times)", "http_status": null, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 source_text 내용이 비어있어 이명박 정부의 4대강 사업이 건설업체에 미친 영향에 대한 설명을 평가할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT"}, {"url": "https://n.news.naver.com/mnews/article/028/0002188190?sid=102", "source_title": "‘4대강 건설사’ 25곳 압수수색…비자금·로비의혹 수사 예고", "http_status": 200, "ok": true, "label": "PARTIALLY_SUPPORTED", "score": 0.45, "reasoning": "제시된 웹 페이지는 이명박 정부의 4대강 사업에 현대건설, 삼성물산, 대우건설 등 주요 건설사들이 참여했으며, 입찰 담합 스캔들로 인해 8개 기업에 과징금이 부과되었다는 내용은 지지합니다. 또한, 감사원 감사에서 일부 부실공사가 드러났다는 내용도 있어 안전 문제 비판과 일부 일치합니다. 그러나 영향 설명에 언급된 \"1조 원 규모의 계약\" 체결에 대한 구체적인 내용은 찾을 수 없으며, \"막대한 수익을 제공했으나\"라는 부분도 직접적으로 언급되지 않았습니다. 특히, 입찰 조작 스캔들로 부과된 벌금 액수가 영향 설명에서는 \"1.115조 원\"으로 명시되었으나, 웹 페이지에는 \"1115억 원\"으로 기재되어 있어 큰 차이가 발생하며 이는 직접적인 모순입니다. \"환경 파괴\"에 대한 비판도 웹 페이지에서는 명시적으로 언급되지 않았습니다.", "evidence_spans": ["검찰이 이명박 정부의 핵심사업인 ‘4대강 사업’ 비리 의혹과 관련해 대형 건설사 등 모두 25개 업체를 압수수색했다.", "압수수색 대상은 현대건설과 삼성물산·대우건설·지에스(GS)건설·대림산업·포스코건설·에스케이(SK)건설·현대산업개발·쌍용건설·한화건설·계룡건설·금호산업·한진중공업·코오롱글로벌·경남기업·삼환기업 등 건설업체 16곳과 설계회사 9곳이다.", "공정위 조사에선 19개 건설업체들이 시공능력 평가액 순위에 따라 업체별로 지분율을 정해 배분하기로 사전 합의했고, 14개 턴키입찰 공구가 사전 합의 내용대로 낙찰이 이뤄진 사실이 드러났다.", "공정위는 8개 건설사에 시정명령과 함께 1115억원의 과징금을 부과했으나 검찰에 고발하지는 않았다.", "지난 1월 감사원 감사에서 일부 부실공사가 드러나기도 했다."], "error_type": "NONE"}], "attribution_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQF0ttKnDQMaQEoM-rAH2ifbsCxDsLz-Hp_WLNJikbuY_pzP-XB_RmIJlB3gOXOapuvZ3Hhd3AAjNgYkKuDc3Xd_AjM6BO4APcWYVTF0_5Ub48Xm8gxASEyqSVBW4vkMwhVXB7XqCAf3SWWfL2lZBJ7PmrMZTFA=", "source_title": "Four Rivers Project Contracts (CAUON)", "http_status": 200, "ok": true, "label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "기사는 이명박 전 대통령이 4대강 사업을 추진했음을 명확히 언급하고 있으며, 4대강 사업의 배경, 진행 과정, 감사 및 이후 문재인 정부의 4대강 사업 재검토와 보 해체 논의까지 상세하게 다루고 있습니다. 이명박 전 대통령은 이 사업의 핵심 인물로 여러 차례 언급되며, 기사 전체가 4대강 사업과 그 복원 논의에 초점을 맞추고 있습니다.", "evidence_spans": ["When Lee Myung-bak was a presidential candidate, he pledged to fund the completion of a Grand Canal project. In response to fierce criticism to the project, Lee revised the commitment to the major four rivers project.", "Overturning the Four Major Rivers Project", "Moon Jae-in instructed an audit for the four major rivers project after he took over authority.", "As a result, the committee proposed a plan to dismantle Gongju dam, Sejong dam, and Juksan dam of the Yeongsan River among the five dams of the Geum River and Yeongsan River, and to open Baekje dam of the Geum River and Seungchon dam of the Yeongsan River to a permanent exhibition."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}, {"url": "https://www.koreatimes.co.kr/business/companies/20120606/hyundai-daewoo-face-trouble-overseas", "source_title": "Hyundai and Daewoo Bid-Rigging (Korea Times)", "http_status": null, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 기사 내용이 비어 있어 이명박 대통령과 4대강 복원 프로젝트 정책과의 관련성을 판단할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT", "politician_mentioned": false, "policy_topic_mentioned": false}, {"url": "https://n.news.naver.com/mnews/article/028/0002188190?sid=102", "source_title": "‘4대강 건설사’ 25곳 압수수색…비자금·로비의혹 수사 예고", "http_status": 200, "ok": true, "label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "이 기사는 이명박 정부의 핵심 사업인 4대강 사업 비리 의혹과 관련하여 대형 건설사들을 압수수색한 내용을 다루고 있습니다. 이명박 전 대통령과 4대강 사업이 기사의 핵심 주제로 직접적으로 언급되며, 사업의 비리 수사 상황을 상세히 설명하고 있어 관련성이 매우 높습니다.", "evidence_spans": ["검찰이 이명박 정부의 핵심사업인 ‘4대강 사업’ 비리 의혹과 관련해 대형 건설사 등 모두 25개 업체를 압수수색했다.", "4대강 사업은 쓰인 예산만 22조원에 이르고, 그동안 사업권을 놓고 각종 로비 의혹이 끊이지 않았다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}]}, {"chain_index": 1, "politician": "이명박", "policy": "저탄소 녹색성장 정책", "industry_or_sector": "에너지", "companies": ["Global Green Growth Institute (GGGI)", "Hanwha Engineering", "Doosan Enerbility"], "impact_description": "이명박 정부의 녹색성장 정책은 재생에너지 및 원자력 에너지 분야에 투자했으며, 한화엔지니어링과 두산에너빌리티 같은 기업들이 혜택을 받았습니다. 녹색성장연구소(GGGI) 설립으로 국제적 협력도 강화되었습니다.", "impact_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGHg7pRnxTKj4nhSUBQkSW397WQyYnuJr9IRraMy1ij0kz02SxpnIgKKh91_j2bgbfOk4jkFsl2VYL0BUXXswVqDzaJ98iHiIle7Wtq8JYAxpTMGhtbEsvcxiQIs6tcGVRelPI3PRlY", "source_title": "Lee Myung-bak’s Green Growth (Korea Herald)", "http_status": 200, "ok": true, "label": "PARTIALLY_SUPPORTED", "score": 0.6, "reasoning": "제공된 웹 페이지는 이명박 정부의 녹색성장 정책과 재생에너지 생산과의 연관성을 언급하지만, 원자력 에너지 투자에 대한 내용은 없습니다. 또한, 한화엔지니어링, 두산에너빌리티와 같은 특정 기업들이 혜택을 받았다는 내용이나 녹색성장연구소(GGGI)의 설립에 대한 언급도 없습니다.", "evidence_spans": ["The project was first announced as part of the “Green New Deal” policy, launched by President Lee Myung-bak in January 2009.", "the central government considered the project in the frame of green growth, a key growth initiative for Korea.", "the Ministry of Knowledge and Economy drove a project to link the restoration to renewable energy production."], "error_type": "NONE"}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQG3Ec0leADZ3d7GlN0yKQVfrDhKhI_q1IW7_BTEVCezKP-KsScMdJjWU9syFo0Vjk6_MNx1RmSlRJmAMNTaVbfmMKPT_qFwqveb2nRQGIVwqPZsRYkqD61fkjqe5V-UAhjcN_ZTYvqtzPOFMqhpZ5T0XL5AkbmV6WMfDIiDJwH0WR8I0p6HMoa0bqFYWlnaE7bLpWw60CeNdkblMLIPl5NvyZu-Lbfs2_1FKCQ=", "source_title": "Green Growth and Nuclear Energy (Stanford)", "http_status": 200, "ok": true, "label": "PARTIALLY_SUPPORTED", "score": 0.6, "reasoning": "이명박 정부의 녹색성장 정책 도입과 녹색성장연구소(GGGI) 설립은 원문에 명시되어 있어 지지됩니다. 또한, 한국이 G20 의장국으로서 녹색 금융 및 기술을 홍보할 것이라는 내용에서 국제적 협력 강화도 유추할 수 있습니다. 그러나 재생에너지 및 원자력 에너지 분야에 대한 구체적인 투자 내용이나 한화엔지니어링, 두산에너빌리티와 같은 특정 기업들이 혜택을 받았다는 내용은 원문에 언급되어 있지 않습니다.", "evidence_spans": ["이명박 대통령이 2008년 \"녹색성장\" 정책을 도입한 이래", "이명박 행정부는 내년에 저탄소 경제를 유도하는 촉매 역할을 할 것으로 예상되는 글로벌 녹색성장연구소(GGGI)를 출범시킬 야심찬 계획을 밝혔다.", "2010년 G20 의장국으로서 한국은 녹색 금융과 녹색 기술을 적극적으로 홍보할 것으로 예상된다."], "error_type": "NONE"}], "attribution_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGHg7pRnxTKj4nhSUBQkSW397WQyYnuJr9IRraMy1ij0kz02SxpnIgKKh91_j2bgbfOk4jkFsl2VYL0BUXXswVqDzaJ98iHiIle7Wtq8JYAxpTMGhtbEsvcxiQIs6tcGVRelPI3PRlY", "source_title": "Lee Myung-bak’s Green Growth (Korea Herald)", "http_status": 200, "ok": true, "label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "기사는 이명박 대통령이 2009년 시작한 \"그린 뉴딜\" 정책의 일환으로 4대강 사업을 소개하며, 이 사업이 한국의 핵심 성장 동력인 \"녹색 성장\"의 틀 안에서 고려되었다고 명시하고 있습니다. 따라서 이명박 대통령과 저탄소 녹색성장 정책 모두 기사의 핵심 주제와 밀접하게 관련되어 있습니다.", "evidence_spans": ["The project was first announced as part of the “Green New Deal” policy, launched by President Lee Myung-bak in January 2009.", "The central government considered the project in the frame of green growth, a key growth initiative for Korea."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQG3Ec0leADZ3d7GlN0yKQVfrDhKhI_q1IW7_BTEVCezKP-KsScMdJjWU9syFo0Vjk6_MNx1RmSlRJmAMNTaVbfmMKPT_qFwqveb2nRQGIVwqPZsRYkqD61fkjqe5V-UAhjcN_ZTYvqtzPOFMqhpZ5T0XL5AkbmV6WMfDIiDJwH0WR8I0p6HMoa0bqFYWlnaE7bLpWw60CeNdkblMLIPl5NvyZu-Lbfs2_1FKCQ=", "source_title": "Green Growth and Nuclear Energy (Stanford)", "http_status": 200, "ok": true, "label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "이 기사는 이명박 대통령이 2008년에 도입한 \"녹색성장 정책\"에 대해 명확하게 다루고 있으며, 이명박 정부의 정책 추진과 관련된 구체적인 내용들을 설명하고 있습니다.", "evidence_spans": ["Since President Lee Myung-bak introduced the \"Green Growth\" policy in 2008", "The Presidential Committee on Green Growth was created as a control tower of the policy developments", "The Lee administration has revealed its ambitious plans to launch Global Green Growth Institute (GGGI) next year, which is presumed to play a catalyst role in inducing a low carbon economy."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}]}], "gold_eval": {"similarity_score": 0.7, "reasoning": "두 보고서는 이재명 의원의 기본소득 및 일부 인프라 정책에 대한 분석에서 유사점을 보였습니다. 골드 보고서는 부동산 시장 안정화 정책과 대규모 국책 사업의 경제적 파급 효과를 심층적으로 다룬 반면, 모델 보고서는 소상공인 및 지역 특화 산업 지원 정책에 대한 독자적인 관점을 제시했습니다. 전반적으로 골드 보고서가 주요 거시 경제 정책의 시장 영향 분석에서 더 깊이 있는 설명을 제공했습니다.", "model_unique_points": ["소상공인 및 중소기업 지원 정책이 지역 경제 활성화에 미치는 영향", "지역 특화 산업 육성 방안과 관련 중소 제조 기업의 성장 가능성"], "gold_unique_points": ["부동산 시장 안정화 정책이 건설 및 금융 산업에 미치는 구체적인 영향 분석", "대규모 국책 사업 추진에 따른 특정 대기업 및 관련 하청 기업의 수혜 전망"]}}} +{"query": "홍준표", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "Hong Joon-pyo", "policy": "경제 규제 완화 및 기업 친화적 정책", "industry_or_sector": "제조업 및 기술 산업", "companies": ["Samsung Electronics", "Hyundai Motor Group"], "impact_description": "홍준표 의원의 경제 규제 완화 정책은 삼성전자와 현대자동차그룹과 같은 대기업에 유리한 환경을 조성하여 투자 확대와 시장 경쟁력 강화에 기여했습니다.", "impact_results": [{"url": "https://example.com/hong-economy-policy", "source_title": "홍준표의 경제 정책과 기업 관계 분석", "http_status": 404, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 원문은 \"Example Domain\"이라는 일반적인 예시 도메인 페이지로, 홍준표 의원의 경제 정책이나 삼성전자, 현대자동차그룹에 대한 어떠한 정보도 포함하고 있지 않습니다. 따라서 영향 설명을 평가할 충분한 정보가 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT"}], "attribution_results": [{"url": "https://example.com/hong-economy-policy", "source_title": "홍준표의 경제 정책과 기업 관계 분석", "http_status": 404, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 기사 내용이 너무 짧고 일반적인 예시 도메인 텍스트이므로 홍준표 정치인과 경제 규제 완화 정책에 대한 관련성을 판단하기에 정보가 부족합니다.", "evidence_spans": [], "error_type": "TOO_SHORT", "politician_mentioned": false, "policy_topic_mentioned": false}]}, {"chain_index": 1, "politician": "Hong Joon-pyo", "policy": "건설 산업 지원 및 인프라 투자 확대", "industry_or_sector": "건설 및 철강 산업", "companies": ["POSCO", "GS건설"], "impact_description": "홍준표 의원의 건설 산업 지원 정책은 POSCO와 GS건설과 같은 기업의 인프라 프로젝트 참여를 촉진하여 산업 성장을 이끌었습니다.", "impact_results": [{"url": "https://example.com/hong-construction-policy", "source_title": "홍준표의 건설 산업 정책 영향 평가", "http_status": 404, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 웹 페이지는 일반적인 예시 도메인 페이지로, 홍준표 의원의 건설 산업 정책이나 POSCO, GS건설과 같은 기업에 대한 어떠한 정보도 포함하고 있지 않아 영향 설명을 평가할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT"}], "attribution_results": [{"url": "https://example.com/hong-construction-policy", "source_title": "홍준표의 건설 산업 정책 영향 평가", "http_status": 404, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 웹 페이지 내용은 'Example Domain'이라는 일반적인 예시 도메인 텍스트로, 실제 기사 내용이 아니므로 홍준표 의원과 건설 산업 지원 정책에 대한 관련성을 판단하기에 정보가 부족합니다.", "evidence_spans": [], "error_type": "OTHER", "politician_mentioned": false, "policy_topic_mentioned": false}]}], "gold_eval": {"similarity_score": 0.7, "reasoning": "두 보고서는 이재명 의원의 기본소득 및 일부 인프라 정책에 대한 분석에서 유사점을 보였습니다. 골드 보고서는 부동산 시장 안정화 정책과 대규모 국책 사업의 경제적 파급 효과를 심층적으로 다룬 반면, 모델 보고서는 소상공인 및 지역 특화 산업 지원 정책에 대한 독자적인 관점을 제시했습니다. 전반적으로 골드 보고서가 주요 거시 경제 정책의 시장 영향 분석에서 더 깊이 있는 설명을 제공했습니다.", "model_unique_points": ["소상공인 및 중소기업 지원 정책이 지역 경제 활성화에 미치는 영향", "지역 특화 산업 육성 방안과 관련 중소 제조 기업의 성장 가능성"], "gold_unique_points": ["부동산 시장 안정화 정책이 건설 및 금융 산업에 미치는 구체적인 영향 분석", "대규모 국책 사업 추진에 따른 특정 대기업 및 관련 하청 기업의 수혜 전망"]}}} +{"query": "안철수", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "안철수", "policy": "AI, 반도체, 미래 모빌리티 등 5대 전략 산업 육성 및 규제 완화", "industry_or_sector": "과학기술·반도체·IT", "companies": ["AhnLab", "Samsung", "SK하이닉스"], "impact_description": "안철수의 과학기술 정책(규제 완화)은 AhnLab의 사이버보안 사업과 반도체·IT 업계(삼성, SK하이닉스 등)에 긍정적 영향을 미쳤으며, AhnLab 임원의 정치후원금 기부는 기업-정치인 관계 상징성을 부각시켰다.", "impact_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEweT1o9Q8N5aWCKl9ONPuSr80NuSX4LSMSeR9AsOE_7rsirafkhlZVf17iP9eHENzDd9ga3ZGb57hSDZyOgnYN-sbKCwiLCuAdReO47bGqMp3vIeebN9dOYVZQvCa3qYLG5CfN3Cko2OI=", "source_title": "안철수 AhnLab 이해관계 정치자금 기업 후원", "http_status": 200, "ok": true, "label": "UNSUPPORTED", "score": 0.2, "reasoning": "제공된 원문은 안철수의 생애와 정치 경력에 대한 상세한 전기이며, 그의 과학기술 정책(규제 완화)이 AhnLab의 사이버보안 사업이나 반도체·IT 업계(삼성, SK하이닉스 등)에 긍정적인 영향을 미쳤다는 구체적인 내용이나, AhnLab 임원의 정치후원금 기부 및 그 상징성에 대한 어떠한 정보도 포함하고 있지 않습니다. 원문은 안철수가 과학기술 분야에 관심이 많고 관련 정책을 강조했다는 내용은 있으나, 실제 정책의 영향이나 규제 완화에 대한 언급은 없습니다.", "evidence_spans": [], "error_type": "NONE"}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHq5b7U8oRhaGTYVnU95IRDBGVx8ImrDWNWGZFPLT7raFtQUhai_4h5WpNN0w5m6bo2hvjtrbM850L6TibiOYyjhPy2XjipJa5KsOoE-brA3H9eVuOXGwod8XOybOXvncwyqi7_AMKxX6XY1rXpNQry3Bi1askj60ik5uU=", "source_title": "안철수 지분 보유 현황", "http_status": 200, "ok": true, "label": "UNSUPPORTED", "score": 0.1, "reasoning": "제공된 원문은 안철수의 정치 경력, 안랩과의 관계, 그리고 일부 정책 공약에 대해 상세히 설명하고 있습니다. 그러나 원문에는 안철수의 과학기술 정책(규제 완화)이 안랩의 사이버보안 사업이나 반도체·IT 업계(삼성, SK하이닉스 등)에 긍정적인 영향을 미쳤다는 내용이 전혀 없습니다. 또한, 안랩 임원의 정치후원금 기부와 그것이 기업-정치인 관계의 상징성을 부각시켰다는 내용도 찾아볼 수 없습니다.", "evidence_spans": [], "error_type": "NONE"}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGxAm6Q5dmlbxiuugfscpdXW7CErWYJILwoiU1_Sy92L6uLbe3kOyK2nmFUD-EKIS1cMI5R8t_UNs2yJIIR5OmDjLLYaMLcqmcoS5L22Be036M87bI22uYoreJvrKQpJiR0cyQYWjxVkKEnSPRiKo85y5wGq2M=", "source_title": "안철수의 과학기술 정책(규제 완화)이 반도체·IT 업계와 긍정적 반응 유도", "http_status": 200, "ok": true, "label": "UNSUPPORTED", "score": 0.1, "reasoning": "제공된 원문은 안철수 전 의원의 소속 정당 변천사와 정치 행보에 대한 내용으로, 과학기술 정책, 규제 완화, AhnLab의 사이버보안 사업, 반도체·IT 업계(삼성, SK하이닉스 등)에 미친 긍정적 영향, 그리고 AhnLab 임원의 정치후원금 기부에 대한 어떠한 정보도 포함하고 있지 않습니다. 따라서 제시된 영향 설명은 원문에서 전혀 지지되지 않습니다.", "evidence_spans": [], "error_type": "NONE"}], "attribution_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEweT1o9Q8N5aWCKl9ONPuSr80NuSX4LSMSeR9AsOE_7rsirafkhlZVf17iP9eHENzDd9ga3ZGb57hSDZyOgnYN-sbKCwiLCuAdReO47bGqMp3vIeebN9dOYVZQvCa3qYLG5CfN3Cko2OI=", "source_title": "안철수 AhnLab 이해관계 정치자금 기업 후원", "http_status": 200, "ok": true, "label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "이 문서는 안철수 의원의 상세한 전기이며, 그의 과학기술, 특히 AI 및 컴퓨터공학 분야에 대한 깊은 관심과 한국을 과학강국으로 만들겠다는 정책적 의지를 명확히 언급하고 있습니다. 이는 주어진 정책인 AI, 반도체 등 5대 전략 산업 육성 및 규제 완화와 매우 밀접하게 관련됩니다.", "evidence_spans": ["이과 출신 정치인답게 기초과학 및 공학 기술, 특히 IT와 AI같은 컴퓨터공학 분야에 관심이 유별나다. 그래서 공약으로 과학분야 육성 관련 정책들을 상당히 비중 있게 내세우는 편이며, 선거 토론에서도 과학 분야에서는 강세를 보인다.", "안철수는 정치 입문 초부터 현재까지 정치 성향은 변했을지언정 \"과학 인재를 육성하여 한국을 과학강국으로 만들어야 한다\"는 입장은 변하지 않고 꾸준히 견지해 왔을 정도로 과학을 좋아한다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHq5b7U8oRhaGTYVnU95IRDBGVx8ImrDWNWGZFPLT7raFtQUhai_4h5WpNN0w5m6bo2hvjtrbM850L6TibiOYyjhPy2XjipJa5KsOoE-brA3H9eVuOXGwod8XOybOXvncwyqi7_AMKxX6XY1rXpNQry3Bi1askj60ik5uU=", "source_title": "안철수 지분 보유 현황", "http_status": 200, "ok": true, "label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "안철수 정치인의 인물 정보 기사로, 그의 서울시장 공약에서 인공지능, 사물인터넷, 빅데이터, 블록체인 기술 활용 및 창업 규제 완화 등 주어진 정책의 핵심 내용과 직접적으로 관련된 내용이 언급됩니다. 또한 4차 산업혁명에 대한 그의 발언도 정책과 연관성이 높습니다.", "evidence_spans": ["인공지능과 사물인터넷, 빅데이터 기술을 적용해 서울에서 사고와 재해, 범죄 예방 확률을 높이며 코딩교육과 토론교육을 방과후 학교 프로그램에 도입하는 방안 등을 서울시장 공약으로 내놨다.", "'일자리 넘치는 창업도시, 서울'을 목표로 창업을 막는 제도와 규제, 금융장벽을 낮추고 '디지털 행정혁신, 서울'을 위해 블록체인 기술을 기반한 행정서비스를 마련한다는 방안도 제시했다.", "4차 산업혁명 때문에 소상공인들이 처한 상황이 더 열악해질 가능성이 높아 국가 차원의 대비가 어느 때보다도 절실한데 정부가 경제문제를 제대로 해결하지 못하고 있다"], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGxAm6Q5dmlbxiuugfscpdXW7CErWYJILwoiU1_Sy92L6uLbe3kOyK2nmFUD-EKIS1cMI5R8t_UNs2yJIIR5OmDjLLYaMLcqmcoS5L22Be036M87bI22uYoreJvrKQpJiR0cyQYWjxVkKEnSPRiKo85y5wGq2M=", "source_title": "안철수의 과학기술 정책(규제 완화)이 반도체·IT 업계와 긍정적 반응 유도", "http_status": 200, "ok": true, "label": "WEAKLY_RELATED", "score": 0.45, "reasoning": "이 기사는 안철수 의원의 소속 정당 변천사와 정치적 행보에 대해 상세히 다루고 있습니다. 그러나 AI, 반도체, 미래 모빌리티 등 5대 전략 산업 육성 및 규제 완화와 관련된 정책 내용은 전혀 언급하고 있지 않습니다.", "evidence_spans": ["[어땠을까] 안철수의 소속정당 변천사", "바른미래당 안철수 전 의원의 소속정당 변천사를 짚어봤다.", "안 전 의원의 동향이 시선을 모으는 것은 진보에서부터 조금씩 우측으로 포지션을 옮겨온 그의 이력 때문이다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": false}]}], "gold_eval": {"similarity_score": 0.7, "reasoning": "두 보고서는 이재명 의원의 기본소득 및 일부 인프라 정책에 대한 분석에서 유사점을 보였습니다. 골드 보고서는 부동산 시장 안정화 정책과 대규모 국책 사업의 경제적 파급 효과를 심층적으로 다룬 반면, 모델 보고서는 소상공인 및 지역 특화 산업 지원 정책에 대한 독자적인 관점을 제시했습니다. 전반적으로 골드 보고서가 주요 거시 경제 정책의 시장 영향 분석에서 더 깊이 있는 설명을 제공했습니다.", "model_unique_points": ["소상공인 및 중소기업 지원 정책이 지역 경제 활성화에 미치는 영향", "지역 특화 산업 육성 방안과 관련 중소 제조 기업의 성장 가능성"], "gold_unique_points": ["부동산 시장 안정화 정책이 건설 및 금융 산업에 미치는 구체적인 영향 분석", "대규모 국책 사업 추진에 따른 특정 대기업 및 관련 하청 기업의 수혜 전망"]}}} +{"query": "이준석", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "이준석", "policy": "반도체 특별법 지원 및 52시간 근무제 유연화", "industry_or_sector": "반도체 산업", "companies": ["SK하이닉스"], "impact_description": "이준석은 SK하이닉스 이천공장을 방문해 반도체 산업 지원을 위한 정책 협력을 논의했으며, 52시간 근무제 유연화 및 반도체 특별법 지원을 통해 글로벌 경쟁력 강화를 추진했습니다.", "impact_results": [{"url": "https://www.polinews.co.kr/news/articleView.html?idxno=714590", "source_title": "[2025 폴리뉴스·상생과통일포럼 제25차 산업포럼] 정치인 축사 모음···", "http_status": 200, "ok": true, "label": "UNSUPPORTED", "score": 0.2, "reasoning": "원문은 이준석 개혁신당 당대표의 산업 포럼 축사 내용을 담고 있습니다. 축사에서 이준석 대표는 반도체 산업의 중요성과 정부의 규제 혁신 및 전략적 지원의 필요성을 언급했지만, SK하이닉스 이천공장 방문, 52시간 근무제 유연화 논의, 반도체 특별법 지원 추진 등 영향 설명에 명시된 구체적인 활동에 대한 내용은 전혀 포함되어 있지 않습니다.", "evidence_spans": ["안녕하십니까 개혁신당 당 대표, 경기 화성시을 국회의원 이준석입니다. 먼저 '한국경제의 승부수, 자동차·반도체 + 신성장 산업'을 주제로 한 제25차 산업포럼의 개최를 진심으로 축하드립니다.", "특히 자동차와 반도체 산업은 대한민국 산업 경쟁력의 핵심 축으로, 미래 산업 생태계의 기반을 이루고 있습니다.", "산업의 대전환기를 맞은 지금, 정부는 과감한 규제 혁신과 전략적 지원을 통해 기업의 도전을 뒷받침하고, 민간은 기술과 창의로 세계 시장을 선도해야 합니다."], "error_type": "NONE"}], "attribution_results": [{"url": "https://www.polinews.co.kr/news/articleView.html?idxno=714590", "source_title": "[2025 폴리뉴스·상생과통일포럼 제25차 산업포럼] 정치인 축사 모음···", "http_status": 200, "ok": true, "label": "WEAKLY_RELATED", "score": 0.7, "reasoning": "기사는 이준석 개혁신당 대표가 '한국경제의 승부수, 자동차·반도체+신성장 산업' 포럼에 축사를 보낸 내용을 담고 있습니다. 이준석 대표는 축사에서 반도체 산업의 중요성과 정부의 규제 혁신 및 전략적 지원의 필요성을 언급하여 '반도체 특별법 지원' 정책과 관련성이 높습니다. 그러나 '52시간 근무제 유연화'에 대한 내용은 전혀 언급되지 않았습니다.", "evidence_spans": ["개혁신당 이준석 대표와 천하람 원내대표, 진보당 윤종오 원내대표도 축하 메시지를 전했다.", "안녕하십니까 개혁신당 당 대표, 경기 화성시을 국회의원 이준석입니다. 먼저 '한국경제의 승부수, 자동차·반도체 + 신성장 산업'을 주제로 한 제25차 산업포럼의 개최를 진심으로 축하드립니다.", "특히 자동차와 반도체 산업은 대한민국 산업 경쟁력의 핵심 축으로, 미래 산업 생태계의 기반을 이루고 있습니다. ... 정부는 과감한 규제 혁신과 전략적 지원을 통해 기업의 도전을 뒷받침하고, 민간은 기술과 창의로 세계 시장을 선도해야 합니다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}]}, {"chain_index": 1, "politician": "이준석", "policy": "게임 산업 규제 완화", "industry_or_sector": "게임 산업", "companies": ["넥슨", "NC소프트", "카카오게임즈"], "impact_description": "이준석은 게임을 '제2의 반도체 산업'으로 규정하며 블록체인 게임 규제 정비, 확률형 아이템 역차별 해소, 웹보드 결제 한도 완화 등을 통해 게임 산업 육성을 추진했습니다.", "impact_results": [{"url": "https://www.msn.com/ko-kr/news/other/%EC%9D%B4%EC%A4%80%EC%84%9D-%EA%B2%8C%EC%9E%84-%EC%A0%9C2%EC%9D%98-%EB%B0%98%EB%8F%84%EC%B2%B4-%EC%82%B0%EC%97%85-%EA%B7%9C%EC%A0%9C-%EC%99%80%ED%99%94%EB%A1%9C-%EC%84%B8%EA%B3%84-%EC%8B%9C%EC%9E%A5-10-%EC%A0%90%EC%9C%A0/ar-AA1FtwCQ", "source_title": "이준석 “게임, 제2의 반도체 산업... 규제 완화로 세계 시장 10% 점유”", "http_status": null, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 source_text 내용이 비어 있어 impact_description을 평가할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT"}], "attribution_results": [{"url": "https://www.msn.com/ko-kr/news/other/%EC%9D%B4%EC%A4%80%EC%84%9D-%EA%B2%8C%EC%9E%84-%EC%A0%9C2%EC%9D%98-%EB%B0%98%EB%8F%84%EC%B2%B4-%EC%82%B0%EC%97%85-%EA%B7%9C%EC%A0%9C-%EC%99%80%ED%99%94%EB%A1%9C-%EC%84%B8%EA%B3%84-%EC%8B%9C%EC%9E%A5-10-%EC%A0%90%EC%9C%A0/ar-AA1FtwCQ", "source_title": "이준석 “게임, 제2의 반도체 산업... 규제 완화로 세계 시장 10% 점유”", "http_status": null, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 원문 내용이 비어 있어 정치인과 정책 간의 관련성을 판단할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT", "politician_mentioned": false, "policy_topic_mentioned": false}]}, {"chain_index": 2, "politician": "이준석", "policy": "규제기준국가제 도입", "industry_or_sector": "AI/데이터 산업", "companies": ["네이버 클라우드"], "impact_description": "이준석은 '규제기준국가제' 도입을 통해 AI·반도체 분야의 해외 규제 수준 벤치마킹을 추진하며 네이버 클라우드 등 AI 인프라 기업과의 협력 가능성을 제시했습니다.", "impact_results": [{"url": "https://www.polinews.co.kr/news/articleView.html?idxno=714590", "source_title": "[2025 폴리뉴스·상생과통일포럼 제25차 산업포럼] 정치인 축사 모음···", "http_status": 200, "ok": true, "label": "UNSUPPORTED", "score": 0.2, "reasoning": "이준석 대표의 축사에는 AI 산업의 중요성, 규제 혁신, 그리고 협력의 필요성에 대한 일반적인 언급은 있으나, '규제기준국가제'의 도입 추진이나 AI·반도체 분야의 해외 규제 수준 벤치마킹, 그리고 네이버 클라우드와 같은 특정 AI 인프라 기업과의 협력 가능성 제시에 대한 구체적인 내용은 명시되어 있지 않습니다.", "evidence_spans": ["AI 혁명으로 상징되는 기술 패권 경쟁의 시대에 기존 주력 산업의 한계를 넘어설 새로운 성장 동력을 확보하는 일은 우리 경제가 직면한 가장 중요한 과제 중 하나입니다.", "정부는 과감한 규제 혁신과 전략적 지원을 통해 기업의 도전을 뒷받침하고, 민간은 기술과 창의로 세계 시장을 선도해야 합니다.", "그 협력과 상생의 길 위에서 대한민국의 미래가 만들어질 것입니다."], "error_type": "NONE"}], "attribution_results": [{"url": "https://www.polinews.co.kr/news/articleView.html?idxno=714590", "source_title": "[2025 폴리뉴스·상생과통일포럼 제25차 산업포럼] 정치인 축사 모음···", "http_status": 200, "ok": true, "label": "HIGHLY_RELATED", "score": 0.85, "reasoning": "이준석 대표는 산업 포럼 축사에서 '과감한 규제 혁신'을 통해 기업의 도전을 뒷받침해야 한다고 강조했으며, 이는 '규제기준국가제 도입'이 추구하는 신성장 산업 육성을 위한 규제 개선의 핵심 주제와 직접적으로 연결됩니다.", "evidence_spans": ["개혁신당 이준석 대표와 천하람 원내대표, 진보당 윤종오 원내대표도 축하 메시지를 전했다.", "정부는 과감한 규제 혁신과 전략적 지원을 통해 기업의 도전을 뒷받침하고, 민간은 기술과 창의로 세계 시장을 선도해야 합니다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}]}], "gold_eval": {"similarity_score": 0.7, "reasoning": "두 보고서는 이재명 의원의 기본소득 및 일부 인프라 정책에 대한 분석에서 유사점을 보였습니다. 골드 보고서는 부동산 시장 안정화 정책과 대규모 국책 사업의 경제적 파급 효과를 심층적으로 다룬 반면, 모델 보고서는 소상공인 및 지역 특화 산업 지원 정책에 대한 독자적인 관점을 제시했습니다. 전반적으로 골드 보고서가 주요 거시 경제 정책의 시장 영향 분석에서 더 깊이 있는 설명을 제공했습니다.", "model_unique_points": ["소상공인 및 중소기업 지원 정책이 지역 경제 활성화에 미치는 영향", "지역 특화 산업 육성 방안과 관련 중소 제조 기업의 성장 가능성"], "gold_unique_points": ["부동산 시장 안정화 정책이 건설 및 금융 산업에 미치는 구체적인 영향 분석", "대규모 국책 사업 추진에 따른 특정 대기업 및 관련 하청 기업의 수혜 전망"]}}} +{"query": "심상정", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "심상정", "policy": "주 4일 근무제, 산재보험 확대, 재벌 개혁, 그린노믹스", "industry_or_sector": "제조업, 에너지, 재벌, 플랫폼, 중소기업, 암호화폐", "companies": ["포스코", "현대", "삼성", "SK", "이마트", "네이버", "카카오", "업비트", "위메이드"], "impact_description": "심상정 의원의 주 4일 근무제, 산재보험 확대, 재벌 개혁, 그린노믹스 정책은 제조업 노동 환경 개선, 재생에너지 산업 지원, 대기업 규제 강화, 플랫폼 산업 규제 등에 영향을 미쳤다. 특히 포스코 하청 노동자 문제 해결, 삼성·현대 등 재벌 기업의 지배 구조 개혁 압력, SK·이마트 등 중소기업 지원 정책 수혜, 네이버·카카오 등 플랫폼 기업 규제 강화, 업비트·위메이드 등 암호화폐 관련 정책 수혜주 형성에 간접적 영향을 주었다.", "impact_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGFGaUODF8w2qRkV1kF4a6DVWx9hO81nHVf9wmGWrJTKnYxIYNXH02w91a_fk3XOUkCHF-NepLw85bz-ZiSYv5NKheMD6aDwzXBKe7xm4hTqa8HOyscO5Pw3fShWqtb0SOYW2zKlwREwM2mAuanHpQEX6VFbw==", "source_title": "Wikipedia (Sim Sang-jung)", "http_status": 200, "ok": true, "label": "PARTIALLY_SUPPORTED", "score": 0.65, "reasoning": "제공된 웹 페이지는 심상정 의원의 재벌 중심 경제 구조 비판과 삼성의 순환출자 문제 지적, 그리고 금산법 개정 활동을 통해 재벌 개혁 및 대기업 규제 강화에 영향을 미쳤다는 내용을 부분적으로 지지합니다. 또한, 금속노동조합 사무처장으로서 노동조건 개선 및 임금삭감 없는 주 5일 근무제 합의를 이끌어낸 경력은 제조업 노동 환경 개선에 영향을 미쳤다는 주장을 뒷받침합니다. 그러나 주 4일 근무제, 산재보험 확대, 그린노믹스, 재생에너지 산업 지원, 플랫폼 산업 규제에 대한 언급은 없으며, 포스코, 현대(삼성 외), SK, 이마트, 네이버, 카카오, 업비트, 위메이드 등 특정 기업에 대한 구체적인 영향은 언급되지 않았습니다.", "evidence_spans": ["제17대 국회 활동기간 동안 심상정은 대한민국의 재벌 중심 경제 구조를 비판하였다. 우선 심상정은 삼성을 비롯한 순환출자의 문제점을 지적하였다.", "금산법 개정 활동", "2003년 대한민국 최초로 산별중앙교섭을 통해 노동조건 개선 및 임금삭감없는 주 5일 근무제를 합의하였다."], "error_type": "NONE"}, {"url": "https://n.news.naver.com/mnews/article/024/0000073207?sid=101", "source_title": "대선 테마주 및 정책 수혜주 분석", "http_status": 200, "ok": true, "label": "UNSUPPORTED", "score": 0.2, "reasoning": "제시된 원문은 대선 후보들의 정책 공약과 관련된 수혜주를 분석하고 있습니다. 심상정 후보가 TV 토론에 참여했다는 언급은 있지만, 심상정 후보의 주 4일 근무제, 산재보험 확대, 재벌 개혁, 그린노믹스 정책이 제조업 노동 환경 개선, 재생에너지 산업 지원, 대기업 규제 강화, 플랫폼 산업 규제 등에 영향을 미쳤다는 내용은 전혀 언급되어 있지 않습니다. 또한, 포스코 하청 노동자 문제 해결, 삼성·현대 재벌 기업 지배 구조 개혁 압력, SK·이마트 중소기업 지원 정책 수혜, 네이버·카카오 플랫폼 기업 규제 강화 등 구체적인 기업별 영향에 대한 설명도 원문에서 찾을 수 없습니다. 원문에서는 이재명, 윤석열 두 유력 후보의 공통 공약인 가상자산(암호화폐) 관련주(카카오, 네이버, 위메이드)와 물적분할 관련 모회사 수혜주(SK, 이마트, 포스코)에 대해 언급하고 있으나, 이는 심상정 후보의 정책과는 무관하며, 영향의 내용 또한 제시된 영향 설명과 일치하지 않는 부분이 많습니다. 따라서 심상정 의원의 정책이 해당 기업 및 산업에 영향을 미쳤다는 핵심 주장은 원문에서 지지되지 않습니다.", "evidence_spans": ["국내 시장점유율 1위의 '업비트' 지분을 보유하고 있는 카카오와 해외가상자산 거래소 지분을 가지고 있는 네이버(NAVER), NFT를 발행하는 위메이드와 컴투스홀딩스를 관련 종목으로 볼 수 있다", "관련 종목으로 SK, SK스퀘어, SK이노베이션, 이마트, 만도, KT, 포스코, 두산, 한화솔루션 등을 꼽았다."], "error_type": "NONE"}], "attribution_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGFGaUODF8w2qRkV1kF4a6DVWx9hO81nHVf9wmGWrJTKnYxIYNXH02w91a_fk3XOUkCHF-NepLw85bz-ZiSYv5NKheMD6aDwzXBKe7xm4hTqa8HOyscO5Pw3fShWqtb0SOYW2zKlwREwM2mAuanHpQEX6VFbw==", "source_title": "Wikipedia (Sim Sang-jung)", "http_status": 200, "ok": true, "label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "이 문서는 심상정 정치인의 위키백과 문서로, 심상정의 경력과 정치 활동을 상세히 다루고 있습니다. 특히, 심상정이 재벌 중심 경제 구조를 비판하고 삼성의 순환출자 문제점을 지적하며 금산법 개정 활동을 펼친 내용이 구체적으로 언급되어 있어, 주어진 정책 중 \"재벌 개혁\"과 매우 밀접하게 관련됩니다.", "evidence_spans": ["제17대 국회 활동기간 동안 심상정은 대한민국의 재벌 중심 경제 구조를 비판하였다.", "심상정은 민주노동당의 기관지 《이론과 실천》에 〈삼성 공화국의 소유 지배구조와 정경유착〉이라는 논문을 기고하여 삼성의 순환출자에 의한 지배구조는 대한민국의 기업시장을 왜곡하고 건전한 경쟁을 가로막고 있다고 지적하면서 순환출자의 금지는 대한민국 헌법 제119조 2항의 경제 민주화 조항에 부합하는 것이라 주장였다.", "2005년 심상정은 금융산업의 구조개선에 관한 법률(금산법)의 개정을 놓고 삼성 등 재벌을 옹호하는 보수정치권과 정면으로 대결하게 되었다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}, {"url": "https://n.news.naver.com/mnews/article/024/0000073207?sid=101", "source_title": "대선 테마주 및 정책 수혜주 분석", "http_status": 200, "ok": true, "label": "WEAKLY_RELATED", "score": 0.5, "reasoning": "기사는 대선 테마주 및 정책 수혜주를 분석하며 심상정 후보를 대선 후보 중 한 명으로 언급하지만, 심상정 후보의 구체적인 정책(주 4일 근무제, 산재보험 확대, 재벌 개혁, 그린노믹스)에 대해서는 전혀 다루지 않고, 주로 이재명, 윤석열 후보의 가상자산 및 물적분할 관련 공약에 초점을 맞추고 있습니다.", "evidence_spans": ["왼쪽부터 정의당 심상정 후보, 더불어민주당 이재명 후보, 국민의힘 윤석열 후보, 국민의당 안철수 후보.", "11일 이재명 더불어민주당, 윤석열 국민의힘, 안철수 국민의당, 심상정 정의당 대선 후보 등 4인이 모두 참여하는 TV토론이 지난 3일에 이어 두 번째로 열린다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": false}]}], "gold_eval": {"similarity_score": 0.75, "reasoning": "두 보고서는 이재명 의원의 기본소득 및 친환경 에너지 정책을 공통적으로 다루며 관련 산업과 기업을 유사하게 분석했습니다. 그러나 부동산 정책에서 Gold Report는 민간 시장 규제를, Model Report는 공공 주거 확대를 강조하여 접근 방식이 달랐습니다. Gold Report는 기본소득의 플랫폼 산업 영향과 신재생에너지의 이차전지 산업 연관성을 더 깊이 다루어 더 구체적이고 균형 잡힌 시장 파급 효과 설명을 제공했습니다. Model Report는 긍정적 측면에 집중하는 경향이 있었습니다.", "model_unique_points": ["청년 주거 안정화를 위한 공공임대주택 확대 정책과 공공 건설 부문의 영향 분석.", "친환경 에너지 전환 정책에서 RE100 지원을 통한 기업의 재생에너지 사용 확대 측면 강조."], "gold_unique_points": ["다주택자 규제 강화를 통한 민간 부동산 시장 안정화 정책과 그에 따른 민간 건설사 영향 분석.", "기본소득 정책이 플랫폼 산업 및 특정 온라인 유통 기업에 미치는 영향에 대한 심층 분석.", "신재생에너지 정책에서 이차전지 산업 및 관련 기업의 성장 가능성 강조."]}}} +{"query": "Joe Biden", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "Joe Biden", "policy": "CHIPS and Science Act", "industry_or_sector": "반도체 및 첨단 제조", "companies": ["Intel", "TSMC", "Samsung", "Micron"], "impact_description": "CHIPS and Science Act를 통해 반도체 생산 및 연구 개발에 대한 대규모 투자가 이루어졌으며, Intel, TSMC, Samsung, Micron과 같은 기업들이 미국 내 신규 또는 확장된 제조 시설을 발표했습니다. 이 정책은 반도체 공급망 강화와 기술 경쟁력 확보를 목표로 합니다.", "impact_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGiY_SMRlUEiUd67ljy9su31Mbzs9M6iUQpmLHbiW8Tw8CDGwdiBIShqXXCj2igzlAR5FkWID8xdS2DfIoZztkWZw9NhpWwg_DS9pBaHe-LdHWA-hXPkvMOQWk8aOPGeko2sjfcS3VjGQW1czs8X17IoVqhPNYvsCJuZVWqPruShmtShXYEdhi15QdUnuMlRqEnZ0NTW51FBNJ5G8r60OYR4Xre39p5ARi-L2saAHosphz_RilRAlQ5Ij07Xfodihvexao6DfrK6UW3jj4ytdbEeBiJQSKhI9jsSJKB_Z8vTe06uRC0AISXR1j1UXzj-hUE", "source_title": "economictimes.com", "http_status": null, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 source_text가 비어 있어 impact_description을 평가할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT"}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEp8Yj4KD5eUY2deNwDwSfCHX5WDQqMFIDw0WezyNoMHlTjOWEtrazHvdxPI9KjsoTzgYkUzzwvWuh9NglNxnByQwnD40joadtfOf7eWnoUDLgi0IN3Gfj3o4VdEHZa0W9yMeYk3cD6U_7mggGDoAHX9PuMIHx-p-RUCiEDcYi3ukiCljJAvhXPQc5izIiPWLAP5Q==", "source_title": "cfr.org", "http_status": 200, "ok": true, "label": "SUPPORTED", "score": 0.9, "reasoning": "CHIPS and Science Act를 통해 반도체 생산 및 연구 개발에 대규모 투자가 이루어졌으며, Intel, TSMC, Samsung, Micron과 같은 주요 기업들이 미국 내 신규 또는 확장된 제조 시설을 발표했다는 내용이 원문에 명확히 언급되어 있습니다. 또한, 이 정책의 목표가 반도체 공급망 강화와 기술 경쟁력 확보라는 점도 원문에서 확인할 수 있습니다.", "evidence_spans": ["The CHIPS and Science Act seeks to revitalize the U.S. semiconductor industry amid growing fears of a China-Taiwan conflict.", "The legislation directs hundreds of billions of dollars toward supercharging domestic production of advanced technologies such as semiconductors—also known as microchips or chips.", "More than $70 billion of that is aimed at the chips industry, including investments in high-technology manufacturing, scientific research and development (R&D), and workforce development.", "The largest announced investments are concentrated in a handful of states and are being implemented mostly by tech giants Intel, Micron, Samsung, and the U.S. subsidiary of TSMC.", "Arizona is a centerpiece of this effort, with the government allocating more than $15 billion [PDF] to Intel and TSMC to build five new semiconductor fabrication plants, commonly known as fabs, in the state.", "Micron is set to receive more than $6 billion for new fabs in Idaho and New York, in addition to the company’s previously planned $100 billion “megafab” near Syracuse.", "in Texas, Samsung is set to receive $6.4 billion for new fabs and R&D centers.", "The CHIPS Act is part of a larger government effort to create jobs, revitalize domestic supply chains, and increase the U.S. production of critical technologies.", "many experts see the CHIPS Act as a turning point in reducing supply chain vulnerabilities."], "error_type": "NONE"}], "attribution_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGiY_SMRlUEiUd67ljy9su31Mbzs9M6iUQpmLHbiW8Tw8CDGwdiBIShqXXCj2igzlAR5FkWID8xdS2DfIoZztkWZw9NhpWwg_DS9pBaHe-LdHWA-hXPkvMOQWk8aOPGeko2sjfcS3VjGQW1czs8X17IoVqhPNYvsCJuZVWqPruShmtShXYEdhi15QdUnuMlRqEnZ0NTW51FBNJ5G8r60OYR4Xre39p5ARi-L2saAHosphz_RilRAlQ5Ij07Xfodihvexao6DfrK6UW3jj4ytdbEeBiJQSKhI9jsSJKB_Z8vTe06uRC0AISXR1j1UXzj-hUE", "source_title": "economictimes.com", "http_status": null, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 원문 텍스트가 비어 있어 기사 내용을 평가할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT", "politician_mentioned": false, "policy_topic_mentioned": false}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEp8Yj4KD5eUY2deNwDwSfCHX5WDQqMFIDw0WezyNoMHlTjOWEtrazHvdxPI9KjsoTzgYkUzzwvWuh9NglNxnByQwnD40joadtfOf7eWnoUDLgi0IN3Gfj3o4VdEHZa0W9yMeYk3cD6U_7mggGDoAHX9PuMIHx-p-RUCiEDcYi3ukiCljJAvhXPQc5izIiPWLAP5Q==", "source_title": "cfr.org", "http_status": 200, "ok": true, "label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "이 기사는 CHIPS 및 과학법에 대해 자세히 설명하고 있으며, 조 바이든 대통령이 이 법안에 서명했으며 그의 산업 정책의 일환임을 명확히 언급하고 있습니다. 따라서 정치인과 정책 모두 기사의 핵심 주제입니다.", "evidence_spans": ["In 2022, President Joe Biden signed into law the Creating Helpful Incentives to Produce Semiconductors (CHIPS) and Science Act.", "As vice president, Kamala Harris has voiced her support for the CHIPS Act, which falls under Biden’s broader industrial policy push."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}]}, {"chain_index": 1, "politician": "Joe Biden", "policy": "Inflation Reduction Act", "industry_or_sector": "청정 에너지 및 전기차", "companies": ["Tesla", "Panasonic", "GM"], "impact_description": "인플레이션 감소법(IRA)은 전기차 및 배터리 생산에 대한 세제 혜택을 제공하여 Tesla, Panasonic, GM과 같은 기업들이 미국 내 생산 시설을 확장하도록 유도했습니다. 이 정책은 청정 에너지 전환과 국내 제조업 활성화를 목표로 합니다.", "impact_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEP7-IeP-Yp2s5u5-XwI7fTxqNH7lfInYfhhoc4TPfeeXX7c1-dToDfAmyknXn-MVKT3QzAYL6AQj_bsysd5hNN3UWcIOvDCYdbUpXfpXk4n58V8pNGVkKiEMeu56Ry3cdKht9kd4w8FGnWG8Va2uFlGr8r-hqn_P0kvFWmVkDQK_Nxrg5GCLa0knX4ZCNDgEpDeVXdcZjr8dvvBuYbEvjQmGxFTtn8RmE4boHsvTOHe2lxBYKOJBQjRCEnNTZ4J3g=", "source_title": "pv-magazine-usa.com", "http_status": 200, "ok": true, "label": "PARTIALLY_SUPPORTED", "score": 0.6, "reasoning": "제공된 기사는 인플레이션 감소법(IRA)이 청정 에너지 및 제조 프로젝트에 1조 달러 이상의 자금을 세금 공제, 대출 및 보조금 형태로 할당했으며, 900개 이상의 기업이 새로운 또는 확장된 청정 에너지 및 제조 프로젝트를 발표했다고 언급합니다. 이는 IRA의 정책 목표와 전반적인 산업 영향에 대한 설명은 뒷받침하지만, Tesla, Panasonic, GM과 같은 특정 기업들이 IRA로 인해 미국 내 생산 시설을 확장했다는 구체적인 내용은 언급하지 않습니다.", "evidence_spans": ["The Inflation Reduction Act and two other infrastructure laws allocated more than $1 trillion of funding to clean energy through tax credits, loans and grants", "More than 900 companies announced new or expanded clean energy and manufacturing projects by January 2025."], "error_type": "NONE"}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGYLlsnOiPL4Hug5_V7HFi1NAflv_Jio0LdkViLqsaeWEVUX30F9itOqPQOQnQE7hkwNOTyKsFpPpXFxifXKu8Z7x56DCRS87mVmHxKZs3IkPHHCFLwIqTZ87Xdo-VtLe6kGxkqf2sSt2K173rWaymdOW6qrPBzx9AecIk=", "source_title": "investingnews.com", "http_status": 200, "ok": true, "label": "UNSUPPORTED", "score": 0.1, "reasoning": "제공된 원문은 인플레이션 감소법(IRA)이나 전기차 및 배터리 생산에 대한 세제 혜택, 또는 Tesla, Panasonic, GM과 같은 기업의 미국 내 생산 시설 확장에 대해 전혀 언급하지 않습니다. 원문은 주로 반도체 및 커넥티드 차량 부문에 대한 미국의 규제 강화에 초점을 맞추고 있으며, 이는 영향 설명의 내용과 관련이 없습니다.", "evidence_spans": [], "error_type": "NONE"}], "attribution_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEP7-IeP-Yp2s5u5-XwI7fTxqNH7lfInYfhhoc4TPfeeXX7c1-dToDfAmyknXn-MVKT3QzAYL6AQj_bsysd5hNN3UWcIOvDCYdbUpXfpXk4n58V8pNGVkKiEMeu56Ry3cdKht9kd4w8FGnWG8Va2uFlGr8r-hqn_P0kvFWmVkDQK_Nxrg5GCLa0knX4ZCNDgEpDeVXdcZjr8dvvBuYbEvjQmGxFTtn8RmE4boHsvTOHe2lxBYKOJBQjRCEnNTZ4J3g=", "source_title": "pv-magazine-usa.com", "http_status": 200, "ok": true, "label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "기사는 조 바이든 행정부의 청정 에너지 정책 이행 속도와 인플레이션 감축법의 역할을 직접적으로 다루고 있습니다.", "evidence_spans": ["Three former Department of Energy staff members have published a study saying the Biden Administration’s clean energy “rollout” was “comparatively slow” and proposing how a future effort can be faster.", "The Inflation Reduction Act and two other infrastructure laws allocated more than $1 trillion of funding to clean energy through tax credits, loans and grants, the authors estimate.", "And a clean energy plan must enable the government to move faster than the “slow pace of Biden-era implementation.”"], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGYLlsnOiPL4Hug5_V7HFi1NAflv_Jio0LdkViLqsaeWEVUX30F9itOqPQOQnQE7hkwNOTyKsFpPpXFxifXKu8Z7x56DCRS87mVmHxKZs3IkPHHCFLwIqTZ87Xdo-VtLe6kGxkqf2sSt2K173rWaymdOW6qrPBzx9AecIk=", "source_title": "investingnews.com", "http_status": 200, "ok": true, "label": "WEAKLY_RELATED", "score": 0.6, "reasoning": "이 기사는 조 바이든 대통령과 그의 행정부가 반도체 및 커넥티드 차량 부문에 대한 규제를 강화하는 내용을 다루고 있습니다. 조 바이든 대통령은 기사에서 핵심적인 인물로 여러 번 언급되지만, \"인플레이션 감축법\" 자체나 그 핵심 내용은 명시적으로 언급되지 않습니다. 기사의 내용은 바이든 행정부의 광범위한 경제 및 산업 정책과 관련이 있지만, 특정 법안과의 직접적인 연관성은 약합니다.", "evidence_spans": ["Biden Admin Enacts Tougher Regulations for Chip and Connected Vehicle Sectors", "President Joe Biden's administration", "the Biden administration finalized regulations to safeguard US connected vehicle supply chains"], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": false}]}, {"chain_index": 2, "politician": "Joe Biden", "policy": "Medicare Drug Price Negotiations", "industry_or_sector": "의료 및 제약", "companies": ["Pfizer", "Eli Lilly", "Moderna"], "impact_description": "메디케어 약품 가격 협상 제도는 Pfizer, Eli Lilly, Moderna와 같은 제약 회사들의 미국 내 매출에 영향을 미쳤습니다. 이 정책은 고령층의 약품 비용 절감을 목표로 합니다.", "impact_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEp8Yj4KD5eUY2deNwDwSfCHX5WDQqMFIDw0WezyNoMHlTjOWEtrazHvdxPI9KjsoTzgYkUzzwvWuh9NglNxnByQwnD40joadtfOf7eWnoUDLgi0IN3Gfj3o4VdEHZa0W9yMeYk3cD6U_7mggGDoAHX9PuMIHx-p-RUCiEDcYi3ukiCljJAvhXPQc5izIiPWLAP5Q==", "source_title": "cfr.org", "http_status": null, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 원본 텍스트 내용이 비어 있어 영향 설명을 평가할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT"}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGYLlsnOiPL4Hug5_V7HFi1NAflv_Jio0LdkViLqsaeWEVUX30F9itOqPQOQnQE7hkwNOTyKsFpPpXFxifXKu8Z7x56DCRS87mVmHxKZs3IkPHHCFLwIqTZ87Xdo-VtLe6kGxkqf2sSt2K173rWaymdOW6qrPBzx9AecIk=", "source_title": "investingnews.com", "http_status": 200, "ok": true, "label": "UNSUPPORTED", "score": 0.1, "reasoning": "제공된 원문은 메디케어 약품 가격 협상 제도나 Pfizer, Eli Lilly, Moderna와 같은 제약 회사에 대한 언급이 없습니다. 원문은 주로 반도체 및 커넥티드 차량 부문에 대한 미국 정부의 규제에 관한 내용을 다루고 있어, 영향 설명과 관련이 없습니다.", "evidence_spans": [], "error_type": "NONE"}], "attribution_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEp8Yj4KD5eUY2deNwDwSfCHX5WDQqMFIDw0WezyNoMHlTjOWEtrazHvdxPI9KjsoTzgYkUzzwvWuh9NglNxnByQwnD40joadtfOf7eWnoUDLgi0IN3Gfj3o4VdEHZa0W9yMeYk3cD6U_7mggGDoAHX9PuMIHx-p-RUCiEDcYi3ukiCljJAvhXPQc5izIiPWLAP5Q==", "source_title": "cfr.org", "http_status": null, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 웹 페이지 내용이 비어 있어 조 바이든 대통령과 메디케어 약가 협상 정책 간의 관련성을 판단할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT", "politician_mentioned": false, "policy_topic_mentioned": false}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGYLlsnOiPL4Hug5_V7HFi1NAflv_Jio0LdkViLqsaeWEVUX30F9itOqPQOQnQE7hkwNOTyKsFpPpXFxifXKu8Z7x56DCRS87mVmHxKZs3IkPHHCFLwIqTZ87Xdo-VtLe6kGxkqf2sSt2K173rWaymdOW6qrPBzx9AecIk=", "source_title": "investingnews.com", "http_status": 200, "ok": true, "label": "UNRELATED", "score": 0.1, "reasoning": "기사는 조 바이든 대통령의 행정부가 반도체 및 커넥티드 차량 부문에 대한 규제를 강화하는 내용을 다루고 있습니다. 하지만 \"메디케어 약가 협상\" 정책이나 관련 의료/제약 정책에 대한 언급은 전혀 없습니다.", "evidence_spans": [], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": false}]}, {"chain_index": 3, "politician": "Joe Biden", "policy": "CHIPS and Science Act", "industry_or_sector": "반도체", "companies": ["Samsung", "SK Hynix"], "impact_description": "CHIPS and Science Act의 인센티브와 수출 통제 정책은 Samsung과 SK Hynix와 같은 한국 기업들에게 영향을 미쳤습니다. 이 정책은 미국 내 반도체 생산 확대와 대중국 첨단 칩 수출 제한을 목표로 합니다.", "impact_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEp8Yj4KD5eUY2deNwDwSfCHX5WDQqMFIDw0WezyNoMHlTjOWEtrazHvdxPI9KjsoTzgYkUzzwvWuh9NglNxnByQwnD40joadtfOf7eWnoUDLgi0IN3Gfj3o4VdEHZa0W9yMeYk3cD6U_7mggGDoAHX9PuMIHx-p-RUCiEDcYi3ukiCljJAvhXPQc5izIiPWLAP5Q==", "source_title": "cfr.org", "http_status": null, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 원문 텍스트가 비어 있어 영향 설명을 평가할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT"}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGYLlsnOiPL4Hug5_V7HFi1NAflv_Jio0LdkViLqsaeWEVUX30F9itOqPQOQnQE7hkwNOTyKsFpPpXFxifXKu8Z7x56DCRS87mVmHxKZs3IkPHHCFLwIqTZ87Xdo-VtLe6kGxkqf2sSt2K173rWaymdOW6qrPBzx9AecIk=", "source_title": "investingnews.com", "http_status": 200, "ok": true, "label": "PARTIALLY_SUPPORTED", "score": 0.6, "reasoning": "원문은 CHIPS Act 인센티브와 대중국 첨단 칩 수출 제한 정책의 존재 및 목표를 명확히 설명하고 있으며, 미국 내 반도체 생산 확대에 대한 내용도 포함되어 있습니다. 하지만 삼성과 SK 하이닉스 같은 한국 기업들이 이러한 정책으로 인해 직접적으로 영향을 받았다는 구체적인 언급은 없습니다.", "evidence_spans": ["Micron Secures US$6.17 Billion CHIPS Act Subsidy to Expand US Semiconductor Manufacturing", "Those restrictions limit AI chip sales from companies like NVIDIA (NASDAQ:NVDA) to global data centers, with specific curbs on sales to China.", "Under the planned new rules, chips with technology thresholds of 14 to 16 nanometers or smaller will be presumed restricted, requiring manufacturers to obtain government licenses to sell them in China."], "error_type": "NONE"}], "attribution_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEp8Yj4KD5eUY2deNwDwSfCHX5WDQqMFIDw0WezyNoMHlTjOWEtrazHvdxPI9KjsoTzgYkUzzwvWuh9NglNxnByQwnD40joadtfOf7eWnoUDLgi0IN3Gfj3o4VdEHZa0W9yMeYk3cD6U_7mggGDoAHX9PuMIHx-p-RUCiEDcYi3ukiCljJAvhXPQc5izIiPWLAP5Q==", "source_title": "cfr.org", "http_status": null, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 웹 페이지 텍스트 내용이 비어 있어 조 바이든 대통령과 CHIPS 및 과학법 간의 관련성을 판단할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT", "politician_mentioned": false, "policy_topic_mentioned": false}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGYLlsnOiPL4Hug5_V7HFi1NAflv_Jio0LdkViLqsaeWEVUX30F9itOqPQOQnQE7hkwNOTyKsFpPpXFxifXKu8Z7x56DCRS87mVmHxKZs3IkPHHCFLwIqTZ87Xdo-VtLe6kGxkqf2sSt2K173rWaymdOW6qrPBzx9AecIk=", "source_title": "investingnews.com", "http_status": 200, "ok": true, "label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "기사는 바이든 행정부가 반도체 및 연결 차량 부문에 대한 규제를 강화하는 내용을 다루고 있으며, 이는 CHIPS 및 과학법의 목표와 밀접하게 관련되어 있습니다. 페이지 내 다른 기사 링크에서 \"CHIPS Act\"가 직접 언급됩니다.", "evidence_spans": ["Biden Admin Enacts Tougher Regulations for Chip and Connected Vehicle Sectors", "The actions come in the final days of President Joe Biden's administration", "US planning to add more advanced chip restrictions", "Micron Secures US$6.17 Billion CHIPS Act Subsidy to Expand US Semiconductor Manufacturing"], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}]}, {"chain_index": 4, "politician": "Joe Biden", "policy": "Inflation Reduction Act", "industry_or_sector": "자동차", "companies": ["GM Korea"], "impact_description": "GM Korea는 미국 내 전기차 생산 확대와 관세 위험으로 인해 국내 시장 점유율이 감소(12%에서 1.8%로)하였으며, 2025년 2월 15일까지 서비스 센터 폐쇄 계획을 발표했습니다.", "impact_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGYLlsnOiPL4Hug5_V7HFi1NAflv_Jio0LdkViLqsaeWEVUX30F9itOqPQOQnQE7hkwNOTyKsFpPpXFxifXKu8Z7x56DCRS87mVmHxKZs3IkPHHCFLwIqTZ87Xdo-VtLe6kGxkqf2sSt2K173rWaymdOW6qrPBzx9AecIk=", "source_title": "investingnews.com", "http_status": 200, "ok": true, "label": "UNSUPPORTED", "score": 0.1, "reasoning": "제공된 원문은 미국 정부의 반도체 및 커넥티드 차량 부문에 대한 규제에 관한 내용입니다. GM Korea의 국내 시장 점유율 감소, 미국 내 전기차 생산 확대, 관세 위험, 또는 서비스 센터 폐쇄 계획에 대한 어떠한 정보도 포함하고 있지 않습니다.", "evidence_spans": [], "error_type": "NONE"}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHyw1yUq4HOu5vkSdxM2WuHp9dkcZ2kXncvM1xfxhVkQP151CY9dXwcDufm94RdDXDpvtk_URPk2_G0AC17xZMardpA1lXOmKxjk2DAPE2EA-ztZ7jL3rYtuhWeCg==", "source_title": "dawn.com", "http_status": null, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 source_text가 비어 있어 GM Korea에 대한 영향 설명을 평가할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT"}], "attribution_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGYLlsnOiPL4Hug5_V7HFi1NAflv_Jio0LdkViLqsaeWEVUX30F9itOqPQOQnQE7hkwNOTyKsFpPpXFxifXKu8Z7x56DCRS87mVmHxKZs3IkPHHCFLwIqTZ87Xdo-VtLe6kGxkqf2sSt2K173rWaymdOW6qrPBzx9AecIk=", "source_title": "investingnews.com", "http_status": 200, "ok": true, "label": "WEAKLY_RELATED", "score": 0.55, "reasoning": "이 기사는 조 바이든 행정부가 칩 및 커넥티드 차량 부문에 대한 규제를 시행하고 있음을 다룹니다. 조 바이든 대통령은 행정부의 조치와 관련하여 명확하게 언급되지만, 기사에는 \"인플레이션 감축법\"이 전혀 언급되어 있지 않습니다. 대신 다른 특정 규제에 초점을 맞추고 있습니다.", "evidence_spans": ["Biden Admin Enacts Tougher Regulations for Chip and Connected Vehicle Sectors", "The actions come in the final days of President Joe Biden's administration", "on Tuesday (January 14), the Biden administration finalized regulations to safeguard US connected vehicle supply chains"], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": false}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHyw1yUq4HOu5vkSdxM2WuHp9dkcZ2kXncvM1xfxhVkQP151CY9dXwcDufm94RdDXDpvtk_URPk2_G0AC17xZMardpA1lXOmKxjk2DAPE2EA-ztZ7jL3rYtuhWeCg==", "source_title": "dawn.com", "http_status": null, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 기사 내용이 비어 있어 조 바이든과 인플레이션 감축법 간의 관련성을 판단할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT", "politician_mentioned": false, "policy_topic_mentioned": false}]}], "gold_eval": {"similarity_score": 0.7, "reasoning": "두 보고서는 이재명 의원의 기본소득 및 일부 인프라 정책에 대한 분석에서 유사점을 보였습니다. 골드 보고서는 부동산 시장 안정화 정책과 대규모 국책 사업의 경제적 파급 효과를 심층적으로 다룬 반면, 모델 보고서는 소상공인 및 지역 특화 산업 지원 정책에 대한 독자적인 관점을 제시했습니다. 전반적으로 골드 보고서가 주요 거시 경제 정책의 시장 영향 분석에서 더 깊이 있는 설명을 제공했습니다.", "model_unique_points": ["소상공인 및 중소기업 지원 정책이 지역 경제 활성화에 미치는 영향", "지역 특화 산업 육성 방안과 관련 중소 제조 기업의 성장 가능성"], "gold_unique_points": ["부동산 시장 안정화 정책이 건설 및 금융 산업에 미치는 구체적인 영향 분석", "대규모 국책 사업 추진에 따른 특정 대기업 및 관련 하청 기업의 수혜 전망"]}}} +{"query": "Donald Trump", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "Donald Trump", "policy": "American Energy Dominance Act", "industry_or_sector": "에너지 (화석 연료)", "companies": ["ExxonMobil", "Chevron"], "impact_description": "에너지 규제 완화 정책으로 화석 연료 기업의 운영 비용 감소 및 시장 점유율 확대", "impact_results": [{"url": "https://example.com/energy-act-2025", "source_title": "American Energy Dominance Act Analysis", "http_status": 404, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 웹 페이지는 \"Example Domain\"으로, 실제 기사 내용이 아닌 예시 도메인 페이지입니다. 따라서 영향 설명의 사실 여부를 평가할 충분한 정보가 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT"}], "attribution_results": [{"url": "https://example.com/energy-act-2025", "source_title": "American Energy Dominance Act Analysis", "http_status": 404, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 웹 페이지 내용은 일반적인 예시 도메인 텍스트이며, 도널드 트럼프나 미국 에너지 지배법에 대한 어떠한 정보도 포함하고 있지 않아 관련성을 판단하기에 정보가 너무 부족합니다.", "evidence_spans": [], "error_type": "TOO_SHORT", "politician_mentioned": false, "policy_topic_mentioned": false}]}, {"chain_index": 1, "politician": "Donald Trump", "policy": "Corporate Tax Cut and Trade Restriction Executive Orders", "industry_or_sector": "제조업", "companies": ["Boeing", "Caterpillar"], "impact_description": "기업 세금 감면 및 무역 보호주의 정책으로 제조업체의 수익성 개선 및 해외 생산 기지 국내 회귀", "impact_results": [{"url": "https://example.com/manufacturing-2025", "source_title": "2025 Manufacturing Sector Report", "http_status": 404, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 소스 텍스트는 일반적인 예시 도메인 페이지이며, 제조업체의 수익성 개선이나 해외 생산 기지 국내 회귀와 관련된 어떠한 정보도 포함하고 있지 않아 영향 설명을 평가하기에 충분하지 않습니다.", "evidence_spans": [], "error_type": "TOO_SHORT"}], "attribution_results": [{"url": "https://example.com/manufacturing-2025", "source_title": "2025 Manufacturing Sector Report", "http_status": 404, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "기사 내용이 \"Example Domain\"이라는 플레이스홀더 텍스트로, 도널드 트럼프나 법인세 인하 및 무역 제한 행정명령과 관련된 어떠한 정보도 포함하고 있지 않아 관련성을 판단하기에 정보가 부족합니다.", "evidence_spans": [], "error_type": "TOO_SHORT", "politician_mentioned": false, "policy_topic_mentioned": false}]}, {"chain_index": 2, "politician": "Donald Trump", "policy": "Truth Social Partnerships and Conservative Media Support", "industry_or_sector": "미디어/부동산 개발", "companies": ["Trump Organization", "Rumble"], "impact_description": "미디어/보수 언론과의 협력을 통한 정치적 영향력 확대 및 트럼프 조직의 브랜드 가치 상승", "impact_results": [{"url": "https://example.com/trump-media-2025", "source_title": "Trump Media Partnerships 2025", "http_status": 404, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 소스 텍스트는 \"Example Domain\" 페이지로, 트럼프 조직, 럼블, 미디어 협력, 정치적 영향력 또는 브랜드 가치 상승에 대한 어떠한 관련 정보도 포함하고 있지 않습니다. 따라서 영향 설명을 평가하기에 충분한 정보가 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT"}], "attribution_results": [{"url": "https://example.com/trump-media-2025", "source_title": "Trump Media Partnerships 2025", "http_status": 404, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 기사 내용은 \"Example Domain\"에 대한 일반적인 설명으로, 도널드 트럼프나 진실 소셜 파트너십 및 보수 미디어 지원 정책과 관련된 어떠한 정보도 포함하고 있지 않습니다. 기사 내용이 너무 짧고 관련성이 없어 판단하기 어렵습니다.", "evidence_spans": [], "error_type": "TOO_SHORT", "politician_mentioned": false, "policy_topic_mentioned": false}]}], "gold_eval": {"similarity_score": 0.75, "reasoning": "두 보고서는 이재명 의원의 기본소득 및 친환경 에너지 정책을 공통적으로 다루며 관련 산업과 기업을 유사하게 분석했습니다. 그러나 부동산 정책에서 Gold Report는 민간 시장 규제를, Model Report는 공공 주거 확대를 강조하여 접근 방식이 달랐습니다. Gold Report는 기본소득의 플랫폼 산업 영향과 신재생에너지의 이차전지 산업 연관성을 더 깊이 다루어 더 구체적이고 균형 잡힌 시장 파급 효과 설명을 제공했습니다. Model Report는 긍정적 측면에 집중하는 경향이 있었습니다.", "model_unique_points": ["청년 주거 안정화를 위한 공공임대주택 확대 정책과 공공 건설 부문의 영향 분석.", "친환경 에너지 전환 정책에서 RE100 지원을 통한 기업의 재생에너지 사용 확대 측면 강조."], "gold_unique_points": ["다주택자 규제 강화를 통한 민간 부동산 시장 안정화 정책과 그에 따른 민간 건설사 영향 분석.", "기본소득 정책이 플랫폼 산업 및 특정 온라인 유통 기업에 미치는 영향에 대한 심층 분석.", "신재생에너지 정책에서 이차전지 산업 및 관련 기업의 성장 가능성 강조."]}}} +{"query": "Xi Jinping", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "Xi Jinping", "policy": "Made in China 2025", "industry_or_sector": "첨단 기술 산업", "companies": ["SMIC", "Huawei", "YMTC", "Baidu", "Alibaba", "Tencent", "BYD", "CATL", "CRRC", "Sinopharm"], "impact_description": "Made in China 2025 정책은 반도체, AI, 로봇, 항공우주 등 첨단 기술 산업에서 국내 기업의 경쟁력 강화를 목표로 하며, SMIC, 화웨이, YMTC, 바이두, 알리바바, 텐센트, BYD, CATL, CRRC, 시노팜 등이 주요 수혜 기업으로 부상했습니다.", "impact_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQE2TqEnW__-tCn6xomyL1M1_6T4YrMJY78V-B6qhOtntZOpCKyUIVuYminrUPJznb-g7PqOtszW9Kmsh5opnB7Jj6rkmaxRo5k4oyzJ4qucUpQJVkRXE1CVdG0C2okCaTap-lK_3qlOQQ7dgdi1lqdDWzM1Cd8=", "source_title": "xinhuanet.com", "http_status": 200, "ok": true, "label": "UNSUPPORTED", "score": 0.1, "reasoning": "제공된 원문은 시진핑 사상과 중국의 정치적, 사회적 목표에 대한 배경 정보를 다루고 있습니다. \"Made in China 2025\" 정책, 첨단 기술 산업, 또는 SMIC, 화웨이 등 특정 기업의 경쟁력 강화에 대한 언급은 전혀 없습니다. 따라서 영향 설명의 핵심 내용이 원문에 의해 전혀 뒷받침되지 않습니다.", "evidence_spans": [], "error_type": "NONE"}], "attribution_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQE2TqEnW__-tCn6xomyL1M1_6T4YrMJY78V-B6qhOtntZOpCKyUIVuYminrUPJznb-g7PqOtszW9Kmsh5opnB7Jj6rkmaxRo5k4oyzJ4qucUpQJVkRXE1CVdG0C2okCaTap-lK_3qlOQQ7dgdi1lqdDWzM1Cd8=", "source_title": "xinhuanet.com", "http_status": 200, "ok": true, "label": "WEAKLY_RELATED", "score": 0.55, "reasoning": "기사는 시진핑 주석의 사상과 리더십에 대해 상세히 다루고 있지만, \"중국 제조 2025\" 정책이나 그 핵심 내용은 전혀 언급하지 않습니다. 시진핑 주석은 기사의 핵심 인물이지만, 정책 주제는 다루어지지 않았습니다.", "evidence_spans": ["Xi Jinping was elected Chinese president by a unanimous vote Saturday morning at the ongoing session of the 13th National People's Congress.", "China's national legislature has adopted constitutional amendments, enshrining Xi Jinping Thought on Socialism with Chinese Characteristics for a New Era into the Constitution."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": false}]}, {"chain_index": 1, "politician": "Xi Jinping", "policy": "Belt and Road Initiative", "industry_or_sector": "인프라 및 건설", "companies": ["PowerChina", "CCCC", "COSCO", "Sinohydro", "China Three Gorges Group", "Power Construction Corporation of China", "China Communications Construction Company (CCCC)", "China Railway Group Limited (CREC)", "China Railway Construction Corporation (CRCC)", "China State Construction Engineering Corporation (CSCEC)", "China Energy Engineering Corporation (CEEC)", "East Hope Group", "Xinfa Group", "Longi Green Energy"], "impact_description": "일대일로 이니셔티브는 인프라 개발을 통해 PowerChina, CCCC, COSCO, 시노하이드로, 차이나 쓰리게이지 그룹, 파워 컨스트럭션 코퍼레이션 오브 차이나, 차이나 커뮤니케이션스 컨스트럭션 컴퍼니(CCCC), 차이나 레일웨이 그룹 리미티드(CREC), 차이나 레일웨이 컨스트럭션 코퍼레이션(CRCC), 차이나 스테이트 컨스트럭션 엔지니어링 코퍼레이션(CSCEC), 차이나 에너지 엔지니어링 코퍼레이션(CEEC) 등 국영 기업과 이스트 호프 그룹, 신파 그룹, 롱기 그린 에너지 등 민간 기업의 해외 진출을 지원했습니다.", "impact_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQFMYOwh5E8EKxuQ2QyaxeGgzw4vQwiIXNyS9fKciWWq3sn7_3y8e1dAL08BlgVHTPvNEglv2KltwHhE7bSpNfDCM0SSlzyIac4DRgwHDuDI2YRuTDMh3VmQg1CAzjRo74ZY_skpYLOg", "source_title": "bbc.co.uk", "http_status": 200, "ok": true, "label": "UNSUPPORTED", "score": 0.1, "reasoning": "제공된 원문은 시진핑의 사상과 14가지 원칙에 대한 내용이며, 일대일로 이니셔티브나 언급된 특정 기업들의 해외 진출에 대한 정보는 포함하고 있지 않습니다. 따라서 영향 설명이 원문에 의해 뒷받침되지 않습니다.", "evidence_spans": [], "error_type": "NONE"}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGg-igo1h1H2wLUpd3J-hCoMbVMEV_S9TCCATN4B3wMHi-EgENazdXayFuHg8AUPmlNCpZRqKsA_aPujdJEuKbJXpyLCrpsa1UNf7YZufSzV47mjwEVdRf0LuW_oQPN6_2i89v6afGsH8eIO0RMhd95pDfJvr7zN8qweYejZpE3L1TPMACxgfA3_0_SfjM=", "source_title": "scio.gov.cn", "http_status": 200, "ok": true, "label": "UNSUPPORTED", "score": 0.1, "reasoning": "제공된 원문은 \"시진핑 신시대 중국 특색 사회주의 사상\"에 대한 내용으로, 일대일로 이니셔티브나 언급된 특정 기업들의 해외 진출 지원에 대한 정보를 포함하고 있지 않습니다. 따라서 영향 설명이 원문에 의해 뒷받침되지 않습니다.", "evidence_spans": [], "error_type": "NONE"}], "attribution_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQFMYOwh5E8EKxuQ2QyaxeGgzw4vQwiIXNyS9fKciWWq3sn7_3y8e1dAL08BlgVHTPvNEglv2KltwHhE7bSpNfDCM0SSlzyIac4DRgwHDuDI2YRuTDMh3VmQg1CAzjRo74ZY_skpYLOg", "source_title": "bbc.co.uk", "http_status": 200, "ok": true, "label": "WEAKLY_RELATED", "score": 0.55, "reasoning": "이 기사는 시진핑 주석의 정치 사상인 \"시진핑 사상\"의 14가지 원칙에 대해 상세히 설명하고 있습니다. 시진핑 주석은 기사의 핵심 인물로 여러 번 언급되지만, \"일대일로\" 정책에 대한 구체적인 언급은 없습니다. 다만, \"글로벌 개발에 기여\"와 같은 일반적인 국제 협력 관련 내용은 포함되어 있으나, 특정 정책을 지칭하지는 않습니다.", "evidence_spans": ["His own words: The 14 principles of 'Xi Jinping Thought'", "A new doctrine bearing Chinese leader Xi Jinping's name and representing his political views has been written into the ruling Communist Party's constitution at a key political gathering in Beijing which ended on 24 October.", "\"Xi Jinping Thought on Socialism with Chinese Characteristics for a New Era\" comprises 14 principles, as presented by Xi in his political report at the start of the party's 19th National Congress on 18 October, although at that point he did not mention his name alongside the doctrine."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": false}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGg-igo1h1H2wLUpd3J-hCoMbVMEV_S9TCCATN4B3wMHi-EgENazdXayFuHg8AUPmlNCpZRqKsA_aPujdJEuKbJXpyLCrpsa1UNf7YZufSzV47mjwEVdRf0LuW_oQPN6_2i89v6afGsH8eIO0RMhd95pDfJvr7zN8qweYejZpE3L1TPMACxgfA3_0_SfjM=", "source_title": "scio.gov.cn", "http_status": 200, "ok": true, "label": "WEAKLY_RELATED", "score": 0.6, "reasoning": "이 문서는 시진핑 주석의 정치 사상과 리더십에 대해 상세히 설명하고 있지만, 구체적인 정책인 \"일대일로\"에 대한 언급은 없습니다. 다만, \"인류 운명 공동체 구축\"과 같은 광범위한 외교 정책 목표는 언급되어 있어 간접적인 관련성은 있습니다.", "evidence_spans": ["Xi Jinping Thought on Socialism with Chinese Characteristics for a New Era", "Since the Party's 18th National Congress in 2012, the Central Committee with Xi Jinping (b. 1953) at its core has put forward a number of new concepts, new visions, and new strategies for governance"], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": false}]}, {"chain_index": 2, "politician": "Xi Jinping", "policy": "Common Prosperity", "industry_or_sector": "기술 및 금융", "companies": ["Alibaba", "Tencent"], "impact_description": "공동부유 정책은 기술, 부동산, 교육 분야에 대한 규제 강화를 통해 알리바바와 텐센트 등 기업이 공동부유 이니셔티브에 자금을 지원하도록 유도했습니다.", "impact_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQE2TqEnW__-tCn6xomyL1M1_6T4YrMJY78V-B6qhOtntZOpCKyUIVuYminrUPJznb-g7PqOtszW9Kmsh5opnB7Jj6rkmaxRo5k4oyzJ4qucUpQJVkRXE1CVdG0C2okCaTap-lK_3qlOQQ7dgdi1lqdDWzM1Cd8=", "source_title": "xinhuanet.com", "http_status": 200, "ok": true, "label": "UNSUPPORTED", "score": 0.2, "reasoning": "제공된 원문은 시진핑 사상과 \"모두를 위한 공동 번영\"이라는 개념을 언급하지만, \"공동부유 정책\"이라는 특정 정책, 알리바바와 텐센트 같은 기업, 기술, 부동산, 교육 분야에 대한 규제 강화, 또는 이들 기업이 공동부유 이니셔티브에 자금을 지원하도록 유도되었다는 내용은 포함하고 있지 않습니다. 원문은 2018년 기사로, 공동부유 정책의 구체적인 영향에 대한 설명과는 시기적으로도 맞지 않습니다.", "evidence_spans": [], "error_type": "NONE"}], "attribution_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQE2TqEnW__-tCn6xomyL1M1_6T4YrMJY78V-B6qhOtntZOpCKyUIVuYminrUPJznb-g7PqOtszW9Kmsh5opnB7Jj6rkmaxRo5k4oyzJ4qucUpQJVkRXE1CVdG0C2okCaTap-lK_3qlOQQ7dgdi1lqdDWzM1Cd8=", "source_title": "xinhuanet.com", "http_status": 200, "ok": true, "label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "기사는 시진핑 주석의 사상과 그가 강조하는 '모두를 위한 공동 번영'이라는 정책 목표를 명확하게 연결하여 설명하고 있습니다.", "evidence_spans": ["Xi Jinping was elected Chinese president by a unanimous vote Saturday morning at the ongoing session of the 13th National People's Congress.", "It stresses the people-centered philosophy of development, and well-rounded human development and common prosperity for everyone."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}]}, {"chain_index": 3, "politician": "Xi Jinping", "policy": "Semiconductor Self-Sufficiency", "industry_or_sector": "반도체 및 첨단 기술", "companies": ["SMIC", "Yangtze Memory Technologies (YMTC)", "Huawei", "Baidu", "Alibaba", "Tencent", "BYD", "CATL"], "impact_description": "반도체 자립 정책은 SMIC, 양쯔 메모리 테크놀로지(YMTC), 화웨이, 바이두, 알리바바, 텐센트, BYD, CATL 등 국내 반도체 기업에 1,500억 달러의 국가 기금을 지원하여 기술 자립을 촉진했습니다.", "impact_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGg-igo1h1H2wLUpd3J-hCoMbVMEV_S9TCCATN4B3wMHi-EgENazdXayFuHg8AUPmlNCpZRqKsA_aPujdJEuKbJXpyLCrpsa1UNf7YZufSzV47mjwEVdRf0LuW_oQPN6_2i89v6afGsH8eIO0RMhd95pDfJvr7zN8qweYejZpE3L1TPMACxgfA3_0_SfjM=", "source_title": "scio.gov.cn", "http_status": 200, "ok": true, "label": "UNSUPPORTED", "score": 0.1, "reasoning": "제공된 원문은 시진핑의 사상과 중국 특색 사회주의에 대한 일반적인 내용을 다루고 있으며, 반도체 자립 정책, 특정 기업(SMIC, YMTC, 화웨이, 바이두, 알리바바, 텐센트, BYD, CATL), 1,500억 달러의 국가 기금 지원 등 영향 설명에 언급된 구체적인 정보는 전혀 포함하고 있지 않습니다.", "evidence_spans": [], "error_type": "NONE"}], "attribution_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGg-igo1h1H2wLUpd3J-hCoMbVMEV_S9TCCATN4B3wMHi-EgENazdXayFuHg8AUPmlNCpZRqKsA_aPujdJEuKbJXpyLCrpsa1UNf7YZufSzV47mjwEVdRf0LuW_oQPN6_2i89v6afGsH8eIO0RMhd95pDfJvr7zN8qweYejZpE3L1TPMACxgfA3_0_SfjM=", "source_title": "scio.gov.cn", "http_status": 200, "ok": true, "label": "WEAKLY_RELATED", "score": 0.5, "reasoning": "이 기사는 시진핑 주석의 사상과 리더십에 대해 광범위하게 다루고 있지만, \"반도체 자급자족\"이라는 특정 정책에 대해서는 언급하지 않습니다. \"과학 기술\"이라는 일반적인 분야는 언급되지만, 반도체나 자급자족 목표에 대한 구체적인 내용은 없습니다.", "evidence_spans": ["Xi Jinping Thought on Socialism with Chinese Characteristics for a New Era", "It provides theoretical analysis of and policy guidance to the economy, politics, rule of law, science and technology, culture, education, wellbeing, ethnic affairs, religious affairs, society, ecological conservation, national security, defense and the military, \"one country, two systems\" and China's reunification, the united front, foreign affairs, and Party development."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": false}]}, {"chain_index": 4, "politician": "Xi Jinping", "policy": "Cybersecurity and Data Control", "industry_or_sector": "사이버보안 및 데이터 관리", "companies": ["Apple", "Huawei", "Tencent"], "impact_description": "사이버보안 및 데이터 통제 정책은 데이터 현지화 법률을 통해 애플, 화웨이, 텐센트 등 기업의 데이터 관리 방식을 규제하며 국내 기술 생태계 강화를 도모했습니다.", "impact_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQE2TqEnW__-tCn6xomyL1M1_6T4YrMJY78V-B6qhOtntZOpCKyUIVuYminrUPJznb-g7PqOtszW9Kmsh5opnB7Jj6rkmaxRo5k4oyzJ4qucUpQJVkRXE1CVdG0C2okCaTap-lK_3qlOQQ7dgdi1lqdDWzM1Cd8=", "source_title": "xinhuanet.com", "http_status": 200, "ok": true, "label": "UNSUPPORTED", "score": 0.1, "reasoning": "제공된 원문은 시진핑의 정치 사상과 통치 원칙에 대한 내용이며, 사이버보안, 데이터 통제 정책, 데이터 현지화 법률, 애플, 화웨이, 텐센트와 같은 특정 기업의 데이터 관리 방식 또는 국내 기술 생태계 강화에 대한 어떠한 정보도 포함하고 있지 않습니다. 따라서 영향 설명의 내용을 뒷받침할 근거가 전혀 없습니다.", "evidence_spans": [], "error_type": "NONE"}], "attribution_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQE2TqEnW__-tCn6xomyL1M1_6T4YrMJY78V-B6qhOtntZOpCKyUIVuYminrUPJznb-g7PqOtszW9Kmsh5opnB7Jj6rkmaxRo5k4oyzJ4qucUpQJVkRXE1CVdG0C2okCaTap-lK_3qlOQQ7dgdi1lqdDWzM1Cd8=", "source_title": "xinhuanet.com", "http_status": 200, "ok": true, "label": "UNRELATED", "score": 0.2, "reasoning": "시진핑 주석은 기사의 중심 인물로 여러 번 언급되지만, 기사는 그의 사상과 중국 특색 사회주의의 전반적인 원칙에 초점을 맞추고 있습니다. '사이버보안 및 데이터 관리'라는 특정 정책 주제는 기사에서 명시적으로 다루어지지 않으며, '국가 안보에 대한 전체론적 접근'이라는 광범위한 원칙만 언급되어 있어 주어진 정책과의 직접적인 관련성이 매우 낮습니다.", "evidence_spans": ["Xi Jinping was elected Chinese president by a unanimous vote Saturday morning at the ongoing session of the 13th National People's Congress."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": false}]}], "gold_eval": {"similarity_score": 0.7, "reasoning": "두 보고서는 이재명 의원의 기본소득 및 일부 인프라 정책에 대한 분석에서 유사점을 보였습니다. 골드 보고서는 부동산 시장 안정화 정책과 대규모 국책 사업의 경제적 파급 효과를 심층적으로 다룬 반면, 모델 보고서는 소상공인 및 지역 특화 산업 지원 정책에 대한 독자적인 관점을 제시했습니다. 전반적으로 골드 보고서가 주요 거시 경제 정책의 시장 영향 분석에서 더 깊이 있는 설명을 제공했습니다.", "model_unique_points": ["소상공인 및 중소기업 지원 정책이 지역 경제 활성화에 미치는 영향", "지역 특화 산업 육성 방안과 관련 중소 제조 기업의 성장 가능성"], "gold_unique_points": ["부동산 시장 안정화 정책이 건설 및 금융 산업에 미치는 구체적인 영향 분석", "대규모 국책 사업 추진에 따른 특정 대기업 및 관련 하청 기업의 수혜 전망"]}}} +{"query": "Vladimir Putin", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "블라디미르 푸틴", "policy": "에너지 및 제재 회피 정책", "industry_or_sector": "에너지", "companies": ["Rosneft", "Lukoil"], "impact_description": "푸틴 정부의 에너지 정책은 서방 제재 회피를 위한 대체 수출 경로 확보를 목표로 하며, 로스네프트와 루코일은 인도 및 아시아 시장으로의 석유 수출 확대를 통해 전쟁 경제를 지속하고 있습니다. 미국 제재로 인해 인도는 러시아산 원유 수입을 중단했으나, 다른 시장으로 다각화를 시도하고 있습니다.", "impact_results": [{"url": "https://www.themoscowtimes.com/2025/11/20/sberbank-using-ai-to-cut-20-of-staff-by-end-of-2025-gref-says-a91184", "source_title": "The Moscow Times", "http_status": 200, "ok": true, "label": "UNSUPPORTED", "score": 0.1, "reasoning": "제공된 원문은 스베르방크의 인공지능을 이용한 인력 감축에 대한 내용이며, 로스네프트와 루코일의 에너지 정책 및 석유 수출에 대한 영향 설명과는 관련이 없습니다. 원문에는 에너지 산업, 로스네프트, 루코일, 인도 및 아시아 시장으로의 석유 수출, 서방 제재 회피 등에 대한 정보가 전혀 없습니다.", "evidence_spans": [], "error_type": "NONE"}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQFXI5Uz28roaJVOUF8n_0SCRSydFrbEX-1nB_OB0gMflhl5JLQYAG4BizimFBBLRVraCKgOG2cdxCpkiGzJTeDpdb6lLqeb8_26MsyOb7UcowupCV3bZE2qAc58c9-bxt9JMBqE86uV_19mIzRUEXmrEm_l12Y8q9Bx3Tx3uhYvrmTFauVcQ8kDY2NDOAqG12BA7MfITJxdUrLLT_nkUsAzoYYyksz8C4865xMtMW5eC3OxDNU=", "source_title": "lvivherald.com, government.ru, euractiv.com, usip.org, jpost.com, cepa.org, debuglies.com, thehindu.com, world-nuclear-news.org, jamestown.org, meduza.io, fdd.org, carnegieendowment.org, youtube.com, elliptic.co, rbc.ua, espreso.tv, arctictoday.com, cbc.ca, theguardian.com, themoscowtimes.com, mayerbrown.com, www.gov.uk, kremlin.ru", "http_status": 200, "ok": true, "label": "PARTIALLY_SUPPORTED", "score": 0.65, "reasoning": "이 기사는 러시아의 에너지 정책이 서방 제재를 회피하기 위해 대체 수출 경로(예: \"그림자 선단\")를 확보하고 있으며, 아시아 및 걸프 지역 중개국으로 무역을 재편하여 전쟁 경제를 유지하고 있음을 명확히 보여줍니다. 이는 영향 설명의 주요 부분을 뒷받침합니다. 그러나 로스네프트와 루코일이라는 특정 기업은 언급되지 않았으며, 미국 제재로 인해 인도가 러시아산 원유 수입을 중단했다는 내용은 본문에 없습니다.", "evidence_spans": ["propped up by energy revenues routed through a sprawling maritime workaround", "Russia moves much of her crude via an ageing “shadow fleet” using opaque ownership, alternative insurance, and ship-to-ship transfers to skirt G7/EU restrictions.", "Trade re-orientation and technology choke-points: Russia’s trade has pivoted decisively to China and a ring of Eurasian and Gulf intermediaries.", "War finance still leans on hydrocarbons, but the channels are more expensive and fragile."], "error_type": "NONE"}], "attribution_results": [{"url": "https://www.themoscowtimes.com/2025/11/20/sberbank-using-ai-to-cut-20-of-staff-by-end-of-2025-gref-says-a91184", "source_title": "The Moscow Times", "http_status": 200, "ok": true, "label": "UNRELATED", "score": 0.2, "reasoning": "기사는 블라디미르 푸틴 대통령이 스베르방크의 AI 및 인력 감축에 대해 논의하는 내용을 다루고 있지만, 에너지 정책이나 제재 회피에 대한 언급은 전혀 없습니다.", "evidence_spans": ["Gref announced the cuts after President Vladimir Putin, who was also attending the conference, asked whether Sberbank planned to invest in satellite development."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": false}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQFXI5Uz28roaJVOUF8n_0SCRSydFrbEX-1nB_OB0gMflhl5JLQYAG4BizimFBBLRVraCKgOG2cdxCpkiGzJTeDpdb6lLqeb8_26MsyOb7UcowupCV3bZE2qAc58c9-bxt9JMBqE86uV_19mIzRUEXmrEm_l12Y8q9Bx3Tx3uhYvrmTFauVcQ8kDY2NDOAqG12BA7MfITJxdUrLLT_nkUsAzoYYyksz8C4865xMtMW5eC3OxDNU=", "source_title": "lvivherald.com, government.ru, euractiv.com, usip.org, jpost.com, cepa.org, debuglies.com, thehindu.com, world-nuclear-news.org, jamestown.org, meduza.io, fdd.org, carnegieendowment.org, youtube.com, elliptic.co, rbc.ua, espreso.tv, arctictoday.com, cbc.ca, theguardian.com, themoscowtimes.com, mayerbrown.com, www.gov.uk, kremlin.ru", "http_status": 200, "ok": true, "label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "기사는 러시아의 전시 경제와 에너지 수입, 제재 회피 전략에 대해 상세히 다루고 있습니다. 특히 '그림자 선단'을 이용한 제재 회피, 유가 상한제, 수출 통제 우회 등 에너지 및 제재 회피 정책이 핵심 주제입니다. 블라디미르 푸틴의 이름이 직접 언급되지는 않지만, 기사 전체가 러시아 정부의 정책과 경제 상황을 다루고 있으므로, 이는 푸틴 대통령의 정책과 직접적으로 관련됩니다.", "evidence_spans": ["Russia enters November 2025 with an economy that is unmistakably on a war footing: re-directed towards armaments, propped up by energy revenues routed through a sprawling maritime workaround, and held together by tight monetary policy and administrative controls.", "War finance still leans on hydrocarbons, but the channels are more expensive and fragile. Russia moves much of her crude via an ageing “shadow fleet” using opaque ownership, alternative insurance, and ship-to-ship transfers to skirt G7/EU restrictions.", "Policy-simulations suggest that a stricter price-cap—say US$30 per barrel—would cut Russian oil revenue materially versus the status quo, underscoring how dependent the budget remains on the effectiveness of sanctions enforcement rather than mere legal architecture.", "Trade re-orientation and technology choke-points... keeps consumer goods and many industrial inputs flowing under “parallel import” schemes; but access to cutting-edge semiconductors, specialised machine-tools and advanced software remains constrained, expensive, and unreliable. Export-control updates in late 2024 and 2025 broadened tooling and software restrictions; EU guidance in October tightened rules on dual-use and refined-product circumvention."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}]}, {"chain_index": 1, "politician": "블라디미르 푸틴", "policy": "기술 주권 및 AI 개발 정책", "industry_or_sector": "기술/금융", "companies": ["Sberbank"], "impact_description": "푸틴 정부의 기술 주권 정책은 AI 개발을 촉진하며, 스베르뱅크는 2025년 말까지 직원 20%를 감축하고 AI 투자를 확대했습니다. 이는 러시아 내 기술 자립과 디지털 전환을 가속화하는 데 기여하고 있습니다.", "impact_results": [{"url": "https://www.themoscowtimes.com/2025/11/20/sberbank-using-ai-to-cut-20-of-staff-by-end-of-2025-gref-says-a91184", "source_title": "The Moscow Times", "http_status": 200, "ok": true, "label": "SUPPORTED", "score": 0.9, "reasoning": "기사에는 스베르뱅크가 2025년 말까지 AI를 활용하여 직원 20%를 감축할 것이며, 연간 약 10억 달러를 AI에 투자하고 있다고 명시되어 있습니다. 푸틴 대통령이 AI 컨퍼런스에 참석하여 AI 활용을 독려한 내용도 포함되어 있어, 푸틴 정부의 AI 개발 촉진 정책과 러시아 내 기술 자립 및 디지털 전환 가속화에 기여한다는 전반적인 맥락을 뒷받침합니다.", "evidence_spans": ["Russia’s largest lender Sberbank will lay off 20% of its employees by the end of 2025 after using artificial intelligence systems to detect “inefficient” workers, the bank’s CEO German Gref said Wednesday at an AI conference.", "Gref replied that the bank’s heavy spending on AI, which stands at about $1 billion annually, left little room for other investments.", "“We… at Sber this year used a multi-agent AI system to cut 20% of the staff we analyzed and identified as inefficient, and we will complete this reduction by Jan. 1,” Gref said.", "Gref announced the cuts after President Vladimir Putin, who was also attending the conference, asked whether Sberbank planned to invest in satellite development.", "Putin responded by urging Sberbank to use AI to reduce non-essential expenses, saying that would free up additional funds."], "error_type": "NONE"}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQFXI5Uz28roaJVOUF8n_0SCRSydFrbEX-1nB_OB0gMflhl5JLQYAG4BizimFBBLRVraCKgOgOG2cdxCpkiGzJTeDpdb6lLqeb8_26MsyOb7UcowupCV3bZE2qAc58c9-bxt9JMBqE86uV_19mIzRUEXmrEm_l12Y8q9Bx3Tx3uhYvrmTFauVcQ8kDY2NDOAqG12BA7MfITJxdUrLLT_nkUsAzoYYyksz8C4865xMtMW5eC3OxDNU=", "source_title": "lvivherald.com, government.ru, euractiv.com, usip.org, jpost.com, cepa.org, debuglies.com, thehindu.com, world-nuclear-news.org, jamestown.org, meduza.io, fdd.org, carnegieendowment.org, youtube.com, elliptic.co, rbc.ua, espreso.tv, arctictoday.com, cbc.ca, theguardian.com, themoscowtimes.com, mayerbrown.com, www.gov.uk, kremlin.ru", "http_status": 404, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 소스 텍스트는 404 오류 페이지로, 요청된 URL을 찾을 수 없다는 내용입니다. 따라서 영향 설명의 내용을 평가할 수 있는 정보가 전혀 없습니다.", "evidence_spans": [], "error_type": "PAGE_LOAD_ERROR"}], "attribution_results": [{"url": "https://www.themoscowtimes.com/2025/11/20/sberbank-using-ai-to-cut-20-of-staff-by-end-of-2025-gref-says-a91184", "source_title": "The Moscow Times", "http_status": 200, "ok": true, "label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "기사는 블라디미르 푸틴 대통령이 AI 컨퍼런스에 참석하여 스베르방크의 AI 투자 및 활용에 대해 직접적으로 논의하고 지시하는 내용을 다루고 있습니다. 이는 기술 주권 및 AI 개발 정책과 매우 밀접하게 관련됩니다.", "evidence_spans": ["Gref announced the cuts after President Vladimir Putin, who was also attending the conference, asked whether Sberbank planned to invest in satellite development.", "Putin responded by urging Sberbank to use AI to reduce non-essential expenses, saying that would free up additional funds.", "Gref replied that the bank’s heavy spending on AI, which stands at about $1 billion annually, left little room for other investments."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQFXI5Uz28roaJVOUF8n_0SCRSydFrbEX-1nB_OB0gMflhl5JLQYAG4BizimFBBLRVraCKgOgOG2cdxCpkiGzJTeDpdb6lLqeb8_26MsyOb7UcowupCV3bZE2qAc58c9-bxt9JMBqE86uV_19mIzRUEXmrEm_l12Y8q9Bx3Tx3uhYvrmTFauVcQ8kDY2NDOAqG12BA7MfITJxdUrLLT_nkUsAzoYYyksz8C4865xMtMW5eC3OxDNU=", "source_title": "lvivherald.com, government.ru, euractiv.com, usip.org, jpost.com, cepa.org, debuglies.com, thehindu.com, world-nuclear-news.org, jamestown.org, meduza.io, fdd.org, carnegieendowment.org, youtube.com, elliptic.co, rbc.ua, espreso.tv, arctictoday.com, cbc.ca, theguardian.com, themoscowtimes.com, mayerbrown.com, www.gov.uk, kremlin.ru", "http_status": 404, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.0, "reasoning": "제공된 웹 페이지는 '404 Not Found' 오류 페이지로, 블라디미르 푸틴과 기술 주권 및 AI 개발 정책에 대한 내용을 포함하고 있지 않아 관련성을 판단할 수 없습니다.", "evidence_spans": [], "error_type": "PAGE_LOAD_ERROR", "politician_mentioned": false, "policy_topic_mentioned": false}]}, {"chain_index": 2, "politician": "블라디미르 푸틴", "policy": "군사-산업 복합체 강화 정책", "industry_or_sector": "방위 산업", "companies": ["Rostec", "Almaz-Antey"], "impact_description": "푸틴의 군사-산업 복합체 정책은 로스테크와 알마즈-안테이를 중심으로 무기 생산 및 수출을 확대했으나, 서방 제재로 인해 핵심 부품 수입에 어려움을 겪고 있습니다. 북한과의 무기 거래 및 인도와의 방산 협력(예: S-400 시스템 공급)을 통해 제재 회피를 시도하고 있습니다.", "impact_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHV4TXzVfSU9-t3M09Tfl4dkV-8-hC1abl7t5aPRY2gmqhNfzuSQhFFRuez2Bp4sXCiJt3BFg1dkI4wKsn89JDI2UMh3oLSgdbenGgA2IPFN10xenbWC2y5LrF6Qw85r1f7YKgSMnM1eYMrfYIZjXslzJJif72kTowYAcYs", "source_title": "ridl.io", "http_status": 200, "ok": true, "label": "PARTIALLY_SUPPORTED", "score": 0.55, "reasoning": "제공된 텍스트는 러시아 군사-산업 복합체(OPK)가 서방 제재로 인해 핵심 부품 수입에 어려움을 겪고 있으며, 제재를 회피하기 위해 북한으로부터 무기를 구매하는 등 노력을 기울이고 있음을 지지합니다. 또한, OPK의 전체 생산량은 증가했다고 언급합니다. 그러나 텍스트는 로스테크와 알마즈-안테이와 같은 특정 기업을 언급하지 않으며, 무기 \"수출 확대\" 주장은 2021년에서 2024년 사이에 러시아의 무기 판매가 92% 감소했다는 내용과 모순됩니다. 인도가 S-400 시스템을 공급받는 방산 협력을 통해 제재 회피를 시도한다는 내용은 텍스트에서 인도가 러시아에 부품을 제공하는 역할을 한다고 설명하므로, 설명된 방식으로는 지지되지 않습니다.", "evidence_spans": ["Although the OPK continued to supply the Russian military with some upgrades, it started to experience an overall decline in quality of its output, as many of the key inputs for its production relied on foreign sourcing.", "In order to overcome the sanctions blockade Russia has had to become increasingly reliant on re-exports from third countries.", "While the OPK’s capacity to produce modern weapons has severely degraded, its total output has increased through a shift in production of higher quantities of less sophisticated munitions.", "Many the systems Russia currently relies on, such as the KN-23 ballistic missile and Shahed UAV, were not developed by Russia but North Korea and Iran, respectively.", "Between 2021 and 2024 Russian arms sales, once one of the largest export sectors of the Russian economy, dropped 92%–equating to a loss of over $ 13 billion in sales.", "Russia has had to purchase munitions from other nations most notably North Korea", "Despite its best efforts Russia has consistently lacked key components the OPK. Shortages include CNC machines, industrial lubricants, and microelectronics.", "In the case of India, Russia actively invested in developing manufacturing capability to facilitate export to Kyrgyzstan then re-export to Russia.", "Russia’s OPK delivered a significantly large increase in its output since the start of the invasion in 2022."], "error_type": "NONE"}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQF0D2oMJSmoTYK-HfWV0Ud8xRwhCCrdJ7CRurwnmISwnDmPq5x2wA4Y4P1-j4Kl3q0HQTZmRhe4cNwuJM4kFTaeUuODEdUvyjxrH1081prQWFmHiTJU7V8ab5nIUThGeIQp22afji-UYksk0PePIsE=", "source_title": "ukrainesarmsmonitor.substack.com", "http_status": 200, "ok": true, "label": "PARTIALLY_SUPPORTED", "score": 0.6, "reasoning": "제공된 텍스트는 로스테크가 러시아의 주요 방위 산업체이며 러시아의 군사-산업 복합체가 무기 생산을 확대하고 있음을 언급합니다. 또한 서방 제재로 인해 핵심 부품 수입에 어려움을 겪고 있으며 제재 회피를 시도하고 있다는 내용도 지지합니다. 그러나 알마즈-안테이에 대한 언급은 없으며, 북한과의 무기 거래나 인도와의 S-400 시스템 공급을 통한 제재 회피 시도에 대한 구체적인 내용은 텍스트에서 찾을 수 없습니다. 인도는 러시아 은행의 해외 지점과 관련하여 언급되지만, 방산 협력과는 무관합니다.", "evidence_spans": ["U.S.-designated State Corporation Rostec", "expanding opportunities for both Russians and non-Russians to profit from the Kremlin’s war machine by making investments in Russian sovereign debt, Russian corporations, and leading Russian defense entities, including U.S.-designated State Corporation Rostec", "Russia’s war economy is deeply isolated from the international financial system, leaving the Kremlin’s military desperate for access to the outside world.", "Today’s actions strike at their remaining avenues for international materials and equipment, including their reliance on critical supplies from third countries.", "diminishing Russia’s ability to benefit from access to foreign technology, equipment, software, and IT services.", "Russia relies on complex transnational supply chains to feed its war machine and enable production of materiel to sustain its war effort. Similar networks also attempt to evade sanctions using convoluted schemes to move money and other valuable goods and assets."], "error_type": "NONE"}], "attribution_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHV4TXzVfSU9-t3M09Tfl4dkV-8-hC1abl7t5aPRY2gmqhNfzuSQhFFRuez2Bp4sXCiJt3BFg1dkI4wKsn89JDI2UMh3oLSgdbenGgA2IPFN10xenbWC2y5LrF6Qw85r1f7YKgSMnM1eYMrfYIZjXslzJJif72kTowYAcYs", "source_title": "ridl.io", "http_status": 200, "ok": true, "label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "이 기사는 러시아의 군사-산업 복합체(OPK)가 제재의 영향에도 불구하고 생산 능력을 유지하고 강화하려는 노력을 광범위하게 다루고 있습니다. 비록 본문에서 푸틴 대통령이 직접적으로 언급되지는 않지만, 관련 기사 제목에서 \"푸틴의 제재 회피 대전략\"이 언급되어 그가 이 정책과 밀접하게 연관되어 있음을 보여줍니다. 또한, 러시아 정부의 OPK 관련 노력은 푸틴 대통령의 정책으로 해석될 수 있습니다.", "evidence_spans": ["Military-Industrial Complex and Sanctions Impact", "The Russian Military-industrial Complex (OPK) is a vast and multifaceted component of the Russian economy.", "The Russian government redoubled its efforts to overhaul its legacy military, which was still a hodgepodge of Soviet-era conscription and professional forces, into a smaller, more agile, and more capable force.", "Russia’s OPK delivered a significantly large increase in its output since the start of the invasion in 2022. This increase has required massive state expenditures and relied on vast Soviet-era stocks of munitions and equipment.", "Putin’s Grand Strategy for Sanctions Evasion"], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQF0D2oMJSmoTYK-HfWV0Ud8xRwhCCrdJ7CRurwnmISwnDmPq5x2wA4Y4P1-j4Kl3q0HQTZmRhe4cNwuJM4kFTaeUuODEdUvyjxrH1081prQWFmHiTJU7V8ab5nIUThGeIQp22afji-UYksk0PePIsE=", "source_title": "ukrainesarmsmonitor.substack.com", "http_status": 200, "ok": true, "label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "기사는 미국 재무부가 러시아의 군사-산업 복합체와 전쟁 경제를 약화시키기 위한 제재 조치를 상세히 설명하고 있습니다. 블라디미르 푸틴 러시아 대통령은 크렘린의 전쟁 기계와 주요 러시아 방위 산업체에 자본을 유치하기 위한 조치를 승인한 것으로 언급되어, 푸틴과 군사-산업 복합체 강화 정책이 직접적으로 관련되어 있음을 보여줍니다.", "evidence_spans": ["U.S.-designated Russian President Vladimir Putin has approved a series of measures to further attract capital through MOEX from both Russian and non-Russian persons from “friendly countries”—expanding opportunities for both Russians and non-Russians to profit from the Kremlin’s war machine by making investments in Russian sovereign debt, Russian corporations, and leading Russian defense entities", "As Russia Completes Transition to a Full War Economy, Treasury Takes Sweeping Aim at Foundational Financial Infrastructure and Access to Third Country Support", "Treasury is targeting the architecture of Russia’s financial system, which has been reoriented to facilitate investment into its defense industry and acquisition of goods needed to further its aggression against Ukraine.", "Today, Treasury is broadening the definition of Russia’s military-industrial base to include all persons blocked pursuant to Executive Order (E.O.) 14024."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}]}], "gold_eval": {"similarity_score": 0.75, "reasoning": "두 보고서는 이재명 의원의 기본소득 및 친환경 에너지 정책을 공통적으로 다루며 관련 산업과 기업을 유사하게 분석했습니다. 그러나 부동산 정책에서 Gold Report는 민간 시장 규제를, Model Report는 공공 주거 확대를 강조하여 접근 방식이 달랐습니다. Gold Report는 기본소득의 플랫폼 산업 영향과 신재생에너지의 이차전지 산업 연관성을 더 깊이 다루어 더 구체적이고 균형 잡힌 시장 파급 효과 설명을 제공했습니다. Model Report는 긍정적 측면에 집중하는 경향이 있었습니다.", "model_unique_points": ["청년 주거 안정화를 위한 공공임대주택 확대 정책과 공공 건설 부문의 영향 분석.", "친환경 에너지 전환 정책에서 RE100 지원을 통한 기업의 재생에너지 사용 확대 측면 강조."], "gold_unique_points": ["다주택자 규제 강화를 통한 민간 부동산 시장 안정화 정책과 그에 따른 민간 건설사 영향 분석.", "기본소득 정책이 플랫폼 산업 및 특정 온라인 유통 기업에 미치는 영향에 대한 심층 분석.", "신재생에너지 정책에서 이차전지 산업 및 관련 기업의 성장 가능성 강조."]}}} +{"query": "Rishi Sunak", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "Rishi Sunak", "policy": "초과이익세(2023-2030)", "industry_or_sector": "에너지", "companies": ["Shell", "BP"], "impact_description": "Rishi Sunak의 2023-2030년 에너지 기업에 대한 초과이익세 정책은 Shell과 BP를 포함한 42개 기업의 신규 투자 계획을 위협했으며, 2000억 파운드 규모의 총 에너지 투자(재생에너지 포함)에 부정적인 영향을 미쳤다. 세금 재조정은 에너지 안보와 탈탄소화 노력을 저해할 수 있다는 분석이 있다.", "impact_results": [{"url": "https://taxfoundation.org/blog/uk-windfall-taxes/", "source_title": "UK Windfall Taxes", "http_status": 200, "ok": true, "label": "PARTIALLY_SUPPORTED", "score": 0.7, "reasoning": "제공된 원문은 42개 기업이 신규 투자 계획과 2천억 파운드 규모의 총 에너지 투자(재생에너지 포함)에 대한 위협을 경고했으며, 초과이익세가 에너지 안보와 탈탄소화 노력을 저해할 수 있다는 분석을 포함하고 있어 영향 설명의 대부분을 뒷받침합니다. 또한 세금의 2030년 연장도 언급되어 있습니다. 그러나 원문에는 Shell과 BP가 이 42개 기업에 명시적으로 포함되어 있다는 언급은 없습니다.", "evidence_spans": ["Forty-two companies have warned that the official plans threaten 80 percent of new investments in oil and gas and over £200 billion of investment in all forms of energy, including renewables.", "The constant changes in the “energy profits levy” and its extension to 2030 create an unpredictable and blustery tax environment that would hurt oil and gas production, investment, and long-term growth.", "Windfall Taxes Could Undermine the UK’s Energy Security", "Not only are these windfall taxes taking capital away from more carbon-intensive energy production, but they are also removing greatly needed capital from the companies that are investing in clean energy.", "in July 2024, the new labor government extended the tax for an additional year to March 2030"], "error_type": "NONE"}], "attribution_results": [{"url": "https://taxfoundation.org/blog/uk-windfall-taxes/", "source_title": "UK Windfall Taxes", "http_status": 200, "ok": true, "label": "WEAKLY_RELATED", "score": 0.7, "reasoning": "이 기사는 영국의 초과이익세(windfall tax)에 대해 상세히 다루며, 2023년부터 2030년까지의 연장 과정을 설명합니다. 리시 수낙은 2023년 6월 당시 보수당 정부의 총리로서 세금 연장(2028년 3월까지)에 관여했지만, 기사에서 그의 이름이 명시적으로 언급되지는 않았습니다. 2030년까지의 최종 연장은 \"새로운 노동당 정부\"에 의해 이루어졌다고 명시되어 있어, 정책과의 연관성은 높으나 정치인과의 직접적인 연관성은 약합니다.", "evidence_spans": ["the UK’s labor government is extending the tax to 2030.", "However, in June 2023, the conservative government at the time announced that the windfall tax would remain in place until March 2028", "in July 2024, the new labor government extended the tax for an additional year to March 2030"], "error_type": "NONE", "politician_mentioned": false, "policy_topic_mentioned": true}]}, {"chain_index": 1, "politician": "Rishi Sunak", "policy": "NHS 계약 정책", "industry_or_sector": "기술/의료", "companies": ["Infosys"], "impact_description": "Rishi Sunak의 부인 Akshata Murty가 Infosys에 5억 9천만 파운드의 지분을 보유하고 있으며, 이 회사는 NHS와 2억 5천만 파운드 규모의 계약을 체결했다. 이는 이해 상충 문제를 제기하고 있다.", "impact_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGpaczbS4f1h444dSqJj9iKr5-9PTx6mL78SkaPsrXL3zplrsoOn_zlaLuEMURFgfB4t1_kUYZJX7gafH8Il6QU_9nZwTXoCIRi9n-Aeo2dYeVQi0BAdPB9xn7chISsAvOHORxd0oWJXX9rkmQKXUm7iFMAfsChy835U-AynN4jgZaJxv2Q0Ti77YfrJom6I27Wfo-RHcRzSBXIQAkjow=", "source_title": "Corporate Watch: Rishi Sunak's ties to Infosys", "http_status": 404, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 소스 텍스트는 '404. That’s an error.' 메시지를 포함하는 오류 페이지이므로, 영향 설명의 내용을 평가할 수 있는 정보가 전혀 없습니다.", "evidence_spans": [], "error_type": "PAGE_LOAD_ERROR"}], "attribution_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGpaczbS4f1h444dSqJj9iKr5-9PTx6mL78SkaPsrXL3zplrsoOn_zlaLuEMURFgfB4t1_kUYZJX7gafH8Il6QU_9nZwTXoCIRi9n-Aeo2dYeVQi0BAdPB9xn7chISsAvOHORxd0oWJXX9rkmQKXUm7iFMAfsChy835U-AynN4jgZaJxv2Q0Ti77YfrJom6I27Wfo-RHcRzSBXIQAkjow=", "source_title": "Corporate Watch: Rishi Sunak's ties to Infosys", "http_status": 404, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "페이지가 404 오류를 반환하여 내용을 평가할 수 없습니다.", "evidence_spans": [], "error_type": "PAGE_LOAD_ERROR", "politician_mentioned": false, "policy_topic_mentioned": false}]}, {"chain_index": 2, "politician": "Rishi Sunak", "policy": "AI 및 금융 규제 정책", "industry_or_sector": "기술/금융", "companies": ["Microsoft", "Anthropic", "Goldman Sachs"], "impact_description": "Rishi Sunak은 총리직 이후 Microsoft, Anthropic, Goldman Sachs의 고문으로 활동하며 거시경제 및 지정학 전략 분야에서 영향력을 행사하고 있다. ACOBA의 제한으로 인해 영국 정부에 대한 로비는 금지되어 있다.", "impact_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEHJ1-yXyJn0V2rpyzeWgyG45_GVXqCDiJqGm4_HrdO_gQoF1L_x_wo-EXKU1lQEo9fWNIU4gl9rSBZ3q0kF3WXWjP28Fq17RYlYINHVyX9eg5VwG-6C8-nQ_SNM_NBntxxxuV5T4ABYFwnM4KB97bg1e9rS5faqTDZaaqEvWXvhgMMx_sviByQbe4lJ83QPBGRTAUHkk5Rk80D-NhJ_CIK_On491uS8i0NavDzP6MKcDU=", "source_title": "The Guardian: Rishi Sunak's post-premiership roles", "http_status": 200, "ok": true, "label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 기사는 리시 수낙이 총리직 이후 마이크로소프트, 앤트로픽, 골드만삭스의 고문으로 활동하며 거시경제 및 지정학적 동향에 대한 전략적 관점을 제공할 것이라고 명시하고 있습니다. 또한, ACOBA의 조건에 따라 영국 정부에 대한 로비 활동은 없을 것이라고 분명히 언급하고 있어, 영향 설명의 모든 핵심 내용이 뒷받침됩니다.", "evidence_spans": ["Rishi Sunak has been appointed as a senior adviser by the US technology companies Microsoft and Anthropic.", "They add to his roles as a senior adviser to Goldman Sachs International, the investment bank", "Sunak said that he will provide “high-level strategic perspectives on macro-economic and geopolitical trends” and will not advise on UK policy matters.", "But Sunak told the committee the role will be internallyoriented and will not involve any lobbying.", "This internally-focused, part-time advisory role fully complies with the conditions of Acoba, and Mr Sunak is donating his entire compensation to the Richmond Project charity.”"], "error_type": "NONE"}], "attribution_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEHJ1-yXyJn0V2rpyzeWgyG45_GVXqCDiJqGm4_HrdO_gQoF1L_x_wo-EXKU1lQEo9fWNIU4gl9rSBZ3q0kF3WXWjP28Fq17RYlYINHVyX9eg5VwG-6C8-nQ_SNM_NBntxxxuV5T4ABYFwnM4KB97bg1e9rS5faqTDZaaqEvWXvhgMMx_sviByQbe4lJ83QPBGRTAUHkk5Rk80D-NhJ_CIK_On491uS8i0NavDzP6MKcDU=", "source_title": "The Guardian: Rishi Sunak's post-premiership roles", "http_status": 200, "ok": true, "label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "이 기사는 리시 수낙의 총리 퇴임 후 마이크로소프트, Anthropic(AI 기업), 골드만삭스(금융 기업)에서의 자문 역할을 상세히 다루고 있습니다. 기사는 수낙이 총리 재임 시절 AI 정책(AI 안전 정상회의, AI 안전 연구소)에 깊이 관여했으며, 그의 새로운 역할이 AI 및 금융 규제와 관련하여 잠재적인 이해 상충 및 영향력 행사 가능성에 대한 규제 당국의 우려를 불러일으킨다고 명시하고 있어, 주어진 정치인과 정책 주제에 매우 밀접하게 관련됩니다.", "evidence_spans": ["Rishi Sunak takes advisory roles with Microsoft and AI firm Anthropic", "Former UK prime minister told post-ministerial jobs watchdog roles would not involve lobbying or UK policy influence", "Rishi Sunak has been appointed as a senior adviser by the US technology companies Microsoft and Anthropic.", "They add to his roles as a senior adviser to Goldman Sachs International, the investment bank, and speechmaker to investment firms including Bain Capital and Makena Capital in the US, which have netted him over £150,000 a talk.", "The former Conservative leader unveiled a £2.5bn deal with Microsoft’s chief executive, Brad Smith, at the Bletchley Park AI summit in November 2023, in which Microsoft announced what Sunak called a “historic” investment in new datacentres.", "Acoba said that while AI was a significant priority when Sunak was PM, including enacting legislation affecting companies in the AI sector, “there is no suggestion any decisions or actions were taken in office in expectation of this role, and the Cabinet Office confirmed it is not aware of any decisions you made that were specific to Anthropic, as opposed to sector wide.”", "It said, “there is a reasonable concern that your appointment could be seen to offer unfair access and influence within the UK government”, which was heightened “at a time of intense debate and lobbying around the world” on the right approach to regulating the increasingly powerful technology."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}]}, {"chain_index": 3, "politician": "Rishi Sunak", "policy": "보수당 정치 자금 정책", "industry_or_sector": "자동차/부동산/화학", "companies": ["Mansour Group", "Telereal Trillium", "Indorama Ventures"], "impact_description": "Rishi Sunak의 보수당 지도부 시절 Mohamed Mansour(Mansour Group), Graham Edwards(Telereal Trillium), Amit Lohia(Indorama Ventures) 등으로부터 대규모 정치 자금을 지원받았다. 이는 정책 결정에 간접적인 영향을 미칠 수 있다.", "impact_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEHJ1-yXyJn0V2rpyzeWgyG45_GVXqCDiJqGm4_HrdO_gQoF1L_x_wo-EXKU1lQEo9fWNIU4gl9rSBZ3q0kF3WXWjP28Fq17RYlYINHVyX9eg5VwG-6C8-nQ_SNM_NBntxxxuV5T4ABYFwnM4KB97bg1e9rS5faqTDZaaqEvWXvhgMMx_sviByQbe4lJ83QPBGRTAUHkk5Rk80D-NhJ_CIK_On491uS8i0NavDzP6MKcDU=", "source_title": "The Guardian: Conservative Party donations", "http_status": 200, "ok": true, "label": "UNSUPPORTED", "score": 0.1, "reasoning": "제공된 원문은 리시 수낙이 총리직을 마친 후 마이크로소프트와 앤트로픽에서 자문 역할을 맡은 것에 대한 내용입니다. 원문에는 Mansour Group, Telereal Trillium, Indorama Ventures 또는 Mohamed Mansour, Graham Edwards, Amit Lohia로부터 리시 수낙이나 보수당이 대규모 정치 자금을 지원받았다는 내용이 전혀 언급되어 있지 않습니다.", "evidence_spans": [], "error_type": "NONE"}], "attribution_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEHJ1-yXyJn0V2rpyzeWgyG45_GVXqCDiJqGm4_HrdO_gQoF1L_x_wo-EXKU1lQEo9fWNIU4gl9rSBZ3q0kF3WXWjP28Fq17RYlYINHVyX9eg5VwG-6C8-nQ_SNM_NBntxxxuV5T4ABYFwnM4KB97bg1e9rS5faqTDZaaqEvWXvhgMMx_sviByQbe4lJ83QPBGRTAUHkk5Rk80D-NhJ_CIK_On491uS8i0NavDzP6MKcDU=", "source_title": "The Guardian: Conservative Party donations", "http_status": 200, "ok": true, "label": "WEAKLY_RELATED", "score": 0.6, "reasoning": "이 기사는 리시 수낙의 총리 퇴임 후 자문 역할과 그가 설립한 자선 단체에 관한 것이며, 보수당의 정치 자금 정책에 대해서는 언급하지 않습니다.", "evidence_spans": ["Rishi Sunak takes advisory roles with Microsoft and AI firm Anthropic", "Rishi Sunak has been appointed as a senior adviser by the US technology companies Microsoft and Anthropic.", "He will divert his salary from both jobs into the Richmond Project, a charity which sets out to boost social mobility through numeracy that he founded with his wife, Akshata Murty, earlier this year."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": false}]}, {"chain_index": 4, "politician": "Rishi Sunak", "policy": "건강 정책", "industry_or_sector": "의료", "companies": ["Orchard Therapeutics", "Guardant Health", "Independent Healthcare Providers Network"], "impact_description": "Rishi Sunak 정부는 로비 회사 Evoke Incisive Health의 창립 파트너인 Bill Morgan을 건강 정책 고문으로 임명했다. 이 회사는 Orchard Therapeutics, Guardant Health, Independent Healthcare Providers Network 등을 대표하며, 민간 의료 부문에 대한 영향력을 행사하고 있다.", "impact_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEHJ1-yXyJn0V2rpyzeWgyG45_GVXqCDiJqGm4_HrdO_gQoF1L_x_wo-EXKU1lQEo9fWNIU4gl9rSBZ3q0kF3WXWjP28Fq17RYlYINHVyX9eg5VwG-6C8-nQ_SNM_NBntxxxuV5T4ABYFwnM4KB97bg1e9rS5faqTDZaaqEvWXvhgMMx_sviByQbe4lJ83QPBGRTAUHkk5Rk80D-NhJ_CIK_On491uS8i0NavDzP6MKcDU=", "source_title": "The Guardian: Rishi Sunak's government appointments", "http_status": 200, "ok": true, "label": "UNSUPPORTED", "score": 0.1, "reasoning": "제공된 원문은 Rishi Sunak의 퇴임 후 Microsoft 및 Anthropic과 같은 기술 회사에서의 자문 역할에 관한 것입니다. 원문에는 영향 설명에 언급된 Bill Morgan, Evoke Incisive Health, Orchard Therapeutics, Guardant Health, Independent Healthcare Providers Network 또는 건강 정책 고문 임명에 대한 정보가 전혀 없습니다.", "evidence_spans": [], "error_type": "NONE"}], "attribution_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEHJ1-yXyJn0V2rpyzeWgyG45_GVXqCDiJqGm4_HrdO_gQoF1L_x_wo-EXKU1lQEo9fWNIU4gl9rSBZ3q0kF3WXWjP28Fq17RYlYINHVyX9eg5VwG-6C8-nQ_SNM_NBntxxxuV5T4ABYFwnM4KB97bg1e9rS5faqTDZaaqEvWXvhgMMx_sviByQbe4lJ83QPBGRTAUHkk5Rk80D-NhJ_CIK_On491uS8i0NavDzP6MKcDU=", "source_title": "The Guardian: Rishi Sunak's government appointments", "http_status": 200, "ok": true, "label": "UNRELATED", "score": 0.1, "reasoning": "이 기사는 리시 수낙의 총리 퇴임 후 마이크로소프트와 앤트로픽의 고문직 수락에 관한 내용입니다. 기사 본문에는 건강 정책에 대한 언급이 전혀 없습니다.", "evidence_spans": ["Rishi Sunak has been appointed as a senior adviser by the US technology companies Microsoft and Anthropic."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": false}]}], "gold_eval": {"similarity_score": 0.75, "reasoning": "두 보고서는 이재명 의원의 기본소득 및 친환경 에너지 정책을 공통적으로 다루며 관련 산업과 기업을 유사하게 분석했습니다. 그러나 부동산 정책에서 Gold Report는 민간 시장 규제를, Model Report는 공공 주거 확대를 강조하여 접근 방식이 달랐습니다. Gold Report는 기본소득의 플랫폼 산업 영향과 신재생에너지의 이차전지 산업 연관성을 더 깊이 다루어 더 구체적이고 균형 잡힌 시장 파급 효과 설명을 제공했습니다. Model Report는 긍정적 측면에 집중하는 경향이 있었습니다.", "model_unique_points": ["청년 주거 안정화를 위한 공공임대주택 확대 정책과 공공 건설 부문의 영향 분석.", "친환경 에너지 전환 정책에서 RE100 지원을 통한 기업의 재생에너지 사용 확대 측면 강조."], "gold_unique_points": ["다주택자 규제 강화를 통한 민간 부동산 시장 안정화 정책과 그에 따른 민간 건설사 영향 분석.", "기본소득 정책이 플랫폼 산업 및 특정 온라인 유통 기업에 미치는 영향에 대한 심층 분석.", "신재생에너지 정책에서 이차전지 산업 및 관련 기업의 성장 가능성 강조."]}}} +{"query": "Emmanuel Macron", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "Emmanuel Macron", "policy": "에너지 전환 정책", "industry_or_sector": "에너지", "companies": ["TotalEnergies"], "impact_description": "에마뉘엘 마크롱 대통령은 TotalEnergies와의 협력을 통해 프랑스의 에너지 전환 정책을 추진했으며, 이는 지속 가능한 항공 연료(SAF) 공급 및 수소 연구 개발에 기여했습니다. 마크롱은 TotalEnergies가 프랑스 경제에 중요하다고 강조하며 주요 상장을 유지하도록 촉구했습니다.", "impact_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHWsWaNd-56tg2DpcQCzLFC47nf5D-9DV-B7s5rhPCsl64Slj_-SMbC5ShUb8nj1Jk6d6cR5LDV5pHz_6Wic0APvHO9_8mfpRXnQ0lIvO-GeskQfK6B4pvvd4i01Gb_ZSAJ6qDlA0u5lLvn0flL91FV8DG5w4kkee0tzTThEJghO46DOHCiNpToJzwaSr9MjPyan2kahwmBf9klWqtHNaQHjYvjnerxNGuF8VtTjJ1zyhbX6INqqo05a1dz7JZE", "source_title": "totalenergies.com", "http_status": 200, "ok": true, "label": "UNSUPPORTED", "score": 0.2, "reasoning": "제공된 원문은 TotalEnergies와 Airbus 간의 지속 가능한 항공 연료(SAF) 파트너십 및 항공 탈탄소화 노력을 상세히 설명합니다. 그러나 영향 설명의 핵심 주장인 에마뉘엘 마크롱 대통령이 TotalEnergies와의 협력을 통해 프랑스의 에너지 전환 정책을 추진했다는 내용, TotalEnergies가 프랑스 경제에 중요하다고 강조하며 주요 상장을 유지하도록 촉구했다는 내용, 그리고 수소 연구 개발에 기여했다는 내용은 원문에 언급되어 있지 않습니다.", "evidence_spans": [], "error_type": "NONE"}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHCP0_wWHbov-PR6ogtTc_R8bOnL85EdbjwaD59eUf1EmRf6Zyx6pBZ-jTQxdnbUABQpuUnPbZFqevsCucIZhXhXqYb_sCQNAwTLP1Sccv0P2E9Y34nv6cZI1zC1dbMS_3kJKVCfIa2ZaFXr576CN7I4i0-nlynxgK_Xskmk-pz28FNyBRaT9ds1I9WcjscyBjmvaWf5qnCxoz-Skc1KMdxgE7aV3-y4tOGSYG9Tiup8okPH206QjPItHix0x_e", "source_title": "theguardian.com", "http_status": 200, "ok": true, "label": "UNSUPPORTED", "score": 0.1, "reasoning": "제공된 원문은 TotalEnergies나 프랑스의 에너지 전환 정책에 대한 언급이 전혀 없습니다. 원문은 르노-닛산 자동차 산업과 프랑스 정부의 개입에 관한 내용입니다. 따라서 영향 설명의 핵심 내용이 원문에서 전혀 지지되지 않습니다.", "evidence_spans": [], "error_type": "NONE"}], "attribution_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHWsWaNd-56tg2DpcQCzLFC47nf5D-9DV-B7s5rhPCsl64Slj_-SMbC5ShUb8nj1Jk6d6cR5LDV5pHz_6Wic0APvHO9_8mfpRXnQ0lIvO-GeskQfK6B4pvvd4i01Gb_ZSAJ6qDlA0u5lLvn0flL91FV8DG5w4kkee0tzTThEJghO46DOHCiNpToJzwaSr9MjPyan2kahwmBf9klWqtHNaQHjYvjnerxNGuF8VtTjJ1zyhbX6INqqo05a1dz7JZE", "source_title": "totalenergies.com", "http_status": 200, "ok": true, "label": "WEAKLY_RELATED", "score": 0.5, "reasoning": "기사는 에어버스와 토탈에너지의 지속 가능한 항공 연료 파트너십에 대한 내용으로, 항공 산업의 탈탄소화 및 에너지 전환 정책과 밀접하게 관련되어 있습니다. 그러나 에마뉘엘 마크롱 대통령은 전혀 언급되지 않습니다.", "evidence_spans": ["Airbus and TotalEnergies have signed a strategic partnership to meet the challenges of aviation decarbonization with sustainable aviation fuels.", "In line with the objective of achieving net carbon neutrality of aviation by 2050, this partnership aims to contribute to the reduction of the sector's CO2 emissions, in which Sustainable Aviation Fuels (SAF) play a key role.", "The development of sustainable aviation fuels is at the heart of our Company's transition strategy."], "error_type": "NONE", "politician_mentioned": false, "policy_topic_mentioned": true}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHCP0_wWHbov-PR6ogtTc_R8bOnL85EdbjwaD59eUf1EmRf6Zyx6pBZ-jTQxdnbUABQpuUnPbZFqevsCucIZhXhXqYb_sCQNAwTLP1Sccv0P2E9Y34nv6cZI1zC1dbMS_3kJKVCfIa2ZaFXr576CN7I4i0-nlynxgK_Xskmk-pz28FNyBRaT9ds1I9WcjscyBjmvaWf5qnCxoz-Skc1KMdxgE7aV3-y4tOGSYG9Tiup8okPH206QjPItHix0x_e", "source_title": "theguardian.com", "http_status": 200, "ok": true, "label": "WEAKLY_RELATED", "score": 0.55, "reasoning": "기사는 프랑스 정부의 르노-닛산 개입에 대한 에마뉘엘 마크롱의 역할을 다루고 있지만, 주어진 정책인 '에너지 전환 정책'에 대한 언급은 전혀 없습니다. 마크롱은 기사의 핵심 인물이지만, 정책 주제는 다루어지지 않습니다.", "evidence_spans": ["the French government, led by the economy minister and former Rothschild banker Emmanuel Macron, increased its stake in Renault to 19.7%", "Critics feared that Macron was attempting a backdoor nationalisation of Renault"], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": false}]}, {"chain_index": 1, "politician": "Emmanuel Macron", "policy": "방위 산업 전략", "industry_or_sector": "자동차 및 방위 산업", "companies": ["Renault"], "impact_description": "마크롱 정부는 Renault와 협력하여 우크라이나를 위한 드론 생산을 추진했으며, Rafale 전투기 공식 차량으로 Renault를 지정하는 등 방위 산업 파트너십을 강화했습니다.", "impact_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQELh15E7PvLOduOkWbZUe1GIvZa8_eB2CL8GZGJpCJ5p45ys81F_d_cx-QlsJVgATSDmaAWXY_8J307av4tg_NMBtlITmp34ib5-v0NN3yhfbxCMkhnj-C1j9TGj9Z73cp141QP278dfgpQloRWYiI26JgZ8032LK_TgLVxHNLa27k6xe1HUMGuVttegOIwhKLwZbUDwFmFsi3sjclI-5kAIhzo9bBHmLZPXgPn", "source_title": "autovistagroup.com", "http_status": 200, "ok": true, "label": "UNSUPPORTED", "score": 0.1, "reasoning": "제공된 원문에는 마크롱 정부의 산업 투자 계획에 대한 내용이 있지만, Renault가 우크라이나를 위한 드론 생산에 협력했거나 Rafale 전투기의 공식 차량으로 지정되었다는 내용, 또는 방위 산업 파트너십을 강화했다는 내용은 전혀 언급되어 있지 않습니다.", "evidence_spans": [], "error_type": "NONE"}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHlei8j4hausI_WGX30z8W5M1ovw1jUyHLEZidHupnfFZpJBp8EHhbppC5ejl6UZu_5SQWV5eFyMX7BfSUuHabjW63yrtGU7joiSxfBTtf2tEd_qidW8Yf3hh2pOMs6Xp65aimTTRLfWTWfZqXGW6NLRZhyWvbJ76SUZVq_Hc8aXC156HNWfw==", "source_title": "dronexl.co", "http_status": 200, "ok": true, "label": "PARTIALLY_SUPPORTED", "score": 0.6, "reasoning": "출처 텍스트에 따르면 프랑스 국방부가 르노와 우크라이나를 위한 드론 생산 가능성에 대해 접촉했으며 논의가 진행 중입니다. 하지만 르노는 아직 결정된 바가 없다고 밝혔으며, 이는 여전히 탐색 단계에 있음을 나타냅니다. 반면, 라팔 전투기 공식 차량으로 르노를 지정하는 등 방위 산업 파트너십을 강화했다는 내용은 텍스트에서 전혀 언급되지 않습니다. 따라서 영향 설명의 일부만 지원됩니다.", "evidence_spans": ["The French defense ministry has contacted automaker Renault about potential drone production, following suggestions that French firms could aid manufacturing in Ukraine.", "“We have been contacted by the defence ministry about the possibility of producing drones. Discussions have taken place, but no decision has been taken at this stage,” Renault told Reuters.", "Even the Renault exploration we first covered in June 2025 remains in discussion phase while Denmark, Netherlands, and UK partnerships are already producing hardware."], "error_type": "NONE"}], "attribution_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQELh15E7PvLOduOkWbZUe1GIvZa8_eB2CL8GZGJpCJ5p45ys81F_d_cx-QlsJVgATSDmaAWXY_8J307av4tg_NMBtlITmp34ib5-v0NN3yhfbxCMkhnj-C1j9TGj9Z73cp141QP278dfgpQloRWYiI26JgZ8032LK_TgLVxHNLa27k6xe1HUMGuVttegOIwhKLwZbUDwFmFsi3sjclI-5kAIhzo9bBHmLZPXgPn", "source_title": "autovistagroup.com", "http_status": 200, "ok": true, "label": "WEAKLY_RELATED", "score": 0.6, "reasoning": "기사는 에마뉘엘 마크롱 대통령이 발표한 300억 유로 규모의 산업 투자 계획인 \"프랑스 2030\"에 대해 상세히 다루고 있습니다. 마크롱 대통령은 이 계획의 핵심 인물로 여러 번 언급됩니다. 그러나 이 계획의 세부 내용은 주로 자동차 산업, 청정 에너지, 반도체 등에 초점을 맞추고 있으며, \"방위 산업 전략\"이라는 특정 정책 주제는 명시적으로 언급되거나 중심적으로 다루어지지 않습니다.", "evidence_spans": ["French president Emmanuel Macron has laid out a €30 billion industrial investment plan. Dubbed ‘France 2030’, it aims to create new technological champions and modernise the country’s economy in the process.", "How will Macron’s €30 billion revival plan impact transport in France?"], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": false}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHlei8j4hausI_WGX30z8W5M1ovw1jUyHLEZidHupnfFZpJBp8EHhbppC5ejl6UZu_5SQWV5eFyMX7BfSUuHabjW63yrtGU7joiSxfBTtf2tEd_qidW8Yf3hh2pOMs6Xp65aimTTRLfWTWfZqXGW6NLRZhyWvbJ76SUZVq_Hc8aXC156HNWfw==", "source_title": "dronexl.co", "http_status": 200, "ok": true, "label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "기사는 에마뉘엘 마크롱 대통령이 프랑스의 방위 산업 전략, 특히 우크라이나와의 드론 생산 협력을 가속화하기 위한 노력에 직접적으로 관여하고 있음을 상세히 설명합니다. 마크롱 대통령의 회의와 프랑스 국방부의 드론 생산 관련 전략이 명확하게 언급됩니다.", "evidence_spans": ["The November 17 meeting between Presidents Emmanuel Macron and Volodymyr Zelenskyy in Paris brought together French defense companies and Ukrainian manufacturers in a bid to accelerate cooperation, according to Reuters.", "France’s approach includes exploring partnerships beyond traditional defense contractors. The French defense ministry has contacted automaker Renault about potential drone production, following suggestions that French firms could aid manufacturing in Ukraine.", "Defense Minister Sébastien Lecornu hinted at this strategy, stating France would establish partnerships between major carmakers and small defense firms to equip production lines in Ukraine."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}]}, {"chain_index": 2, "politician": "Emmanuel Macron", "policy": "프랑스 2030 투자 계획", "industry_or_sector": "항공우주", "companies": ["Airbus"], "impact_description": "마크롱 정부는 Airbus와 협력하여 수소 연료 전지 항공기 개발을 포함한 '프랑스 2030' 전략을 추진했으며, 이는 항공우주 산업에 40억 유로를 투자하는 등 저탄소 항공기 개발을 가속화했습니다.", "impact_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHbw--LeBzQVbXvgIeDmUjJ_mE3pKSn6opGWMhr7WalXBsnqLa47__EGEPFChX_ohj5_pHcftnf6zPS5fgmoDIOFt4dsxJuvDFdEb1fV44c12bTwgIfrDOKTjXxX6HZZUwplxkwsXu4d2hBoT5L2U71lQ0W2OU9XA6E7EgK218HV422fP1z0srsauDeQUpoK0E6Z3-Uyv5H5gKb0z7ebQs76Q==", "source_title": "sciencebusiness.net", "http_status": 200, "ok": true, "label": "PARTIALLY_SUPPORTED", "score": 0.7, "reasoning": "기사에는 마크롱 정부의 '프랑스 2030' 전략, 항공우주 산업에 대한 40억 유로 투자, 2030년까지 저탄소 항공기 개발 목표, 그리고 에어버스가 수소 연료 전지 항공기를 개발 중이라는 내용이 명시되어 있습니다. 하지만 마크롱 정부가 에어버스와 직접적으로 협력하여 수소 연료 전지 항공기를 개발하고 있다는 명시적인 언급은 없습니다. 정부는 산업 전반에 투자하고 에어버스는 자체적으로 관련 기술을 개발하는 것으로 보입니다.", "evidence_spans": ["Macron unveils €30B innovation plan to make French industry great again", "In addition, there is €4 billion for the aerospace industry and research projects to that will pave the way for France build the world’s first low-carbon airplane by 2030.", "Airbus is now working on concept aircraft powered by hydrogen fuel cells, but the project is in its infancy and requires more investment."], "error_type": "NONE"}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQFvLSh0JPBG31aWx5cB566OMTc7ntfH4R_2JZP-doVJsc5xrWRvQ8vU51KeW41PqQGirIAceJivH3qyiy9M8Sz0tgL23uq4iVVhN7WMlYzBEjDuDORH5tEkFRt6SSUFnElhx7XOyR0VLJAK1UxASYf_5NVrIscvO55hYtbQj4PGH5oyeDf-ux2AJSQ6-19H01BlkC9A06KSlbfAk6t2QFPE7EFoxkbU", "source_title": "aviationweek.com", "http_status": 200, "ok": true, "label": "UNSUPPORTED", "score": 0.1, "reasoning": "제공된 텍스트는 마크롱 정부가 에어버스(Airbus)와 협력하여 수소 연료 전지 항공기 개발을 포함한 '프랑스 2030' 전략을 추진하고 항공우주 산업에 40억 유로를 투자하여 저탄소 항공기 개발을 가속화했다는 내용을 전혀 언급하지 않습니다. 텍스트는 주로 프랑스의 방공 시스템 강화 및 미국 무기에 대한 의존도 감소 노력에 초점을 맞추고 있으며, 에어버스는 '전투 클라우드' 데이터 연결 개발과 관련하여 언급됩니다.", "evidence_spans": [], "error_type": "NONE"}], "attribution_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHbw--LeBzQVbXvgIeDmUjJ_mE3pKSn6opGWMhr7WalXBsnqLa47__EGEPFChX_ohj5_pHcftnf6zPS5fgmoDIOFt4dsxJuvDFdEb1fV44c12bTwgIfrDOKTjXxX6HZZUwplxkwsXu4d2hBoT5L2U71lQ0W2OU9XA6E7EgK218HV422fP1z0srsauDeQUpoK0E6Z3-Uyv5H5gKb0z7ebQs76Q==", "source_title": "sciencebusiness.net", "http_status": 200, "ok": true, "label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "이 기사는 에마뉘엘 마크롱 프랑스 대통령이 발표한 300억 유로 규모의 혁신 투자 계획(프랑스 2030 투자 계획)에 대해 직접적으로 다루고 있습니다. 마크롱 대통령이 계획의 주요 주체로 여러 번 언급되며, 계획의 세부 내용과 목표가 상세히 설명되어 있습니다.", "evidence_spans": ["Macron unveils €30B innovation plan to make French industry great again", "Emmanuel Macron, French President.", "France has launched a €30 billion innovation investment strategy", "The plan was announced by president Emmanuel Macron", "France will invest €1 billion by 2030 in small nuclear fission reactors"], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQFvLSh0JPBG31aWx5cB566OMTc7ntfH4R_2JZP-doVJsc5xrWRvQ8vU51KeW41PqQGirIAceJivH3qyiy9M8Sz0tgL23uq4iVVhN7WMlYzBEjDuDORH5tEkFRt6SSUFnElhx7XOyR0VLJAK1UxASYf_5NVrIscvO55hYtbQj4PGH5oyeDf-ux2AJSQ6-19H01BlkC9A06KSlbfAk6t2QFPE7EFoxkbU", "source_title": "aviationweek.com", "http_status": 200, "ok": true, "label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "기사는 에마뉘엘 마크롱 프랑스 대통령이 프랑스의 산업 기반을 강화하고 유럽산 방어 시스템 구매를 장려하는 계획을 주도하고 있음을 명확하게 다루고 있습니다. 이는 \"프랑스 2030 투자 계획\"의 핵심 주제인 국가적 투자 및 산업 육성과 밀접하게 관련되어 있습니다.", "evidence_spans": ["French President Emmanuel Macron chaired a meeting on June 19 to announce the plan to convince European allies to buy European-made systems", "Macron says Russia’s full-scale invasion of Ukraine shows the need for improved air defenses, and he wants to bolster France’s own industrial base and focus on European sovereignty by buying systems developed on the continent.", "Macron’s announcement is part of a broader push for independence from American-made weapons."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}]}, {"chain_index": 3, "politician": "Emmanuel Macron", "policy": "유럽 방위 전략", "industry_or_sector": "방위 산업", "companies": ["Dassault Aviation"], "impact_description": "마크롱 정부는 Dassault Aviation의 Rafale 전투기 수출을 지원하며 우크라이나와의 방위 협력을 강화했고, 이는 프랑스의 군사적 자율성 확보에 기여했습니다.", "impact_results": [{"url": "https://news.kbs.co.kr/news/pc/view/view.do?ncd=8307350", "source_title": "news.kbs.co.kr", "http_status": 200, "ok": true, "label": "UNSUPPORTED", "score": 0.1, "reasoning": "제공된 원문은 마크롱 정부와 한국-프랑스 간의 방산 협력 희망에 대해 언급하지만, Dassault Aviation, Rafale 전투기 수출 지원, 우크라이나와의 방위 협력 강화, 프랑스의 군사적 자율성 확보에 대한 내용은 전혀 포함하고 있지 않습니다.", "evidence_spans": [], "error_type": "NONE"}], "attribution_results": [{"url": "https://news.kbs.co.kr/news/pc/view/view.do?ncd=8307350", "source_title": "news.kbs.co.kr", "http_status": 200, "ok": true, "label": "WEAKLY_RELATED", "score": 0.6, "reasoning": "기사는 한국 특사단이 프랑스를 방문하여 에마뉘엘 마크롱 대통령에게 친서를 전달하고, 우주, 방산, 원자력 등 여러 분야에서 프랑스와의 실질 협력 강화를 희망했다고 언급합니다. 마크롱 대통령은 명확히 언급되지만, \"유럽 방위 전략\"이라는 구체적인 정책 자체보다는 프랑스와의 전반적인 방산 및 안보 협력에 대한 내용이 주를 이룹니다. 따라서 정책과의 직접적인 연관성은 약합니다.", "evidence_spans": ["에마뉘엘 마크롱 대통령 앞으로 보내는 이재명 대통령의 친서를 전달했다고 밝혔습니다.", "우주·방산·원자력 등 여러 분야에서 프랑스와 실질 협력을 강화하길 희망했습니다.", "국제사회 안정과 안보를 위한 협력을 이어가기 위해 우리 정부와 긴밀히 소통해 나가기를 희망한다는 뜻을 전했습니다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}]}, {"chain_index": 4, "politician": "Emmanuel Macron", "policy": "경제 개혁 정책", "industry_or_sector": "경제 정책", "companies": ["MEDEF"], "impact_description": "마크롱 정부는 MEDEF(프랑스 최대 고용주 연맹)와 긴밀히 협력하여 노동 시장 유연성 및 세제 개혁 등 친기업 정책을 추진했으며, 이는 기업 투자 유치에 기여했습니다.", "impact_results": [{"url": "https://n.news.naver.com/mnews/article/421/0008377402?sid=100", "source_title": "n.news.naver.com", "http_status": 200, "ok": true, "label": "UNSUPPORTED", "score": 0.2, "reasoning": "원문은 한국 특사단이 프랑스 기업인연합회(MEDEF) 산하 한-불 비즈니스 협의회와 조찬 간담회를 가졌다는 내용을 언급하지만, 마크롱 정부가 MEDEF와 긴밀히 협력하여 노동 시장 유연성 및 세제 개혁 등 친기업 정책을 추진했으며 이것이 기업 투자 유치에 기여했다는 내용은 포함하고 있지 않습니다. 따라서 영향 설명의 핵심 주장은 원문에서 지지되지 않습니다.", "evidence_spans": ["프랑스 기업인연합회(MEDEF) 산하 한-불 비즈니스 협의회와 조찬 간담회를 갖고 프랑스 경제인들과의 협력 가능성을 모색했다."], "error_type": "NONE"}], "attribution_results": [{"url": "https://n.news.naver.com/mnews/article/421/0008377402?sid=100", "source_title": "n.news.naver.com", "http_status": 200, "ok": true, "label": "HIGHLY_RELATED", "score": 0.85, "reasoning": "기사는 이재명 대통령 특사단이 프랑스를 방문하여 마크롱 대통령에게 친서를 전달하고, 프랑스 기업인연합회(MEDEF) 및 프랑스 대통령실 외교수석과 경제·외교·문화 등 다방면의 협력 강화를 논의한 내용을 다룹니다. 특히 프랑스 경제인들과 첨단산업 분야 협력, 한국의 탈탄소 정책 및 탄소세 개편 방향에 대한 논의가 이루어졌으며, 이는 마크롱 행정부의 경제 정책과 밀접하게 관련됩니다. 마크롱 대통령이 친서의 수신자로 명시되고 그의 행정부와 경제 관련 논의가 이루어졌으므로, 정치인과 정책 모두 의미 있게 언급되었습니다.", "evidence_spans": ["엘리제궁에서 에마뉘엘 본(Emmanuel Bonne) 프랑스 대통령 외교수석을 면담해 마크롱 대통령에게 보내는 이 대통령의 친서를 전달했다.", "특사단은 첫 공식 일정으로 프랑스 기업인연합회(MEDEF) 산하 한-불 비즈니스 협의회와 조찬 간담회를 갖고 프랑스 경제인들과의 협력 가능성을 모색했다.", "경제·외교·문화 등 다방면에서 양국 간 협력 강화를 위한 논의를 진행했다.", "프랑스 기업인들이 수소, AI, 반도체, 원전 등 첨단산업 분야에 깊은 관심을 보였다", "한국의 탈탄소 정책이나 탄소세 개편 방향 등에 대해 구체적인 질문이 이어졌고"], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}]}], "gold_eval": {"similarity_score": 0.7, "reasoning": "두 보고서는 이재명 의원의 기본소득 및 일부 인프라 정책에 대한 분석에서 유사점을 보였습니다. 골드 보고서는 부동산 시장 안정화 정책과 대규모 국책 사업의 경제적 파급 효과를 심층적으로 다룬 반면, 모델 보고서는 소상공인 및 지역 특화 산업 지원 정책에 대한 독자적인 관점을 제시했습니다. 전반적으로 골드 보고서가 주요 거시 경제 정책의 시장 영향 분석에서 더 깊이 있는 설명을 제공했습니다.", "model_unique_points": ["소상공인 및 중소기업 지원 정책이 지역 경제 활성화에 미치는 영향", "지역 특화 산업 육성 방안과 관련 중소 제조 기업의 성장 가능성"], "gold_unique_points": ["부동산 시장 안정화 정책이 건설 및 금융 산업에 미치는 구체적인 영향 분석", "대규모 국책 사업 추진에 따른 특정 대기업 및 관련 하청 기업의 수혜 전망"]}}} +{"query": "Volodymyr Zelensky", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "Volodymyr Zelensky", "policy": "에너지 부문 전면 개편", "industry_or_sector": "에너지", "companies": ["Energoatom", "Naftogaz", "Ukrhydroenergo", "Gas Transmission System Operator of Ukraine"], "impact_description": "젤렌스키 대통령의 에너지 부문 개혁 정책은 부패 스캔들 이후 주요 국영 에너지 기업들을 전면 개편하는 결과를 초래했으며, 이는 국제 원조 감소와 정치적 취약성으로 이어졌다.", "impact_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGmBnAEnbe7yXuSKDVxfcdZL61WuTE6rCTJSS7GBk-9w7d646PGV05mO0JX4BJ4PiZxqFgweAtX9-GpLstiYAem90WDy7-Y082TW1SzkShMWaNg4Nam9btN1YDaIxklqO47t06XPk8Mtq1SCViYI5Mzen3MEOX7q-GJyDP7MZdhvOA3PtmW2-bUcWPNFzzP0I_HoqzVwBiZgTeYLul0dvKmOnlAytyf8s_bXbbl", "source_title": "livemint.com", "http_status": 200, "ok": true, "label": "UNSUPPORTED", "score": 0.1, "reasoning": "제공된 원문은 우크라이나의 국방 산업 및 외국 방위 기업과의 협력에 관한 내용입니다. 영향 설명에 언급된 젤렌스키 대통령의 에너지 부문 개혁 정책, 부패 스캔들, 국영 에너지 기업(Energoatom, Naftogaz, Ukrhydroenergo, Gas Transmission System Operator of Ukraine)의 전면 개편, 국제 원조 감소 또는 정치적 취약성에 대한 어떠한 정보도 포함하고 있지 않습니다.", "evidence_spans": [], "error_type": "NONE"}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQE1EZx_IhXTdCgeSLErI3zzJ39LKRy1KEfORy2sBBZFUGHKUy3jagbs3fbjCRyP1i8VsMROo1OG_-E0dLYZfKTyZmjdFlWLqR3ZICHIh56Y_yquZ2Mnj23TQECDA6rXDJS0q_LRDXaWwt8WszqnbIaeBAm8Gui5cJP3bAgTICRJghnbOTdWrNdT-KIWbET0AltarUwMLtrCRuGhmuNQ", "source_title": "arabnews.com", "http_status": null, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 원문 텍스트가 비어 있어 영향 설명을 평가할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT"}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQG4tTi6Pl6UjlEyygyJ7meafmmxd_L7WH0YCkmOv2FqI0yfejD7_HesASz922CibiBUQEvlbTqiBtJ2810eVKitIrxqwxKIGxqtn3mwuAvb8yO8sZ9tCpr8lOkIDIxO9ndgmUBWm3IELVFjBMt1rhme5yhjTgWVbWysvDwxTsuBf-YrVteDqcD3AhjT2xC8bF935xj0ON7vHeo=", "source_title": "eunews.it", "http_status": null, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 원본 텍스트가 비어 있어 영향 설명을 평가할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT"}], "attribution_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGmBnAEnbe7yXuSKDVxfcdZL61WuTE6rCTJSS7GBk-9w7d646PGV05mO0JX4BJ4PiZxqFgweAtX9-GpLstiYAem90WDy7-Y082TW1SzkShMWaNg4Nam9btN1YDaIxklqO47t06XPk8Mtq1SCViYI5Mzen3MEOX7q-GJyDP7MZdhvOA3PtmW2-bUcWPNFzzP0I_HoqzVwBiZgTeYLul0dvKmOnlAytyf8s_bXbbl", "source_title": "livemint.com", "http_status": 200, "ok": true, "label": "UNRELATED", "score": 0.1, "reasoning": "기사는 우크라이나의 국방 산업 및 외국 방위 회사와의 협력에 관한 내용입니다. 볼로디미르 젤렌스키 대통령은 언급되지 않았으며, \"에너지 부문 전면 개편\" 정책이나 에너지 관련 내용은 전혀 다루지 않습니다.", "evidence_spans": [], "error_type": "NONE", "politician_mentioned": false, "policy_topic_mentioned": false}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQE1EZx_IhXTdCgeSLErI3zzJ39LKRy1KEfORy2sBBZFUGHKUy3jagbs3fbjCRyP1i8VsMROo1OG_-E0dLYZfKTyZmjdFlWLqR3ZICHIh56Y_yquZ2Mnj23TQECDA6rXDJS0q_LRDXaWwt8WszqnbIaeBAm8Gui5cJP3bAgTICRJghnbOTdWrNdT-KIWbET0AltarUwMLtrCRuGhmuNQ", "source_title": "arabnews.com", "http_status": null, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 기사 내용이 비어 있어 볼로디미르 젤렌스키 대통령과 에너지 부문 전면 개편 정책 간의 관련성을 판단할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT", "politician_mentioned": false, "policy_topic_mentioned": false}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQG4tTi6Pl6UjlEyygyJ7meafmmxd_L7WH0YCkmOv2FqI0yfejD7_HesASz922CibiBUQEvlbTqiBtJ2810eVKitIrxqwxKIGxqtn3mwuAvb8yO8sZ9tCpr8lOkIDIxO9ndgmUBWm3IELVFjBMt1rhme5yhjTgWVbWysvDwxTsuBf-YrVteDqcD3AhjT2xC8bF935xj0ON7vHeo=", "source_title": "eunews.it", "http_status": null, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 원문 내용이 비어 있어 기사와 정치인 및 정책 간의 관련성을 판단할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT", "politician_mentioned": false, "policy_topic_mentioned": false}]}, {"chain_index": 1, "politician": "Volodymyr Zelensky", "policy": "방산 파트너십 강화", "industry_or_sector": "방산", "companies": ["Lockheed Martin", "Dassault Aviation"], "impact_description": "미국 및 프랑스와의 방산 협력은 우크라이나의 군사 능력을 직접적으로 강화했으며, 국내 방산 생산 확대에 기여했다.", "impact_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQG6bhq_CKcfQWDMo7CXvMpMWbvdla-AuMgOwag38KeOKLwOoVd49NJp0gQEJ_e2fSpRWyHxwKPkiptctdtQvJYr3vPIKUURJKbwzKK-pJMbxmGSS7xnTq8WquS1OmyeqJiEjQM=", "source_title": "modern.az", "http_status": 200, "ok": true, "label": "PARTIALLY_SUPPORTED", "score": 0.6, "reasoning": "제공된 원문은 미국이 우크라이나에 상당한 군사 원조와 장비를 제공하여 우크라이나의 군사 능력을 강화했음을 명확히 보여줍니다. 그러나 프랑스와의 구체적인 방산 협력이나 Lockheed Martin, Dassault Aviation과 같은 특정 기업에 대한 언급은 없습니다. 또한, 국내 방산 생산 확대에 기여했다는 내용은 원문에서 찾을 수 없습니다.", "evidence_spans": ["nearly $25 billion in new commitments for military aid to Ukraine", "replenish DoD weapons and equipment donated to Ukraine", "authority to transfer weapons, ammunition, and equipment from DoD stocks to Ukraine"], "error_type": "NONE"}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQFbAcfYD3dvmm06bS9TlzoEb4wNE_Jcc_-UTvw1rYP1NAPWGZKHKdmdGFnnuYCo82Vgu2TzAxHE96xTNA7_4XQYmS4Uy8AehI8m_d-aJdhYvv05QjJJCFqHScIN_KKe8WP7fkTqwLF_RamTC-gceJycxojsGHbo50qOatwYSHeeuqdmnaMuDX6tKhcMLFqavm5XWxqF-AXx", "source_title": "eunews.it", "http_status": null, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 source_text 내용이 비어 있어 impact_description을 평가할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT"}], "attribution_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQG6bhq_CKcfQWDMo7CXvMpMWbvdla-AuMgOwag38KeOKLwOoVd49NJp0gQEJ_e2fSpRWyHxwKPkiptctdtQvJYr3vPIKUURJKbwzKK-pJMbxmGSS7xnTq8WquS1OmyeqJiEjQM=", "source_title": "modern.az", "http_status": 200, "ok": true, "label": "WEAKLY_RELATED", "score": 0.6, "reasoning": "이 기사는 미국이 우크라이나에 제공하는 군사 지원 및 전략적 파트너십 강화에 대해 상세히 다루고 있어 방산 파트너십 강화 정책과 밀접하게 관련됩니다. 하지만 볼로디미르 젤렌스키 대통령의 이름은 명시적으로 언급되지 않습니다.", "evidence_spans": ["secured nearly $25 billion in new commitments for military aid to Ukraine.", "The United States and Ukraine signed an agreement that establishes the U.S.-Ukraine Reconstruction Investment Fund, a bilateral mineral development fund, the revenues from which will be shared and the fund will be managed by the two countries on an equal basis. The agreement aims to strengthen the strategic partnership between the United States and Ukraine for long-term reconstruction and modernization.", "$30.1 billion in appropriations for the Ukraine response remain available for obligation, most of which will replenish DoD weapons and equipment donated to Ukraine."], "error_type": "NONE", "politician_mentioned": false, "policy_topic_mentioned": true}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQFbAcfYD3dvmm06bS9TlzoEb4wNE_Jcc_-UTvw1rYP1NAPWGZKHKdmdGFnnuYCo82Vgu2TzAxHE96xTNA7_4XQYmS4Uy8AehI8m_d-aJdhYvv05QjJJCFqHScIN_KKe8WP7fkTqwLF_RamTC-gceJycxojsGHbo50qOatwYSHeeuqdmnaMuDX6tKhcMLFqavm5XWxqF-AXx", "source_title": "eunews.it", "http_status": null, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 원문 내용이 비어 있어 기사와 정치인(볼로디미르 젤렌스키), 정책(방산 파트너십 강화) 간의 관련성을 판단할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT", "politician_mentioned": false, "policy_topic_mentioned": false}]}, {"chain_index": 2, "politician": "Volodymyr Zelensky", "policy": "국내 방산 생산 확대", "industry_or_sector": "방산", "companies": ["RTX Corporation", "Lockheed Martin", "Northrop Grumman", "BAE Systems", "Saab", "Indra Group", "Flensburger Fahrzeugbau Gesellschaft (FFG)", "Escribano Mechanical & Engineering (EM&E)", "Tecnove", "Practika", "KNDS", "MBDA", "D&M Holding Company", "Amentum Services, Inc.", "AeroVironment, Inc.", "Kongsberg Defence & Aerospace", "Romarm", "CZ Colt Group", "Quantum Systems", "Hellenic Defence Systems"], "impact_description": "우크라이나의 방산 산업 역량 10배 증가와 2025년 말까지 전선 무기의 50% 국내 생산 목표 달성에 기여했으며, 연간 350억 달러 규모의 드론 및 미사일 생산 잠재력을 창출했다.", "impact_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGmBnAEnbe7yXuSKDVxfcdZL61WuTE6rCTJSS7GBk-9w7d646PGV05mO0JX4BJ4PiZxqFgweAtX9-GpLstiYAem90WDy7-Y082TW1SzkShMWaNg4Nam9btN1YDaIxklqO47t06XPk8Mtq1SCViYI5Mzen3MEOX7q-GJyDP7MZdhvOA3PtmW2-bUcWPNFzzP0I_HoqzVwBiZgTeYLul0dvKmOnlAytyf8s_bXbbl", "source_title": "mod.gov.ua", "http_status": 200, "ok": true, "label": "PARTIALLY_SUPPORTED", "score": 0.6, "reasoning": "제공된 웹 페이지는 25개 외국 방산 기업이 우크라이나에서 생산을 현지화하고 있으며, 우크라이나 정부가 국방 산업 발전을 위한 법적 틀을 마련하고 있다고 명시하여 우크라이나 방산 산업 역량 증가 및 국내 생산 기여에 대한 일반적인 내용은 지지합니다. 그러나 영향 설명에 언급된 \"10배 증가\", \"2025년 말까지 전선 무기의 50% 국내 생산 목표 달성\", \"연간 350억 달러 규모의 드론 및 미사일 생산 잠재력 창출\"과 같은 구체적인 수치나 목표는 페이지에 언급되어 있지 않습니다.", "evidence_spans": ["As of now, 25 foreign companies — including major global defense industry players — are at various stages of localizing their production in Ukraine.", "To minimize risks for investors and enhance the attractiveness of joint ventures in Ukraine, the government is setting up Defence City — a special legal framework for the development of the country’s defense industry.", "We call on foreign companies to invest in Ukraine and set up their production here."], "error_type": "NONE"}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQFi9TaiY7iJlfJ-hw4MtDESCwyxCw157o0DEHkIv0bxcOYDqXhsUjz122_yA-ogosFK26Eyp1yFHZDmrVS7n2ze0-7isHtPjZhaORse-mn-KTImOmgfAR3fUKib5NLZCvRG6DCYfqu-Ust5SukjE9eU6pEgeFDcVorvsmrRWF40uKE9pVdIGzkFSuTVeCeQ0NDDA_HeBK8J2Wg==", "source_title": "armyinform.com.ua", "http_status": 404, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 소스 텍스트는 \"404. That’s an error.\" 메시지를 포함하는 오류 페이지이므로, 방산 산업 역량 증가 및 생산 목표 달성에 대한 어떠한 정보도 포함하고 있지 않습니다. 따라서 주어진 impact_description을 평가할 수 없습니다.", "evidence_spans": [], "error_type": "PAGE_LOAD_ERROR"}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQFbAcfYD3dvmm06bS9TlzoEb4wNE_Jcc_-UTvw1rYP1NAPWGZKHKdmdGFnnuYCo82Vgu2TzAxHE96xTNA7_4XQYmS4Uy8AehI8m_d-aJdhYvv05QjJJCFqHScIN_KKe8WP7fkTqwLF_RamTC-gceJycxojsGHbo50qOatwYSHeeuqdmnaMuDX6tKhcMLFqavm5XWxqF-AXx", "source_title": "eunews.it", "http_status": null, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 원본 텍스트가 비어 있어 영향 설명을 평가할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT"}], "attribution_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGmBnAEnbe7yXuSKDVxfcdZL61WuTE6rCTJSS7GBk-9w7d646PGV05mO0JX4BJ4PiZxqFgweAtX9-GpLstiYAem90WDy7-Y082TW1SzkShMWaNg4Nam9btN1YDaIxklqO47t06XPk8Mtq1SCViYI5Mzen3MEOX7q-GJyDP7MZdhvOA3PtmW2-bUcWPNFzzP0I_HoqzVwBiZgTeYLul0dvKmOnlAytyf8s_bXbbl", "source_title": "mod.gov.ua", "http_status": 200, "ok": true, "label": "WEAKLY_RELATED", "score": 0.55, "reasoning": "기사는 우크라이나의 국방 생산 확대 및 외국 기업의 현지 생산 유치에 대해 상세히 다루고 있지만, 볼로디미르 젤렌스키 대통령은 언급되지 않았습니다. 대신 데니스 슈미할 국방부 장관이 주요 인물로 등장합니다.", "evidence_spans": ["25 foreign companies — including major global defense industry players — are at various stages of localizing their production in Ukraine.", "the government is setting up Defence City — a special legal framework for the development of the country’s defense industry.", "We call on foreign companies to invest in Ukraine and set up their production here."], "error_type": "NONE", "politician_mentioned": false, "policy_topic_mentioned": true}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQFi9TaiY7iJlfJ-hw4MtDESCwyxCw157o0DEHkIv0bxcOYDqXhsUjz122_yA-ogosFK26Eyp1yFHZDmrVS7n2ze0-7isHtPjZhaORse-mn-KTImOmgfAR3fUKib5NLZCvRG6DCYfqu-Ust5SukjE9eU6pEgeFDcVorvsmrRWF40uKE9pVdIGzkFSuTVeCeQ0NDDA_HeBK8J2Wg==", "source_title": "armyinform.com.ua", "http_status": 404, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "페이지가 404 오류를 반환하여 내용을 확인할 수 없습니다.", "evidence_spans": [], "error_type": "PAGE_LOAD_ERROR", "politician_mentioned": false, "policy_topic_mentioned": false}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQFbAcfYD3dvmm06bS9TlzoEb4wNE_Jcc_-UTvw1rYP1NAPWGZKHKdmdGFnnuYCo82Vgu2TzAxHE96xTNA7_4XQYmS4Uy8AehI8m_d-aJdhYvv05QjJJCFqHScIN_KKe8WP7fkTqwLF_RamTC-gceJycxojsGHbo50qOatwYSHeeuqdmnaMuDX6tKhcMLFqavm5XWxqF-AXx", "source_title": "eunews.it", "http_status": null, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 기사 내용이 비어 있어 볼로디미르 젤렌스키 대통령과 국내 방산 생산 확대 정책 간의 관련성을 판단할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT", "politician_mentioned": false, "policy_topic_mentioned": false}]}, {"chain_index": 3, "politician": "Volodymyr Zelensky", "policy": "EU 우크라이나 시설", "industry_or_sector": "국제 원조", "companies": ["EU Ukraine Facility"], "impact_description": "EU 우크라이나 시설은 4년간 500억 유로의 예측 가능한 재정 지원을 제공했으나, 2025년 지원금은 개혁 미완성으로 감소했다.", "impact_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHcsNEdBZptmVNqIxLv396hpJMz05t-Xh6-2XrbOiKwvkWC6SeA6PBngV-sAUAm7VEzHXR7nzkfR1hbPxamN0iBFGEcruO1X7QVbLbsbZnVaQmBuyI70fvXZdEOEhtaSswiuf4FEQgf6jRjBxzVDCDquhCv", "source_title": "washingtonpost.com", "http_status": 404, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.0, "reasoning": "제공된 소스 텍스트는 404 오류 페이지로, 영향 설명의 내용을 평가할 수 있는 정보가 전혀 없습니다.", "evidence_spans": [], "error_type": "PAGE_LOAD_ERROR"}], "attribution_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHcsNEdBZptmVNqIxLv396hpJMz05t-Xh6-2XrbOiKwvkWC6SeA6PBngV-sAUAm7VEzHXR7nzkfR1hbPxamN0iBFGEcruO1X7QVbLbsbZnVaQmBuyI70fvXZdEOEhtaSswiuf4FEQgf6jRjBxzVDCDquhCv", "source_title": "washingtonpost.com", "http_status": 404, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "페이지가 404 오류를 반환하여 내용을 확인할 수 없습니다.", "evidence_spans": [], "error_type": "PAGE_LOAD_ERROR", "politician_mentioned": false, "policy_topic_mentioned": false}]}], "gold_eval": {"similarity_score": 0.7, "reasoning": "두 보고서는 이재명 의원의 기본소득 및 일부 인프라 정책에 대한 분석에서 유사점을 보였습니다. 골드 보고서는 부동산 시장 안정화 정책과 대규모 국책 사업의 경제적 파급 효과를 심층적으로 다룬 반면, 모델 보고서는 소상공인 및 지역 특화 산업 지원 정책에 대한 독자적인 관점을 제시했습니다. 전반적으로 골드 보고서가 주요 거시 경제 정책의 시장 영향 분석에서 더 깊이 있는 설명을 제공했습니다.", "model_unique_points": ["소상공인 및 중소기업 지원 정책이 지역 경제 활성화에 미치는 영향", "지역 특화 산업 육성 방안과 관련 중소 제조 기업의 성장 가능성"], "gold_unique_points": ["부동산 시장 안정화 정책이 건설 및 금융 산업에 미치는 구체적인 영향 분석", "대규모 국책 사업 추진에 따른 특정 대기업 및 관련 하청 기업의 수혜 전망"]}}} +{"query": "Fumio Kishida", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "기시다 후미오", "policy": "반도체 보조금 정책", "industry_or_sector": "반도체", "companies": ["TSMC", "Rapidus"], "impact_description": "일본 반도체 산업 부활 및 공급망 확보에 기여", "impact_results": [{"url": "https://www.asahi.com/ajw/articles/14911017", "source_title": "Asahi Shimbun", "http_status": 200, "ok": true, "label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 원문은 기시다 총리가 일본의 반도체 산업 부활과 공급망 강화를 위해 글로벌 반도체 기업들의 지원을 모색하고 있음을 명확히 보여줍니다. 특히 TSMC의 구마모토 신규 공장과 Rapidus Corp.의 첫 공장에 대한 정부 보조금 지원을 언급하며, 이들 기업이 일본 반도체 산업의 부활 및 공급망 확보에 기여하고 있음을 뒷받침합니다.", "evidence_spans": ["기시다 후미오 총리는 히로시마에서 열리는 주요 7개국(G7) 정상회의를 앞두고 세계 반도체 부문 리더들을 만나 한때 강력했던 일본의 반도체 산업 부활을 위한 지원을 확보했다.", "총리는 일본의 경제 안보를 보장하는 데 중요한 역할을 해야 한다고 말한 산업의 더 강력한 공급망을 요구하고 있다.", "기시다 총리는 구마모토현에 건설될 TSMC의 새 공장에 최대 4,760억 엔(34억 6천만 달러)의 보조금을 포함하여 신규 공장에 대한 더 많은 투자를 약속했다.", "다른 프로젝트로는 정부로부터 3,300억 엔을 지원받을 합작 스타트업 라피더스(Rapidus Corp.)의 첫 번째 공장이 포함된다."], "error_type": "NONE"}], "attribution_results": [{"url": "https://www.asahi.com/ajw/articles/14911017", "source_title": "Asahi Shimbun", "http_status": 200, "ok": true, "label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "이 기사는 기시다 후미오 총리가 일본의 반도체 산업을 재건하기 위해 글로벌 반도체 기업 경영진을 만나 지원을 요청하고, TSMC와 Rapidus에 대한 구체적인 보조금 및 투자 계획을 약속하는 내용을 다루고 있습니다. 기시다 총리와 반도체 보조금 정책이 모두 핵심적으로 언급됩니다.", "evidence_spans": ["Prime Minister Fumio Kishida met global leaders of the semiconductor sector ahead of the Group of Seven summit in Hiroshima to secure support in reviving Japan's once-formidable chip industry.", "Kishida also pledged more support for chipmakers, including steps to attract more foreign investment, as part of the government's upcoming key fiscal and economic policy outline.", "Kishida has pledged more investment in new factories, including a subsidy of up to 476 billion yen ($3.46 billion) for TSMC’s new plant in Kumamoto Prefecture.", "Other projects include the first plant of joint startup Rapidus Corp., which will receive 330 billion yen from the government."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}]}, {"chain_index": 1, "politician": "기시다 후미오", "policy": "2050 탄소중립 정책", "industry_or_sector": "그린 트랜스포메이션(GX)", "companies": ["Panasonic", "Toyota"], "impact_description": "재생에너지 및 전기차 시장 성장 촉진", "impact_results": [{"url": "https://www.asahi.com/ajw/articles/14911017", "source_title": "Asahi Shimbun", "http_status": 200, "ok": true, "label": "UNSUPPORTED", "score": 0.1, "reasoning": "제공된 기사는 일본의 반도체 산업 재건에 관한 내용이며, 파나소닉, 토요타와 같은 회사나 재생에너지 및 전기차 시장의 성장에 대한 어떠한 정보도 포함하고 있지 않습니다. 따라서 영향 설명은 원문 텍스트에 의해 뒷받침되지 않습니다.", "evidence_spans": [], "error_type": "NONE"}], "attribution_results": [{"url": "https://www.asahi.com/ajw/articles/14911017", "source_title": "Asahi Shimbun", "http_status": 200, "ok": true, "label": "UNRELATED", "score": 0.1, "reasoning": "기시다 후미오 총리가 언급되었지만, 기사 내용은 2050 탄소중립 정책과는 관련 없는 일본 반도체 산업 재건에 관한 것입니다.", "evidence_spans": ["Prime Minister Fumio Kishida met global leaders of the semiconductor sector ahead of the Group of Seven summit in Hiroshima to secure support in reviving Japan's once-formidable chip industry."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": false}]}, {"chain_index": 2, "politician": "기시다 후미오", "policy": "GDP 대비 2% 방위비 지출 정책", "industry_or_sector": "방위 산업", "companies": ["Mitsubishi Heavy Industries", "Lockheed Martin"], "impact_description": "자위대 현대화 및 세계 3위 군사 지출국 달성", "impact_results": [{"url": "https://www.reuters.com/world/asia-pacific/pacifist-japan-unveils-unprecedented-320-bln-military-build-up-2022-12-16/", "source_title": "Reuters", "http_status": 401, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.0, "reasoning": "제공된 source_text가 비어 있어 impact_description을 평가할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT"}], "attribution_results": [{"url": "https://www.reuters.com/world/asia-pacific/pacifist-japan-unveils-unprecedented-320-bln-military-build-up-2022-12-16/", "source_title": "Reuters", "http_status": 401, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "기사 본문 내용이 비어 있어 정치인과 정책의 관련성을 판단할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT", "politician_mentioned": false, "policy_topic_mentioned": false}]}], "gold_eval": {"similarity_score": 0.75, "reasoning": "두 보고서는 이재명 의원의 기본소득 및 친환경 에너지 정책을 공통적으로 다루며 관련 산업과 기업을 유사하게 분석했습니다. 그러나 부동산 정책에서 Gold Report는 민간 시장 규제를, Model Report는 공공 주거 확대를 강조하여 접근 방식이 달랐습니다. Gold Report는 기본소득의 플랫폼 산업 영향과 신재생에너지의 이차전지 산업 연관성을 더 깊이 다루어 더 구체적이고 균형 잡힌 시장 파급 효과 설명을 제공했습니다. Model Report는 긍정적 측면에 집중하는 경향이 있었습니다.", "model_unique_points": ["청년 주거 안정화를 위한 공공임대주택 확대 정책과 공공 건설 부문의 영향 분석.", "친환경 에너지 전환 정책에서 RE100 지원을 통한 기업의 재생에너지 사용 확대 측면 강조."], "gold_unique_points": ["다주택자 규제 강화를 통한 민간 부동산 시장 안정화 정책과 그에 따른 민간 건설사 영향 분석.", "기본소득 정책이 플랫폼 산업 및 특정 온라인 유통 기업에 미치는 영향에 대한 심층 분석.", "신재생에너지 정책에서 이차전지 산업 및 관련 기업의 성장 가능성 강조."]}}} +{"query": "Mohammed bin Salman", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "Mohammed bin Salman", "policy": "사우디 비전 2030", "industry_or_sector": "에너지, 관광, 기술, 인프라, 제조", "companies": ["NEOM", "Red Sea Project", "Uber", "Lucid Motors", "Jio Platforms", "Air Products", "ACWA Power", "Larsen & Toubro", "Volocopter", "Candela", "Jumeirah", "Six Senses", "Hyundai", "Aramco", "SABIC"], "impact_description": "모하메드 빈 살만(MBS)은 사우디 비전 2030을 통해 경제 다각화, 관광 성장, 일자리 창출, PIF 확장을 주도했습니다. NEOM, 레드 시 프로젝트, 아람코, SABIC 등 주요 기업 및 프로젝트를 통해 에너지, 관광, 기술 분야에서 글로벌 영향력을 확대했습니다. PIF의 글로벌 투자(Uber, Lucid Motors, Jio Platforms)와 아람코의 수소 프로젝트, SABIC의 수입 대체 정책은 사우디 경제 구조 변화를 이끌었습니다.", "impact_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQFB3y_dbI0eWwiwLpCLToCuJAss8cKSOQt0F6SQqS50Gp_HN5kzHp8GJ5f4uY6iOv24yLKW_9_xrSJ_9BuMCe-0Qbsy9AiQx2U9SnU1HxYfX1P7mVjTqw-YhEDy", "source_title": "Saudi Vision 2030", "http_status": null, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.0, "reasoning": "제공된 source_text가 비어 있어 impact_description을 평가할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT"}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQE-aGDFkkTUQAlTSceJGl7--RdMYPvRGy9bZcy4wrNcla9d7sNs41yGH26RMXNiu2WXeUSal4Vqt9uSqEFO5X3j54POAjuxJsNpZunLyPHsvA5EpAKGLq2O9_jwJpWuNZhPtP-EOw", "source_title": "Public Investment Fund (PIF)", "http_status": null, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 source_text가 비어 있어 impact_description을 평가할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT"}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGVrwCynZ8nuaNSGgtkwGsS4XN-qppRH-YTsu2242R5RRQCPUG6j2oc4UCLVjOKRtS85c5RPxGcGH3IAfI4-NP5jyU6VYDgx_dLjDiSr7QhaPCNGdQPoUyb0apkX6WfF5GQjrkvMx5kRd_yY81gHIYEhI70GZ13PlMFz8UAYQZbM1b8KU6A9g3XhYTxTg8if1-n0anTPvM720hQgrouDqomh9ugZes", "source_title": "Saudi Aramco", "http_status": null, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 source_text가 비어 있어 impact_description을 평가할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT"}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQH5onDkrAevvffM6Q4-GKQItpTfAMKXCkU0-IIn5yIlV5hfgiGHWAu3gbVe7KYU3hcrVG7Hib93rPgkls0rshP-Pj68PXaypweDWMLW8aV0gI0LO6YYQKFOGa2-uhGctn6Jv6L4qNBV5nRIX0Gyvka5seAZCXyzOSmHfj4o", "source_title": "SABIC", "http_status": null, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 원본 텍스트가 비어 있어 impact_description을 평가할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT"}], "attribution_results": [{"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQFB3y_dbI0eWwiwLpCLToCuJAss8cKSOQt0F6SQqS50Gp_HN5kzHp8GJ5f4uY6iOv24yLKW_9_xrSJ_9BuMCe-0Qbsy9AiQx2U9SnU1HxYfX1P7mVjTqw-YhEDy", "source_title": "Saudi Vision 2030", "http_status": null, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 원문 내용이 비어 있어 정치인과 정책의 관련성을 판단할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT", "politician_mentioned": false, "policy_topic_mentioned": false}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQE-aGDFkkTUQAlTSceJGl7--RdMYPvRGy9bZcy4wrNcla9d7sNs41yGH26RMXNiu2WXeUSal4Vqt9uSqEFO5X3j54POAjuxJsNpZunLyPHsvA5EpAKGLq2O9_jwJpWuNZhPtP-EOw", "source_title": "Public Investment Fund (PIF)", "http_status": null, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 원문 내용이 비어 있어 기사와 정치인, 정책 간의 관련성을 판단할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT", "politician_mentioned": false, "policy_topic_mentioned": false}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGVrwCynZ8nuaNSGgtkwGsS4XN-qppRH-YTsu2242R5RRQCPUG6j2oc4UCLVjOKRtS85c5RPxGcGH3IAfI4-NP5jyU6VYDgx_dLjDiSr7QhaPCNGdQPoUyb0apkX6WfF5GQjrkvMx5kRd_yY81gHIYEhI70GZ13PlMFz8UAYQZbM1b8KU6A9g3XhYTxTg8if1-n0anTPvM720hQgrouDqomh9ugZes", "source_title": "Saudi Aramco", "http_status": null, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 웹 페이지 내용이 비어 있어 정치인과 정책 간의 관련성을 판단할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT", "politician_mentioned": false, "policy_topic_mentioned": false}, {"url": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQH5onDkrAevvffM6Q4-GKQItpTfAMKXCkU0-IIn5yIlV5hfgiGHWAu3gbVe7KYU3hcrVG7Hib93rPgkls0rshP-Pj68PXaypweDWMLW8aV0gI0LO6YYQKFOGa2-uhGctn6Jv6L4qNBV5nRIX0Gyvka5seAZCXyzOSmHfj4o", "source_title": "SABIC", "http_status": null, "ok": false, "label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 웹 페이지 텍스트 내용이 비어 있어 정치인과 정책 간의 관련성을 판단할 수 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT", "politician_mentioned": false, "policy_topic_mentioned": false}]}], "gold_eval": {"similarity_score": 0.75, "reasoning": "두 보고서는 이재명 의원의 기본소득 및 친환경 에너지 정책을 공통적으로 다루며 관련 산업과 기업을 유사하게 분석했습니다. 그러나 부동산 정책에서 Gold Report는 민간 시장 규제를, Model Report는 공공 주거 확대를 강조하여 접근 방식이 달랐습니다. Gold Report는 기본소득의 플랫폼 산업 영향과 신재생에너지의 이차전지 산업 연관성을 더 깊이 다루어 더 구체적이고 균형 잡힌 시장 파급 효과 설명을 제공했습니다. Model Report는 긍정적 측면에 집중하는 경향이 있었습니다.", "model_unique_points": ["청년 주거 안정화를 위한 공공임대주택 확대 정책과 공공 건설 부문의 영향 분석.", "친환경 에너지 전환 정책에서 RE100 지원을 통한 기업의 재생에너지 사용 확대 측면 강조."], "gold_unique_points": ["다주택자 규제 강화를 통한 민간 부동산 시장 안정화 정책과 그에 따른 민간 건설사 영향 분석.", "기본소득 정책이 플랫폼 산업 및 특정 온라인 유통 기업에 미치는 영향에 대한 심층 분석.", "신재생에너지 정책에서 이차전지 산업 및 관련 기업의 성장 가능성 강조."]}}} diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/dev_test/influence_model_responses_eval_2.jsonl b/usecase/solar-political-influence-analyzer/src/ai-engine/dev_test/influence_model_responses_eval_2.jsonl new file mode 100644 index 0000000..9c54045 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/dev_test/influence_model_responses_eval_2.jsonl @@ -0,0 +1,19 @@ +{"query": "윤석열", "evaluation": {"chain_results": [], "gold_eval": null}} +{"query": "이재명", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "이재명", "policy": "재난기본소득 & 지역화폐 정책", "industry_or_sector": "소상공인/소매업", "companies": [], "impact_description": "재난기본소득 및 지역화폐 정책으로 지역경제 회복 및 소상공인 활성화 성과 달성", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 출처는 재난기본소득 및 지역화폐 정책이 지역경제 회복과 소상공인 활성화에 기여했다는 내용을 명확하게 언급하고 있습니다. 특히, 재난기본소득 지급 이후 지역경제 회복 성과가 뚜렷해졌으며, 지역화폐가 소상공인과 골목상권 매출 증대 및 지역경제 활성화에 즉각적인 효과를 가져왔다고 설명합니다.", "evidence_spans": ["[Source 1] 재난기본소득 지급 이후 각종 카드사 통계와, 설문 조사 등을 통해 지역경제 회복 성과가 뚜렷해지자", "[Source 1] 사용기한을 정해놓고 기본소득을 지역화폐로 지급하면서 즉각적인 지역경제 활성화 효과가 발생한 것이다. 경기도는 소상공인과 골목상권 매출 증대, 지역경제 활성화를 위해 2018년 8월 지역화폐를 첫 도입한지 9개월여만인 지난해 4월 도 전역에서 지역화폐를 발행하는 목표를 달성했다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "제공된 기사는 이재명 경기도지사의 주요 성과 및 정책을 다루고 있으며, 재난기본소득 도입과 지역화폐 발행이 이재명 지사의 핵심 정책으로 상세히 설명되어 있습니다. 이재명 지사가 해당 정책들을 추진하고 공론화하는 과정이 명확하게 언급되어 있어 정치인과 정책 간의 관련성이 매우 높습니다.", "evidence_spans": ["선제적 코로나 방역, 재난기본소득 도입, 지역화폐 발행 등 ‘전국 최고 삶의 질 경기도’ 현실화", "코로나19 경제방역 정책으로는 단연 경기도 재난기본소득이 화제가 됐다.", "정부에 2차 재난지원금 지급을 건의한 이재명 지사는 최근 “기본소득 도입은 피할 수 없다. 가능한 범위에서 시작해 효과를 보고 서서히 확대해 가야 한다\"며 기본소득 공론화에 더욱 박차를 가하고 있다.", "경기도 재난기본소득의 성공 뒤에는 이재명 경기도지사가 취임 초부터 추진한 지역화폐라는 기본 인프라가 있었다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 1, "politician": "이재명", "policy": "반도체/바이오 클러스터 정책", "industry_or_sector": "반도체/바이오/AI", "companies": [], "impact_description": "용인 반도체 클러스터 유치 및 수원-광교-시흥 바이오 클러스터 조성으로 반도체/바이오/AI 산업 육성", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제시된 자료들은 용인 반도체 클러스터 유치와 수원-광교-시흥 바이오 클러스터 조성을 통해 반도체/바이오/AI 산업을 육성한다는 내용이 명확하게 뒷받침하고 있습니다. 각 클러스터 조성 계획과 그로 인한 산업 육성 효과가 여러 출처에서 언급됩니다.", "evidence_spans": ["[Source 1] 용인 반도체 클러스터 산업단지 유치로 10년간 122조원 투자, 1만 7천명 이상 직접 고용 효과를 얻게 됐으며", "[Source 2] 특히 경기도가 추진 중인 수원 광교~시흥~경기 북부를 연결하는 바이오 클러스터 사업도 새 정부의 주요 지원 대상이 될 것으로 기대된다.", "[Source 2] 경기도는 AI 기술 기반 창업과 산업 전환을 촉진하기 위한 지역 맞춤형 AI 혁신 클러스터를 조성 중이다.", "[Source 3] 경기도가 반도체·인공지능(AI) 중심 미래산업 육성과 광역교통망 확충, 지역 균형발전 전략을 동시 추진하는 정책 행보에 나서고 있다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "모든 출처는 이재명 정치인과 반도체/바이오 클러스터 정책을 직접적이고 의미 있게 다루고 있습니다. 이재명 지사(또는 대통령)의 재임 중 성과, 미래 비전, 그리고 정부의 주요 프로젝트로서 반도체 및 바이오 클러스터 구축 계획이 명확하게 언급됩니다.", "evidence_spans": ["용인 반도체 클러스터 산업단지 유치로 10년간 122조원 투자, 1만 7천명 이상 직접 고용 효과를 얻게 됐으며", "이재명 대통령이 반도체 등 첨단기술 산업에 대한 지원 확대를 거듭 강조하면서 경기도가 미래 산업의 핵심 거점으로 재편될 가능성이 커지고 있다.", "부천에서는 반도체와 의료바이오 메카 첨단복합단지를 조성해 글로벌 비즈니스 허브로 도약시키겠다는 비전을 제시했으며", "경기도가 추진 중인 수원 광교~시흥~경기 북부를 연결하는 바이오 클러스터 사업도 새 정부의 주요 지원 대상이 될 것으로 기대된다.", "이재명 정부 출범 이후 도는 ‘미래성장 3대 프로젝트’를 정부에 선제적으로 건의하면서 국정과제와의 조화를 꾀하고 있다. 3대 프로젝트는 △K-반도체 메가클러스터 구축"], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 2, "politician": "이재명", "policy": "RE100 및 기후테크 정책", "industry_or_sector": "재생에너지/기후테크", "companies": [], "impact_description": "경기도 기후펀드 및 RE100 전환 정책으로 재생에너지/기후테크 산업 지원", "impact_result": {"label": "PARTIALLY_SUPPORTED", "score": 0.7, "reasoning": "제공된 출처 중 Source 2는 경기도가 미래성장 3대 프로젝트의 일환으로 기후테크 클러스터 조성 및 RE100 대전환을 추진하고 있음을 명시하여 재생에너지/기후테크 산업 지원 및 RE100 전환 정책 부분을 뒷받침합니다. 그러나 \"기후펀드\"에 대한 구체적인 언급은 찾을 수 없어 설명의 일부만 지원됩니다.", "evidence_spans": ["[Source 2] 3대 프로젝트는 △K-반도체 메가클러스터 구축 △기후테크 클러스터 조성 및 RE100(기업 전력량의 100%를 재생에너지원 사용해 생산한 전력 사용) 대전환 △AI 컴퓨팅센터 민간 유치 및 AI 특구 지정이다.", "[Source 2] 경기도가 반도체·인공지능(AI) 중심 미래산업 육성과 광역교통망 확충, 지역 균형발전 전략을 동시 추진하는 정책 행보에 나서고 있다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.85, "reasoning": "제공된 두 기사 중 두 번째 기사에서 '이재명 정부 출범 이후' 경기도가 추진하는 '미래성장 3대 프로젝트'에 '기후테크 클러스터 조성 및 RE100 대전환'이 명시적으로 포함되어 있습니다. 기사 내용상 '이재명'이 해당 정책과 직접적으로 연관되어 중요한 행위자로 언급되고 있습니다. 첫 번째 기사는 이재명 지사의 과거 정책 성과를 다루지만, RE100 및 기후테크 정책은 언급하지 않습니다.", "evidence_spans": ["기후테크 클러스터 조성 및 RE100(기업 전력량의 100%를 재생에너지원 사용해 생산한 전력 사용) 대전환", "2일 경기도에 따르면 이재명 정부 출범 이후 도는 ‘미래성장 3대 프로젝트’를 정부에 선제적으로 건의하면서 국정과제와의 조화를 꾀하고 있다. 3대 프로젝트는 △K-반도체 메가클러스터 구축 △기후테크 클러스터 조성 및 RE100(기업 전력량의 100%를 재생에너지원 사용해 생산한 전력 사용) 대전환 △AI 컴퓨팅센터 민간 유치 및 AI 특구 지정이다.", "경기도는 이재명 대통령이 민선 7기 경기도지사를 지낸 만큼 경기도의 미래 현안에 이해가 남다를 것이라며 기대하는 분위기"], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 3, "politician": "이재명", "policy": "주택 정책", "industry_or_sector": "주택 건설", "companies": ["KD건설"], "impact_description": "기본주택 공급 정책 발표 후 KD건설 주가 급등 (단, 기업 재무 상태 및 투자 리스크 존재)", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 출처는 이재명 지사의 기본주택 공급 정책 발표 후 KD건설의 주가가 급등했다는 내용과 함께, 기업의 재무 상태 악화 및 오너리스크, 유상증자로 인한 주식 가치 희석 등 투자 리스크가 존재한다는 내용을 명확하게 뒷받침합니다.", "evidence_spans": ["[Source 1] 이재명 ’기본주택‘ 공약에 상한가 두 번···", "[Source 1] KD는 이 지사의 대선 출마와 대규모 유상증자 발표가 맞물리면서 이틀 만에 70% 가량 급등한 상태다.", "[Source 1] 다만 KD는 오너리스크, 주식담보대출 반대매매 가능성, 주식가치 희석 위험 등을 떠안고 있어 ‘묻지마식 투자’는 자제해야 한다는 지적이 나온다.", "[Source 1] KD는 지난 2018년과 2019년 회계 감사인으로부터 ‘의견거절’을 받을 정도로 재무구조가 악화돼 있다.", "[Source 1] 올해 1분기 기준 차입금은 624억원, 부채비율도 416.8%에 달한다.", "[Source 1] KD의 ‘오너리스크’도 핵심 투자위험 가운데 하나다.", "[Source 1] 이번 유상증자로 총 주식수가 두 배 가까이 늘어나기 때문에 향후 주가 희석도 피할 수 없다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "제공된 기사는 이재명 정치인의 '기본주택' 공약이 건설업종에 미치는 영향과 관련 기업의 주가 변동에 대해 상세히 다루고 있어, 이재명과 주택 정책 간의 연관성이 매우 높습니다.", "evidence_spans": ["이재명 ’기본주택‘ 공약에 상한가 두 번", "이재명 경기도지사의 정책 수혜주로 꼽힌 KD에 대한 투자자들의 관심이 커지고 있다.", "‘기본주택’을 충분히 공급해 집값을 잡겠다는 이 지사의 발언이 건설업종의 수주 확대 기대감으로 이어진 셈이다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 4, "politician": "이재명", "policy": "평화경제 시범지구 및 지역 개발", "industry_or_sector": "철강/인프라", "companies": [], "impact_description": "평화경제 시범지구 조성으로 북한 협력 산업(철강, 인프라) 간접 영향 추정", "impact_result": {"label": "UNSUPPORTED", "score": 0.1, "reasoning": "제공된 출처는 2026년도 정부 예산안 합의 통과에 대한 내용이며, 평화경제 시범지구 조성이나 북한 협력 산업(철강, 인프라)에 대한 간접적인 영향에 대한 언급이 전혀 없습니다. 따라서 주어진 영향 설명은 출처에 의해 뒷받침되지 않습니다.", "evidence_spans": [], "error_type": "NONE"}, "attribution_result": {"label": "WEAKLY_RELATED", "score": 0.5, "reasoning": "기사는 이재명 정치인과 관련된 예산안 통과에 대해 다루고 있으며, '이재명 정부' 및 '이재명표 예산'이라는 표현을 통해 이재명 정치인이 핵심적으로 언급됩니다. 하지만 '평화경제 시범지구 및 지역 개발'이라는 특정 정책은 기사 내용에서 직접적으로 언급되지 않습니다.", "evidence_spans": ["‘이재명표 예산’은 그대로", "이재명 정부가 수립한 첫 예산안이며", "민주당은 이재명 정부 첫 예산인 만큼 야당과 합의하는 모양새가 필요했고"], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": false}}], "gold_eval": {"similarity_score": 0.75, "reasoning": "두 보고서는 이재명 의원의 기본소득 및 친환경 에너지 정책을 공통적으로 다루며 관련 산업과 기업을 유사하게 분석했습니다. 그러나 부동산 정책에서 Gold Report는 민간 시장 규제를, Model Report는 공공 주거 확대를 강조하여 접근 방식이 달랐습니다. Gold Report는 기본소득의 플랫폼 산업 영향과 신재생에너지의 이차전지 산업 연관성을 더 깊이 다루어 더 구체적이고 균형 잡힌 시장 파급 효과 설명을 제공했습니다. Model Report는 긍정적 측면에 집중하는 경향이 있었습니다.", "model_unique_points": ["청년 주거 안정화를 위한 공공임대주택 확대 정책과 공공 건설 부문의 영향 분석.", "친환경 에너지 전환 정책에서 RE100 지원을 통한 기업의 재생에너지 사용 확대 측면 강조."], "gold_unique_points": ["다주택자 규제 강화를 통한 민간 부동산 시장 안정화 정책과 그에 따른 민간 건설사 영향 분석.", "기본소득 정책이 플랫폼 산업 및 특정 온라인 유통 기업에 미치는 영향에 대한 심층 분석.", "신재생에너지 정책에서 이차전지 산업 및 관련 기업의 성장 가능성 강조."]}}} +{"query": "문재인", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "문재인", "policy": "탈원전 정책", "industry_or_sector": "원자력 산업", "companies": ["Youngjin Techwin", "Kyungsung Electric"], "impact_description": "Youngjin Techwin과 Kyungsung Electric은 원자력 장비 제조업체로, 문재인 정부의 탈원전 정책으로 인해 심각한 재정적 손실을 겪었습니다. Youngjin Techwin의 경우 매출이 30억 원에서 8억 원으로 급감했습니다.", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 출처들은 임팩트 설명의 모든 핵심 내용을 명확하게 뒷받침합니다. 출처 1은 영진테크윈과 경성전기가 원자력 장비 제조업체임을 확인하고, 문재인 정부의 탈원전 정책으로 인해 재정적 어려움을 겪었음을 명시합니다. 특히 영진테크윈의 연간 매출이 30억 원에서 8억 원으로 급감했다는 구체적인 수치도 언급되어 있습니다. 출처 2는 문재인 정부의 탈원전 정책이 한국 원자력 산업 전반에 부정적인 영향을 미쳤음을 추가적으로 뒷받침합니다.", "evidence_spans": ["[Source 1] A view of Youngjin Techwin's factory, a nuclear power plant equipment manufacturer in Changwon, South Gyeongsang", "[Source 1] During the Moon Jae-in administration's nuclear phaseout, the company managed to survive on residual orders — but after those dried up, business came to a halt. Annual revenue fell from 3 billion won ($2.1 million) to 800 million won.", "[Source 1] Kyungsung Electric in Busan’s Noksan Industrial Complex, a supplier of core nuclear equipment, faces a similar situation. Both its workforce and revenue have been cut in", "[Source 2] Despite this robust global competitiveness, South Korea’s nuclear power industry was nearly dismantled by the ‘nuclear phase-out’ policy. Former President Moon Jae-in’s nuclear phase-out policy was incomprehensible from start to finish."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "두 출처 모두 문재인 전 대통령의 탈원전 정책을 명확하게 언급하며, 이 정책이 국내 원자력 산업에 미친 영향과 그에 대한 비판적 시각을 상세히 다루고 있습니다. 문재인 대통령이 정책의 주요 결정권자로 등장하며, 탈원전 정책이 기사의 핵심 주제입니다.", "evidence_spans": ["문재인 행정부의 탈원전 정책 기간 동안, 회사는 잔여 주문으로 겨우 버텼지만, 그것마저 바닥나자 사업이 중단되었습니다.", "문재인 전 대통령의 탈원전 정책은 처음부터 끝까지 이해할 수 없었습니다.", "문재인의 탈원전 정책은 국가적 자해로 판명되었습니다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 1, "politician": "문재인", "policy": "최저임금 인상 정책", "industry_or_sector": "소상공인", "companies": [], "impact_description": "2018년 최저임금 16.4% 인상(7,530원)으로 소기업들이 운영 부담을 겪었으며, 기업 로비단체들은 이 정책이 사업 환경과 고용 창출에 부정적 영향을 줄 것이라고 비판했습니다.", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 출처는 2018년 최저임금 16.4% 인상(7,530원)으로 소기업들이 운영 부담을 겪었으며, 기업 로비단체들이 이 정책이 사업 환경과 고용 창출에 부정적인 영향을 줄 것이라고 비판했다는 내용을 명확하게 뒷받침합니다.", "evidence_spans": ["[Source 1] A panel representing the government, labor and management decided Saturday to raise the minimum hourly wage to 7,530 won ($6.64) for 2018, up 16.4 percent from this year.", "[Source 1] \"The decision will be a huge momentum for an income-led growth, but it could put a heavy burden on small business owners,\" Finance Minister Kim Dong-yeon said...", "[Source 1] Earlier in the day, major corporate lobbies expressed concerns that the increase could worsen business conditions and hamper job creation."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "제공된 기사는 최저임금 인상 정책에 대해 상세히 다루고 있으며, 문재인 대통령이 임기 내 최저임금을 1만원으로 인상하겠다고 공약한 사실을 명확히 언급하고 있습니다. 따라서 정치인과 정책 모두 기사의 핵심 내용과 밀접하게 관련되어 있습니다.", "evidence_spans": ["President Moon Jae-in has promised to increase the minimum wage to 10,000 won per hour before his five-year term ends in May 2022.", "South Korea to support small businesses after minimum wage hike", "the government will promptly come up with measures to relieve smaller businesses of the burden from a decision to hike the minimum wage for next year."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 2, "politician": "문재인", "policy": "바이오헬스 산업 지원 정책", "industry_or_sector": "바이오헬스 산업", "companies": ["Samsung Biologics", "Celltrion"], "impact_description": "문재인 정부는 바이오헬스 산업을 성장 동력으로 지정하고 연간 33억 달러(4조 원)의 R&D 투자를 약속했습니다. 삼성바이오로직스와 셀트리온과 같은 국내 제약사들이 간접적으로 혜택을 받은 것으로 보입니다.", "impact_result": {"label": "PARTIALLY_SUPPORTED", "score": 0.7, "reasoning": "문재인 정부가 바이오헬스 산업을 성장 동력으로 지정하고 연간 33억 달러(4조 원)의 R&D 투자를 약속했다는 내용은 출처에서 명확히 확인됩니다. 또한 국내 바이오 및 제약 기업들이 유럽 시장에 더 쉽게 진출할 수 있게 되었다는 언급을 통해 간접적인 혜택이 있었음을 유추할 수 있습니다. 하지만 삼성바이오로직스와 셀트리온이 직접적으로 혜택을 받았다는 구체적인 언급은 출처에 없습니다.", "evidence_spans": ["[Source 1] President Moon to boost bio-health industry, one of S. Korea’s 3 new growth engines", "[Source 1] 문 대통령 바이오헬스 국가비전 선포식 참석, '정부 R&D 25년까지 연간 4조원 이상 확대 할 것'", "[Source 1] To that end, he explained the government will invest 3-point-3 billion U.S. dollars annually into the industry's R&D sector through 2025.", "[Source 1] the president said now the country's bio and pharmaceutical firms can enter the European market more easily."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "제공된 출처는 문재인 대통령이 바이오헬스 산업 지원 정책을 추진하고 있음을 명확하게 언급하고 있습니다. 문 대통령이 바이오헬스 국가비전 선포식에 참석하여 정부의 R&D 투자 확대 계획을 밝히는 등 정책의 핵심 주체로 등장합니다.", "evidence_spans": ["President Moon Jae-in pledges support for bio-health industry", "문 대통령 바이오헬스 국가비전 선포식 참석, '정부 R&D 25년까지 연간 4조원 이상 확대 할 것'", "President Moon Jae-in has pledged to fully support the nation's bio-health industry,... one of three major pillars identified as new economic growth engines."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}], "gold_eval": {"similarity_score": 0.7, "reasoning": "두 보고서는 이재명 의원의 기본소득 및 일부 인프라 정책에 대한 분석에서 유사점을 보였습니다. 골드 보고서는 부동산 시장 안정화 정책과 대규모 국책 사업의 경제적 파급 효과를 심층적으로 다룬 반면, 모델 보고서는 소상공인 및 지역 특화 산업 지원 정책에 대한 독자적인 관점을 제시했습니다. 전반적으로 골드 보고서가 주요 거시 경제 정책의 시장 영향 분석에서 더 깊이 있는 설명을 제공했습니다.", "model_unique_points": ["소상공인 및 중소기업 지원 정책이 지역 경제 활성화에 미치는 영향", "지역 특화 산업 육성 방안과 관련 중소 제조 기업의 성장 가능성"], "gold_unique_points": ["부동산 시장 안정화 정책이 건설 및 금융 산업에 미치는 구체적인 영향 분석", "대규모 국책 사업 추진에 따른 특정 대기업 및 관련 하청 기업의 수혜 전망"]}}} +{"query": "박근혜", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "박근혜", "policy": "창조경제 정책", "industry_or_sector": "테크 스타트업", "companies": ["Marine Techno", "DOT", "TEGway", "KPT", "CES"], "impact_description": "박근혜 정부의 창조경제 정책은 17개 창조경제혁신센터를 통해 920개 스타트업을 지원했으며, 1436억 원의 투자 유치, 769억 원의 매출 창출, 750개의 일자리 생성에 기여했습니다. 이 정책은 사우디아라비아, 브라질, 온두라스에 수출되기도 했습니다.", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 출처는 박근혜 정부의 창조경제 정책이 17개 창조경제혁신센터를 통해 920개 스타트업을 지원하고, 1436억 원의 투자 유치, 769억 원의 매출 창출, 750개의 일자리 생성에 기여했으며, 사우디아라비아, 브라질, 온두라스에 수출되었다는 내용을 모두 명확하게 뒷받침합니다. 또한, Marine Techno, DOT, TEGway, KPT, CES 등 언급된 기업들이 창조경제혁신센터의 지원을 받아 성공한 사례로 제시되어 있습니다.", "evidence_spans": ["[Source 1] The CCEIs assisted in the business of 920 startups as of the end of March this year, attracting an investment of 143.6 billion won in total. In addition, the firms have increased their sales by 76.9 billion won and employed 750 persons with the CCEIs.", "[Source 1] Last year, its CCEI model was exported to Saudi Arabia, Brazil, Honduras and many more to add to the global interest in and reputation of South Korea’s creative economy policy.", "[Source 1] Marine Techno, which produces cosmetics by using collagen extracted from marine biomass, succeeded in crowd funding with the South Jeolla Provincial CCEI. The other similar examples include DOT and TEGway. KPT, in the meantime, developed bead-shaped cosmetics in cooperation with the LG Group and CES developed heating cables for agricultural use by making use of Hyosung’s carbon fiber."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "이 기사는 박근혜 정부의 핵심 경제 정책인 창조경제 정책에 대한 인터뷰로, 박근혜 대통령과 정책이 직접적이고 중요하게 언급됩니다. 정책의 배경, 성과, 성공 사례 등을 다루고 있습니다.", "evidence_spans": ["박근혜 정부의 경제 아이콘인 창조경제가 출범 4주년을 맞이하면서", "현 정부의 창조경제 정책은 이제 4년째를 맞이하고 있습니다.", "박근혜 대통령의 해외 순방 기간 동안"], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 1, "politician": "박근혜", "policy": "창조경제 정책", "industry_or_sector": "재벌(Chaebol)", "companies": ["LG Group", "Hyosung"], "impact_description": "LG 그룹은 스타트업 KPT(비드형 화장품)와 협력했고, 효성은 CES(탄소섬유 활용 난방 케이블 개발)와 협력했습니다. 이 정책은 재벌 중심의 전략에서 벗어나 중소기업과 스타트업을 주요 일자리 창출자로 육성하려는 목표를 가졌습니다.", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 출처는 LG 그룹이 스타트업 KPT와 비드형 화장품 개발에 협력했고, 효성이 CES와 탄소섬유를 활용한 난방 케이블 개발에 협력했다는 내용을 명확하게 언급합니다. 또한, 출처는 창조경제 정책을 통해 중소기업과 스타트업을 육성하고 일자리를 창출하려는 정부의 노력을 설명하며, 이는 재벌 중심 전략에서 벗어나려는 정책 목표와 일치합니다.", "evidence_spans": ["[Source 1] KPT, in the meantime, developed bead-shaped cosmetics in cooperation with the LG Group", "[Source 1] and CES developed heating cables for agricultural use by making use of Hyosung’s carbon fiber.", "[Source 1] Creative economy platforms have been set up in the form of 17 Centers for Creative Economy & Innovation (CCEIs)... The CCEIs assisted in the business of 920 startups as of the end of March this year, attracting an investment of 143.6 billion won in total. In addition, the firms have increased their sales by 76.9 billion won and employed 750 persons with the CCEIs."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "제공된 기사는 박근혜 정부의 핵심 경제 정책인 창조경제 정책의 4주년을 맞아 해당 정책을 담당하는 인물과의 인터뷰 내용을 다루고 있습니다. 박근혜 대통령과 창조경제 정책이 직접적이고 중요하게 언급되며, 정책의 성과와 사례를 상세히 설명하고 있어 관련성이 매우 높습니다.", "evidence_spans": ["Park Geun-hye’s administration’s economic icon Creative Economy", "creative economy policy", "President Park Geun-hye’s visit"], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 2, "politician": "박근혜", "policy": "창조경제 정책", "industry_or_sector": "중소기업(SMEs)", "companies": ["Korea Federation of SMEs"], "impact_description": "한국중소기업연합회는 창조경제 정책 논의에 참여했습니다. 이 정책은 중소기업과 스타트업의 성장을 촉진하면서도 재벌의 지배 구조가 혁신을 저해한다는 비판을 받았습니다.", "impact_result": {"label": "PARTIALLY_SUPPORTED", "score": 0.6, "reasoning": "제공된 출처는 중소기업중앙회가 박근혜 정부의 주요 정책 기조인 창조경제 정책 논의에 참여했음을 명확히 보여줍니다. 또한, 중소기업 육성(스몰자이언츠 육성)이 정부의 핵심 중소기업 정책 과제로 논의되었음을 언급하여 중소기업 성장을 촉진한다는 부분은 부분적으로 지지됩니다. 그러나 창조경제 정책이 재벌의 지배 구조로 인해 혁신을 저해한다는 비판을 받았다는 내용은 출처에서 찾을 수 없습니다.", "evidence_spans": ["[Source 1] 중소기업중앙회는 19~22일 3박 4일간 일정으로 롯데호텔 제주에서 업종별 중소기업 대표, 본 에스티스 한도숙 대표등 600여명이 참석한 가운데 ‘2013 중소기업 리더스포럼’를 개최한다. ... 박근혜 정부의 주요 정책기조인 창조경제와 경제민주화의 해법을 찾기 위해 한자리에 모인다.", "[Source 1] 스몰자이언츠 육성, 경제민주화 등을 정부의 핵심 중소기업 정책과제로 자리잡을 수 있도록 한 게 대표적이다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "제공된 기사는 박근혜 정부의 주요 정책 기조인 창조경제를 중소기업 CEO들이 논의하는 포럼에 대해 다루고 있습니다. 박근혜 대통령과 창조경제 정책이 직접적으로 언급되며, 정책의 주체와 내용이 명확하게 연결되어 있습니다.", "evidence_spans": ["국내 중소기업 CEO들이 박근혜 정부의 주요 정책기조인 창조경제와 경제민주화의 해법을 찾기 위해 한자리에 모인다.", "박근혜 대통령의 경제브레인으로 알려진 김광두 국가미래연구원장이 19일 개막 기조강연에 나선다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 3, "politician": "박근혜", "policy": "삼성 합병 승인 개입", "industry_or_sector": "재벌(Chaebol)", "companies": ["Samsung Group"], "impact_description": "박근혜 대통령은 최순실과 공모해 삼성그룹에 2050만 파운드(약 2700만 달러)의 뇌물을 요구한 혐의로 기소되었습니다. 삼성의 이재용 부회장은 최순실의 딸 승마 훈련 비용 및 재단 기부금을 제공한 혐의로 조사받았으며, 이는 2015년 삼성물산과 제일모직 합병과 관련이 있습니다.", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 모든 출처는 박근혜 대통령이 최순실과 공모하여 삼성그룹에 뇌물을 요구한 혐의로 기소되었으며, 그 금액이 약 2050만 파운드(약 2700만 달러)에 달한다는 내용을 지지합니다. 또한, 삼성 이재용 부회장이 최순실 딸의 승마 훈련 비용과 재단 기부금을 제공한 혐의로 조사를 받았으며, 이 모든 것이 2015년 삼성물산과 제일모직 합병과 관련이 있다는 내용도 명확하게 뒷받침됩니다.", "evidence_spans": ["[Source 1] Prosecutors accuse Park of abusing her power and colluding with her longtime friend, Choi Soon-sil, to pressure major South Korean companies such as Samsung into paying tens of millions of dollars in bribes in return for business favours.", "[Source 1] The scandal has ensnared senior government officials and business leaders, including Lee Jae-yong, the acting head of Samsung, from whom she is alleged to have taken about 29.8bn won (£20.5m) in bribes in return for favours that aided Lee’s rise to the top of the company.", "[Source 2] Lee Jae-yong, Samsung Electronics’ vice chairman, will be summoned to face questions by investigators probing whether South Korea’s largest business group bribed a jailed confidante of President Park Geun-hye to win favors", "[Source 2] Prosecutors are expected to grill Lee starting Thursday regarding why Samsung Group sent corporate funds to Choi Soon-sil, the jailed confidante, including buying costly horses for her daughter, who was on the national dressage team.", "[Source 2] Those possible favors include getting the government’s backing on a controversial Samsung merger in 2015 that was opposed by minority shareholders", "[Source 2] Lee and members of his family were the biggest beneficiaries of the merger of Samsung C&T and Cheil Industries", "[Source 2] According to local media and legislators, Samsung signed a contract worth over $18 million with Choi’s company to bankroll her daughter’s equestrian training in Germany and donated another $17 million to two nonprofit foundations whose funds were allegedly for Choi’s personal use.", "[Source 3] Its headquarters were raided on 8 November to investigate whether it gave $3.1m to a German company Choi owned. This money, the Yonhap news agency reported, was used by Choi to fund dressage training for her own daughter."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "소스들은 박근혜 전 대통령이 삼성 합병 승인 과정에 개입하여 뇌물을 받았다는 의혹을 직접적으로 다루고 있습니다. 특히 소스 2는 2015년 삼성 합병에 대한 정부의 지원을 뇌물과 연관 지어 명확하게 언급하고 있습니다.", "evidence_spans": ["Park accused of putting pressure on firms including Samsung into paying millions in bribes in return for business favours", "Lee Jae-yong, the acting head of Samsung, from whom she is alleged to have taken about 29.8bn won (£20.5m) in bribes in return for favours that aided Lee’s rise to the top of the company.", "Those possible favors include getting the government’s backing on a controversial Samsung merger in 2015 that was opposed by minority shareholders", "The pension fund, the biggest shareholder in Samsung C&T, voted for the merger even though its advisers recommended voting against it, giving the crucial vote Samsung needed to secure shareholder approval."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 4, "politician": "박근혜", "policy": "원자력 에너지 정책", "industry_or_sector": "원자력 산업", "companies": ["KEPCO", "Korea Hydro & Nuclear Power (KHNP)"], "impact_description": "박근혜 정부는 원전 수출 확대 및 후쿠시마 사고 이후 안전 강화 정책을 추진했습니다. KEPCO와 한국수력원자력은 원전 운영을 담당했으며, UAE 원전 수출 계약이 주요 성과로 꼽힙니다. 그러나 원자력안전위원회(NSSC)의 지위 강등 계획은 이해관계 충돌 우려로 비판을 받았습니다.", "impact_result": {"label": "PARTIALLY_SUPPORTED", "score": 0.6, "reasoning": "제공된 자료에 따르면 박근혜 정부가 원전 수출 확대 및 후쿠시마 사고 이후 안전 강화 정책을 추진했다는 내용은 [Source 2]에서 명확히 언급되어 있습니다. 또한 KEPCO와 한국수력원자력의 원전 운영 역할은 [Source 1]에서 확인되며, UAE 원전 수출 계약은 이명박 정부 시기에 체결되었으나 박근혜 정부가 원전 수출을 지속적으로 추진하는 맥락에서 주요 성과로 언급될 수 있습니다. 그러나 원자력안전위원회(NSSC)의 지위 강등 계획 및 이에 대한 비판에 대한 내용은 두 자료 모두에서 찾을 수 없습니다. 따라서 설명의 일부는 지지되지만, 중요한 한 부분이 누락되어 '부분적으로 지지됨'으로 판단합니다.", "evidence_spans": ["[Source 2] Park is expected to promote domestic nuclear power plant development and reactor exports, such as the historic $20 billion deal signed in December 2009, under the Lee administration, with the United Arab Emirates for the supply of four reactors.", "[Source 2] The 140 policy tasks contained in the road map include 'boosting reactor exports, an objective the Lee administration shared, and introducing more stringent nuclear power plant safeguards in South Korea, a continuation of a policy Mr Lee adopted after the 2011 Fukushima nuclear disaster,' said Sheen.", "[Source 1] The Korea Electric Power Corporation (KEPCO), a public power generation company, monopolizes electricity production, transmission, distribution, and sales in the country. Korea Hydro & Nuclear Power Co. (KHNP), a subsidiary of KEPCO, operates the NPPs..."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "두 출처 모두 한국의 원자력 에너지 정책을 다루고 있으며, 특히 출처 2는 박근혜 정부의 원자력 에너지 정책 방향과 이명박 정부와의 연속성을 명확하게 설명하고 있습니다. 박근혜 대통령이 원자력 발전소 개발 및 수출 촉진, 원자력 발전소 안전 강화 등의 정책을 추진할 것으로 예상된다는 내용이 구체적으로 언급되어 있습니다.", "evidence_spans": ["박근혜 새 한국 정부는 전임 정부의 확고한 원자력 에너지 프로그램 지지에서 흔들리지 않을 것으로 보인다.", "분석가들은 그녀의 원자력 에너지 정책이 전임자인 이명박 대통령의 정책과 거의 동일할 것이라고 예측한다.", "이명박 대통령처럼 박근혜 대통령도 국내 원자력 발전소 개발과 원자로 수출을 장려할 것으로 예상된다.", "박근혜 대통령은 후쿠시마 이후 한국에 더 많은 원자력 발전소를 건설하는 것에 대한 강한 저항에도 불구하고 이를 극복하고 더 많은 원자로를 설치하기를 원한다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}], "gold_eval": {"similarity_score": 0.7, "reasoning": "두 보고서는 이재명 의원의 기본소득 및 일부 인프라 정책에 대한 분석에서 유사점을 보였습니다. 골드 보고서는 부동산 시장 안정화 정책과 대규모 국책 사업의 경제적 파급 효과를 심층적으로 다룬 반면, 모델 보고서는 소상공인 및 지역 특화 산업 지원 정책에 대한 독자적인 관점을 제시했습니다. 전반적으로 골드 보고서가 주요 거시 경제 정책의 시장 영향 분석에서 더 깊이 있는 설명을 제공했습니다.", "model_unique_points": ["소상공인 및 중소기업 지원 정책이 지역 경제 활성화에 미치는 영향", "지역 특화 산업 육성 방안과 관련 중소 제조 기업의 성장 가능성"], "gold_unique_points": ["부동산 시장 안정화 정책이 건설 및 금융 산업에 미치는 구체적인 영향 분석", "대규모 국책 사업 추진에 따른 특정 대기업 및 관련 하청 기업의 수혜 전망"]}}} +{"query": "이명박", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "Lee Myung-bak", "policy": "4 Rivers Project", "industry_or_sector": "건설업", "companies": ["삼환기업"], "impact_description": "4대강 프로젝트의 실질적인 수혜주로 지목되었으며, 토목 건설 분야에서 직접적인 혜택을 받은 것으로 확인됨", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 소스 중 [Source 1]은 삼환기업이 정부의 '4대강 유역 정비사업 및 SOC투자'와 관련하여 실질적인 수혜주로 부각되고 있으며, 토목사업에서 기업 역량을 발휘할 좋은 기회가 될 것이라고 명시하고 있습니다. 또한 삼환기업의 토목 비중과 보유 기술이 4대강 정비사업에 필요하다고 언급하며 수혜가 예상된다고 밝히고 있어, 영향 설명의 핵심 내용이 명확하게 뒷받침됩니다. [Source 2]는 4대강 사업과 같은 토목 사업이 토건주의자(건설업체)에게 이익이 된다는 일반적인 비판을 담고 있으나, 삼환기업을 직접적으로 언급하지는 않습니다.", "evidence_spans": ["[Source 1] 국내 대표적 토목건설사인 삼환기업이 정부에서 추진하는 '4대강 유역 정비사업 및 SOC투자'와 관련, 실질적인 수혜주로 부각되면서 시장으로부터 관심을 끌고 있다.", "[Source 1] 4대강 정비사업과 같은 토목사업이야말로 삼환의 기업역량을 발휘한 아주 좋은 기회가 될 것", "[Source 1] 시장관계자는 \"삼환기업은 토목비중이 43%를 차지하고 있어 도로, 철도, 하천 정비 등의 사업을 추진하겠다는 정부의 정책에 따른 수혜가 예상된다\"며 \"삼환기업이 보유한 '쉴드방식'의 첨단 터널 굴착방식과 기존 콘크리트 옹벽을 대신한 '파형강판박스' 옹벽기술은 4대강 정비사업의 완성도 높은 건설에 꼭 필요한 기술이 될 것\"이라고 설명했다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "두 기사 모두 '4대강 사업'을 핵심 주제로 다루고 있으며, 특히 두 번째 기사에서는 '이명박정부의 4대강 사업'을 명시적으로 언급하며 정책과 정치인을 직접적으로 연결하고 있습니다. 첫 번째 기사는 4대강 사업의 수혜 기업을 다루고 있어 정책과의 관련성이 높습니다.", "evidence_spans": ["삼환기업이 정부에서 추진하는 '4대강 유역 정비사업 및 SOC투자'와 관련, 실질적인 수혜주로 부각되면서 시장으로부터 관심을 끌고 있다.", "이명박정부의 4대강 사업처럼 토건주의자 배만 불리는 댐 아니냐", "물 분야와 관련해 4대강 보 운영 방침으로 재자연화를 포기했다"], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 1, "politician": "Lee Myung-bak", "policy": "Green Growth Strategy", "industry_or_sector": "재생에너지", "companies": [], "impact_description": "재생에너지 분야(태양광, 풍력) 수출 산업 육성을 위한 40조 원 투자 계획 발표. KEPCO, LSIS, Samsung SDI 등이 스마트그리드 및 재생에너지 분야에서 언급되었으나, 정책 혜택과의 직접적 연관성은 확인되지 않음", "impact_result": {"label": "PARTIALLY_SUPPORTED", "score": 0.7, "reasoning": "제공된 출처는 재생에너지(태양광, 풍력) 수출 산업 육성을 위한 40조 원 투자 계획 발표를 명확히 뒷받침합니다. 그러나 KEPCO, LSIS, Samsung SDI와 같은 특정 기업들이 스마트그리드 및 재생에너지 분야에서 언급되었는지, 그리고 이들이 정책 혜택과 직접적인 연관성이 있는지에 대한 정보는 출처에서 찾을 수 없습니다.", "evidence_spans": ["[Source 1] South Korea plans to invest 40 trillion won to develop renewable energy", "[Source 1] the government has committed to investing 40 trillion won by 2015 in collaboration with private companies, aiming to transform solar and wind energy into industries comparable to semiconductors and shipbuilding", "[Source 1] Under the strategy, the government and private sector will jointly invest 7 trillion won and 33 trillion won over the next five years to develop renewable energy as a major export industry."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "제공된 자료는 이명박 대통령이 주재한 녹색성장위원회 회의에서 신재생에너지 산업 발전 전략 보고서가 발표되었음을 명시하고 있습니다. 또한 이명박 대통령이 녹색 성장의 리더십을 언급하며 정책 추진을 독려하는 내용이 포함되어 있어, 이명박 대통령과 녹색 성장 전략이 매우 직접적으로 관련되어 있음을 보여줍니다.", "evidence_spans": ["South Korean government unveiled its \"New Energy and Renewable Energy Industry Development Strategy Report\" during the 9th Green Growth Committee meeting chaired by President Lee Myung-bak.", "President Lee Myung-bak acknowledged that while South Korea is recognized as a leader in green growth, it still lags behind developed countries in technology and everyday applications."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}], "gold_eval": {"similarity_score": 0.75, "reasoning": "두 보고서는 이재명 의원의 기본소득 및 친환경 에너지 정책을 공통적으로 다루며 관련 산업과 기업을 유사하게 분석했습니다. 그러나 부동산 정책에서 Gold Report는 민간 시장 규제를, Model Report는 공공 주거 확대를 강조하여 접근 방식이 달랐습니다. Gold Report는 기본소득의 플랫폼 산업 영향과 신재생에너지의 이차전지 산업 연관성을 더 깊이 다루어 더 구체적이고 균형 잡힌 시장 파급 효과 설명을 제공했습니다. Model Report는 긍정적 측면에 집중하는 경향이 있었습니다.", "model_unique_points": ["청년 주거 안정화를 위한 공공임대주택 확대 정책과 공공 건설 부문의 영향 분석.", "친환경 에너지 전환 정책에서 RE100 지원을 통한 기업의 재생에너지 사용 확대 측면 강조."], "gold_unique_points": ["다주택자 규제 강화를 통한 민간 부동산 시장 안정화 정책과 그에 따른 민간 건설사 영향 분석.", "기본소득 정책이 플랫폼 산업 및 특정 온라인 유통 기업에 미치는 영향에 대한 심층 분석.", "신재생에너지 정책에서 이차전지 산업 및 관련 기업의 성장 가능성 강조."]}}} +{"query": "홍준표", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "홍준표", "policy": "도시 재개발 및 재건축을 통한 5년간 100만 주택 공급, 초과이익환수제 및 종합부동산세 폐지, 농업·녹지·산지 규제 완화", "industry_or_sector": "건설/부동산", "companies": [], "impact_description": "홍준표의 주택 공급 확대 정책은 건설 및 부동산 산업에 영향을 미치지만, 특정 기업이 수혜를 받는다는 직접적인 증거는 없음", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "두 출처 모두 홍준표의 주택 공급 확대 정책(재건축·재개발 100만가구 공급, 규제 완화 등)을 상세히 설명하고 있으며, 이러한 정책이 침체된 건설 경기를 회복시키고 부동산 시장에 영향을 미칠 것이라고 명시하고 있습니다. 또한, 두 출처 모두 특정 기업이 직접적인 수혜를 받는다는 증거는 제시하지 않고 있어, 주어진 설명이 전적으로 뒷받침됩니다.", "evidence_spans": ["[Source 1] 정비사업을 통해 현재 침체한 건설 경기를 회복시키는 동시에 주택 수요에 맞춰 공급을 확대하겠다는 의지다.", "[Source 2] 이를 통해 현재 위축된 건설경기를 되살리고 수요와 공급 여건을 현실화하겠다는 뜻으로 읽힌다.", "[Source 1] 홍준표의 주택 공급 확대 정책은 건설 및 부동산 산업에 영향을 미치지만, 특정 기업이 수혜를 받는다는 직접적인 증거는 없음", "[Source 2] 홍준표의 주택 공급 확대 정책은 건설 및 부동산 산업에 영향을 미치지만, 특정 기업이 수혜를 받는다는 직접적인 증거는 없음"], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "제공된 두 기사 모두 홍준표 후보의 부동산 공약을 상세히 다루고 있으며, 이는 주어진 정책 설명(도시 재개발 및 재건축을 통한 5년간 100만 주택 공급, 초과이익환수제 및 종합부동산세 폐지, 농업·녹지·산지 규제 완화)과 정확히 일치합니다. 홍준표 후보가 정책의 주요 주체로 명확하게 언급되고 정책 내용이 기사의 핵심 주제입니다.", "evidence_spans": ["국민의힘 대선 경선 후보인 홍준표 전 대구시장이 부동산 공약을 발표했다. 재건축·재개발을 통한 100만가구 공급, 재건축·재개발 초과이익환수제와 종합부동산세 폐지 등 규제 완화를 골자로 하는 공약들이 주로 담겼다.", "대규모 택지 공급을 위해 절대농지·그린벨트·산악지역 등에 대한 토지 규제를 대폭 완화하는 내용도 나왔다.", "국민의힘 경선에 참여하는 홍준표 후보가 16일 재건축·재개발 100만호 공급, 재건축·재개발 초과이익환수제·종합부동산세 폐지 등을 부동산 공약으로 내세웠다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 1, "politician": "홍준표", "policy": "5년간 50조 원 AI·양자컴퓨팅·초전도체·블록체인 투자, 블록체인 및 가상자산 규제 완화", "industry_or_sector": "기술/블록체인", "companies": [], "impact_description": "홍준표의 AI/블록체인 투자 정책은 해당 기술 산업에 영향을 미치지만, 특정 기업이 수혜를 받는다는 직접적인 증거는 없음", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 모든 출처는 홍준표 후보가 AI/블록체인 기술 산업에 50조원 투자 및 규제 혁파를 통해 해당 산업을 육성하겠다는 정책을 발표했음을 명확히 보여줍니다. 이는 해당 기술 산업에 영향을 미친다는 설명의 첫 번째 부분을 뒷받침합니다. 또한, 어떤 출처에서도 특정 기업이 이 정책으로 인해 직접적인 수혜를 받는다는 구체적인 증거는 언급되지 않아 설명의 두 번째 부분도 뒷받침됩니다.", "evidence_spans": ["[Source 1] 홍준표 국민의힘 대선 경선 후보는 16일 ‘초격차 기술주도 성장’을 위해 인공지능(AI)·양자·상온상압초전도체 등 연구개발 분야에 5년간 최소 50조원을 투자한다는 공약을 내놨다.", "[Source 1] 그는 “블록체인과 가상자산을 하나의 산업으로 육성하기 위해 미국 트럼프 행정부만큼 규제를 혁파하겠다”며 “블록체인 기술을 공공부문과 행정서비스에 도입하고 가상자산을 하나의 산업으로 육성하겠다”고 강조했다.", "[Source 2] 홍준표 “AI에 50조 투자…가상자산 규제 풀겠다”", "[Source 3] 홍준표, AI·양자 컴퓨팅에 50조원 투자 선언… '초격차 기술 성장' 목표", "[Source 3] 특히 블록체인 및 가상자산을 핵심 산업으로 육성하겠다고 언급했다. 그는 \"미국 트럼프 행정부 이상의 규제 혁신을 추진하여, 블록체인을 공공부문 및 행정서비스에 도입하겠다\"고 밝혔다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "모든 출처에서 홍준표 후보가 인공지능, 양자 컴퓨팅, 초전도체 등 연구개발에 5년간 50조 원을 투자하고 블록체인 및 가상자산 규제를 완화하겠다는 공약을 발표한 내용이 명확하고 직접적으로 언급되어 있습니다.", "evidence_spans": ["홍준표 국민의힘 대선 경선 후보는 16일 ‘초격차 기술주도 성장’을 위해 인공지능(AI)·양자·상온상압초전도체 등 연구개발 분야에 5년간 최소 50조원을 투자한다는 공약을 내놨다.", "그는 “블록체인과 가상자산을 하나의 산업으로 육성하기 위해 미국 트럼프 행정부만큼 규제를 혁파하겠다”며 “블록체인 기술을 공공부문과 행정서비스에 도입하고 가상자산을 하나의 산업으로 육성하겠다”고 강조했다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 2, "politician": "홍준표", "policy": "대구경북신공항 프로젝트 추진", "industry_or_sector": "건설", "companies": ["Hwasung", "Seohan", "Taewang"], "impact_description": "대구경북신공항 프로젝트에 Hwasung, Seohan, Taewang 등 건설사가 계약자로 참여했으나, 정치적 동기보다는 계약적 관계로 확인됨", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 출처는 화성산업, 서한, 태왕 등 건설사들이 대구경북신공항 SPC의 건설투자자(CI)로서 원도급사로 참여하겠다는 의사를 대구시에 전달했음을 명시하고 있습니다. 또한 홍준표 시장이 이들 건설사에 적극적인 참여를 요청하며 시공 우선권 및 인센티브를 강조한 점은 이들의 참여가 정치적 동기보다는 계약적, 사업적 관계에 기반하고 있음을 뒷받침합니다.", "evidence_spans": ["[Source 1] 지역의 대표 건설 3사인 화성산업·서한·태왕 등 대구 건설사 '빅3'가 TK 신공항 SPC의 건설투자자(CI)에 원도급사로 참여하겠다는 의지를 대구시에 전달했다.", "[Source 1] 홍 시장은 이날 이종원 화성산업 회장와 조종수 서한 회장, 노기원 태왕이앤씨 회장과 같이 간담회를 가졌다. 이 자리에서 홍 시장은 \"대형건설사의 하도급사가 아니라, 원도급사로 동등한 입장에서 TK신공항사업에 적극 참여해 달라\"고 요청했다.", "[Source 1] 홍 시장이 SPC에 참여하는 업체에 시공 우선권 및 인센티브를 준다고 강조했다. SPC 참여에 대한 의지가 강할 수 밖에 없다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "기사는 홍준표 대구시장이 대구경북신공항 SPC 구성에 직접 속도를 낼 것을 주문하고, 지역 건설사들과 간담회를 가지며 사업 참여를 독려하는 등 신공항 프로젝트 추진에 핵심적인 역할을 하고 있음을 명확히 다루고 있습니다. 정책 주제 또한 기사의 중심 내용입니다.", "evidence_spans": ["홍준표 대구시장이 직접 SPC 구성에 박차를 가할 것을 주문하면서 속도가 나는 모양새다.", "홍 시장은 이날 이종원 화성산업 회장와 조종수 서한 회장, 노기원 태왕이앤씨 회장과 같이 간담회를 가졌다. 이 자리에서 홍 시장은 \"대형건설사의 하도급사가 아니라, 원도급사로 동등한 입장에서 TK신공항사업에 적극 참여해 달라\"고 요청했다.", "홍 시장이 SPC에 참여하는 업체에 시공 우선권 및 인센티브를 준다고 강조했다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}], "gold_eval": {"similarity_score": 0.75, "reasoning": "두 보고서는 이재명 의원의 기본소득 및 친환경 에너지 정책을 공통적으로 다루며 관련 산업과 기업을 유사하게 분석했습니다. 그러나 부동산 정책에서 Gold Report는 민간 시장 규제를, Model Report는 공공 주거 확대를 강조하여 접근 방식이 달랐습니다. Gold Report는 기본소득의 플랫폼 산업 영향과 신재생에너지의 이차전지 산업 연관성을 더 깊이 다루어 더 구체적이고 균형 잡힌 시장 파급 효과 설명을 제공했습니다. Model Report는 긍정적 측면에 집중하는 경향이 있었습니다.", "model_unique_points": ["청년 주거 안정화를 위한 공공임대주택 확대 정책과 공공 건설 부문의 영향 분석.", "친환경 에너지 전환 정책에서 RE100 지원을 통한 기업의 재생에너지 사용 확대 측면 강조."], "gold_unique_points": ["다주택자 규제 강화를 통한 민간 부동산 시장 안정화 정책과 그에 따른 민간 건설사 영향 분석.", "기본소득 정책이 플랫폼 산업 및 특정 온라인 유통 기업에 미치는 영향에 대한 심층 분석.", "신재생에너지 정책에서 이차전지 산업 및 관련 기업의 성장 가능성 강조."]}}} +{"query": "안철수", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "안철수", "policy": "경제 민주화", "industry_or_sector": "재벌(가족 소유 대기업)", "companies": [], "impact_description": "경제 민주화 정책을 통해 재벌 규제 강화, 시장 독점세 부과, 계열사 분리 의무화 등을 추진했으나 특정 기업을 명시하지 않음", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 출처는 안철수 후보의 경제 민주화 정책이 재벌 규제 강화, 시장 독점세 부과, 계열사 분리 의무화 등을 추진했음을 명확하게 보여줍니다. 또한, 특정 기업을 명시하지 않고 재벌 전반에 대한 정책을 설명하고 있어 주어진 설명과 일치합니다.", "evidence_spans": ["[Source 1] Independent presidential candidate Ahn Cheol-soo on Sunday laid out his plans for economic reform centering on enhanced control of chaebol, or family-owned conglomerates.", "[Source 1] He pledged to push for stricter law enforcement on conglomerate owners who are involved in illicit activities and impose taxes on firms which monopolize the market.", "[Source 1] He also proposed a forceful separation of group affiliates as the last resort if they fail to comply with the reform measures.", "[Source 1] “The most urgent issue is one involving chaebol. Economic democratization can start only when the problem is resolved,” Ahn said at a news conference in his campaign office."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "안철수 후보가 경제 민주화를 핵심 공약으로 내세우며 재벌 개혁 방안을 구체적으로 발표하는 내용으로, 정치인과 정책이 매우 직접적이고 중요하게 다루어지고 있습니다.", "evidence_spans": ["독립 대선 후보 안철수는 일요일 재벌(가족 소유 대기업)에 대한 통제 강화를 중심으로 한 경제 개혁 계획을 발표했습니다.", "안 후보는 기자회견에서 \"가장 시급한 문제는 재벌과 관련된 것입니다. 경제 민주화는 이 문제가 해결되어야만 시작될 수 있습니다\"라고 말했습니다.", "그는 경제 민주화를 \"대통령이 수호해야 할 헌법적 가치\"라고 설명했습니다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 1, "politician": "안철수", "policy": "과학기술 리더십 강화", "industry_or_sector": "과학기술(인공지능, 반도체, 모빌리티, K-서비스)", "companies": [], "impact_description": "AI, 반도체, 모빌리티, K-서비스 등 5대 전략 산업 육성 및 R&D 투자 확대(20조 원 K-Startup 펀드 설립) 정책을 제시했으나 특정 기업을 명시하지 않음", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제시된 출처는 안철수 후보가 AI, 반도체, 모빌리티, K-서비스 등 5대 전략 산업 육성 및 R&D 투자 확대, 그리고 20조 원 규모의 K-Startup 펀드 설립을 공약으로 제시했음을 명확히 언급하고 있습니다. 또한, 특정 기업을 명시하지 않고 정책 방향을 제시한 내용과도 일치합니다.", "evidence_spans": ["[Source 1] He specifically presented a vision to foster five strategic industries: artificial intelligence (AI), semiconductors, mobility, semiconductors, and K-services.", "[Source 1] He also emphasized raising the proportion of research and development investment to 5% of gross domestic product (GDP) and nurturing 1 million core scientific and technological talents.", "[Source 1] He expressed the ambition to establish the “K-Startup Fund” at a scale of 20 trillion won to realize the startup nation."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "기사는 안철수 의원이 과학기술 리더십 강화를 위한 10대 공약을 발표한 내용을 다루고 있습니다. 인공지능, 반도체 등 5대 전략 산업 육성, R&D 투자 확대, 과학기술 인재 양성 등 정책 내용이 구체적으로 언급되어 있어 정치인과 정책 모두에 매우 밀접하게 관련됩니다.", "evidence_spans": ["안철수, 과학기술로 대한민국 이끌 10대 공약 발표", "안철수 국민의힘 의원은 제21대 대통령 선거를 앞두고 10대 주요 공약을 발표했다.", "그는 인공지능(AI), 반도체, 모빌리티, K-서비스 등 5대 전략 산업 육성 비전을 제시했다.", "연구개발(R&D) 투자 비중을 국내총생산(GDP) 대비 5%로 높이고, 100만 명의 핵심 과학기술 인재를 양성하겠다고 강조했다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 2, "politician": "안철수", "policy": "중소기업 지원", "industry_or_sector": "중소기업", "companies": [], "impact_description": "중소기업 지원을 위한 금융 개혁 및 일자리 창출 정책을 제시했으나 특정 기업을 명시하지 않음", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 출처는 안철수 후보가 중소기업 지원을 위한 금융 개혁 및 일자리 창출 정책을 제시했음을 명확히 언급하고 있습니다. 또한, 특정 기업을 명시하지 않고 전반적인 정책 방향에 대해 설명하고 있어 주어진 설명과 일치합니다.", "evidence_spans": ["[Source 1] The agenda items he listed during the news conference included financial reforms, an innovation-powered economy, job creation and labor reforms, and promotion of small companies.", "[Source 1] After the press conference, the candidate participated in a forum with small-business owners and expressed his resolve to deliver his pledges."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "안철수 후보의 경제 개혁 계획에 대한 기사이며, 그의 7대 우선 과제 중 하나로 \"중소기업 진흥\"이 명시되어 있습니다. 또한 안철수 후보가 중소기업인들과의 포럼에 참여하여 공약을 전달하겠다는 의지를 밝히는 등, 안철수와 중소기업 지원 정책이 직접적으로 관련되어 있습니다.", "evidence_spans": ["그가 기자회견에서 제시한 의제에는 금융 개혁, 혁신 주도 경제, 일자리 창출 및 노동 개혁, 그리고 중소기업 진흥이 포함되었다.", "기자회견 후, 후보는 중소기업인들과의 포럼에 참여하여 자신의 공약을 이행하겠다는 의지를 표명했다.", "전 서울대 교수는 자신의 제안이 재벌의 경제 활동을 제한하려는 것이 아니라 불규칙성을 바로잡고 법 위반을 처벌하며 대기업과 중소기업의 건강한 생태계를 촉진하기 위한 것이라고 말했다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}], "gold_eval": {"similarity_score": 0.75, "reasoning": "두 보고서는 이재명 의원의 기본소득 및 친환경 에너지 정책을 공통적으로 다루며 관련 산업과 기업을 유사하게 분석했습니다. 그러나 부동산 정책에서 Gold Report는 민간 시장 규제를, Model Report는 공공 주거 확대를 강조하여 접근 방식이 달랐습니다. Gold Report는 기본소득의 플랫폼 산업 영향과 신재생에너지의 이차전지 산업 연관성을 더 깊이 다루어 더 구체적이고 균형 잡힌 시장 파급 효과 설명을 제공했습니다. Model Report는 긍정적 측면에 집중하는 경향이 있었습니다.", "model_unique_points": ["청년 주거 안정화를 위한 공공임대주택 확대 정책과 공공 건설 부문의 영향 분석.", "친환경 에너지 전환 정책에서 RE100 지원을 통한 기업의 재생에너지 사용 확대 측면 강조."], "gold_unique_points": ["다주택자 규제 강화를 통한 민간 부동산 시장 안정화 정책과 그에 따른 민간 건설사 영향 분석.", "기본소득 정책이 플랫폼 산업 및 특정 온라인 유통 기업에 미치는 영향에 대한 심층 분석.", "신재생에너지 정책에서 이차전지 산업 및 관련 기업의 성장 가능성 강조."]}}} +{"query": "이준석", "evaluation": {"chain_results": [], "gold_eval": null}} +{"query": "심상정", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "심상정", "policy": "노동권 강화 정책(5일 근무제, 중대재해처벌법, 살찐고양이법)", "industry_or_sector": "제조업, 건설업", "companies": [], "impact_description": "노동권 강화 정책(5일 근무제, 중대재해처벌법, 살찐고양이법)을 주도했으나, 특정 기업과의 직접적 연관성은 확인되지 않음. 제조업 및 건설업 등 노동집약적 산업에 간접적 영향", "impact_result": {"label": "PARTIALLY_SUPPORTED", "score": 0.6, "reasoning": "소스 2에서 심상정 의원이 '임금 삭감 없는 주5일 근무제'를 국내 최초로 이끌어냈다는 내용이 확인되어 '5일 근무제' 정책 주도 부분은 일부 지지됩니다. 그러나 '중대재해처벌법'과 '살찐고양이법'의 주도 여부, 특정 기업과의 직접적 연관성 확인 여부, 그리고 제조업 및 건설업 등 노동집약적 산업에 대한 간접적 영향에 대한 내용은 소스에서 찾을 수 없습니다.", "evidence_spans": ["[Source 2] 2003년 금속노조사무처장 당시 임금 삭감 없는 주5일 근무제를 국내 최초로 이끌어 내며 철의 여인으로 불렸고"], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "두 출처 모두 심상정 의원을 주요 인물로 다루고 있으며, 특히 출처 2에서는 심상정 의원이 \"임금 삭감 없는 주5일 근무제\"를 국내 최초로 이끌어냈다고 명시하여 주어진 정책 중 \"5일 근무제\"와 직접적인 연관성을 보여줍니다. 출처 1에서도 심상정 의원이 현대자동차 사내하청 및 비정규직 문제 등 노동권 강화에 힘썼음을 언급하여 전반적인 노동권 강화 정책과 밀접하게 관련되어 있습니다.", "evidence_spans": ["19대 국회 국감에서는 심상정 통합진보당(현 정의당) 의원이 현대자동차 사내하청과 비정규직 문제를 제기해 눈길을 끌었다. 당시 심 의원은 “노동자의 고통을 전제로 한 기업하기 좋은 나라는 없다”는 명언을 남겼다.", "2003년 금속노조사무처장 당시 임금 삭감 없는 주5일 근무제를 국내 최초로 이끌어 내며 철의 여인으로 불렸고"], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 1, "politician": "심상정", "policy": "재생에너지 50% 목표(2030) 및 정의로운 전환 정책", "industry_or_sector": "재생에너지 산업", "companies": [], "impact_description": "재생에너지(태양광, 풍력) 산업 발전 및 정의로운 전환 정책 추진. 한화솔루션, 두산퓨얼셀 등 잠재적 수혜 기업 언급 있으나 직접적 연관성 증거 부재", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 소스 1은 재생에너지(태양광, 풍력) 산업 발전 및 정책 추진에 대한 대선 후보들의 공약을 언급하며, 이재명 후보와 심상정 후보의 재생에너지 발전 비중 목표를 제시합니다. 또한, 한화솔루션을 신재생에너지 수혜주로, 두산퓨얼셀을 수소에너지 관련 종목으로 명시하여 잠재적 수혜 기업 언급을 뒷받침합니다. 이러한 언급은 대선 공약에 따른 잠재적 수혜를 다루는 것이므로, 직접적인 연관성 증거가 부재하다는 설명 또한 소스 내용과 일치합니다.", "evidence_spans": ["[Source 1] 이재명 더불어민주당 대선 후보는 원전 정책의 기조로 감(減)원전을 내세웠다. 문재인 정부의 기존 탈원전 정책과는 다른 듯 보이지만 따져 보면 속도 조절 버전인 셈이다. 이 후보는 감원전과 함께 '재생에너지'를 에너지 정책 핵심으로 제시했다. 2030년까지 신재생에너지 발전 비중을 30% 달성하는 것이 목표다.", "[Source 1] 심상정 정의당 대선 후보는 탈원전 기조에 맞춰 2040년까지 국내 모든 원전을 폐쇄하겠다고 밝혔다. 심상정 후보는 2030년 에너지믹스를 재생에너지 50%, LNG 25%, 핵발전 23%, 양수 등 기타 2% 등으로 제시했다.", "[Source 1] 현재 신재생에너지 수혜주로 일컬어지는 종목으로는 △누리플렉스 △옴니시스템 △한화솔루션 △현대에너지솔루션 △씨에스윈드 △신성이엔지 등이 있고, 수소에너지 관련 종목으로는 △두산퓨얼셀 △코오롱인더스트리 △효성중공업 △상아프론테크 △에스퓨얼셀 △일진하이솔루스 △미코 △한온시스템 등이 꼽힌다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "첫 번째 출처는 심상정 후보의 2030년 재생에너지 50% 목표를 포함한 에너지 공약을 명확하게 언급하고 있습니다. 두 번째 출처는 심상정 의원의 인터뷰 영상이지만, 구체적인 재생에너지 정책에 대한 내용은 포함하고 있지 않습니다. 그러나 첫 번째 출처에서 정치인과 정책이 직접적으로 연결되어 상세히 다루어지고 있으므로 전반적인 관련성은 높습니다.", "evidence_spans": ["심상정 정의당 대선 후보는 탈원전 기조에 맞춰 2040년까지 국내 모든 원전을 폐쇄하겠다고 밝혔다. 심상정 후보는 2030년 에너지믹스를 재생에너지 50%, LNG 25%, 핵발전 23%, 양수 등 기타 2% 등으로 제시했다.", "심 후보는 2050년엔 재생에너지와 그린수소만으로 전력을 생산하겠다고 강조했다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 2, "politician": "심상정", "policy": "살찐고양이법(과도한 임원 보수 규제)", "industry_or_sector": "대기업(재벌)", "companies": [], "impact_description": "대기업(재벌)의 과도한 임원 보수 규제 정책 추진. 특정 기업 명시 없음", "impact_result": {"label": "UNSUPPORTED", "score": 0.1, "reasoning": "제공된 출처는 국정감사의 질적 저하와 정치인들의 활동에 대한 내용을 다루고 있으며, 대기업(재벌)의 과도한 임원 보수 규제 정책 추진에 대한 어떠한 정보도 포함하고 있지 않습니다. 따라서 영향 설명은 출처에 의해 뒷받침되지 않습니다.", "evidence_spans": [], "error_type": "NONE"}, "attribution_result": {"label": "WEAKLY_RELATED", "score": 0.6, "reasoning": "기사는 심상정 의원이 과거 국정감사에서 현대자동차 사내하청 및 비정규직 문제를 제기하며 노동자의 고통에 대해 발언한 내용을 다루고 있습니다. 심상정 의원은 명확히 언급되지만, 정책인 '살찐고양이법' 또는 '과도한 임원 보수 규제'에 대한 직접적인 언급이나 관련 내용은 포함되어 있지 않습니다.", "evidence_spans": ["19대 국회 국감에서는 심상정 통합진보당(현 정의당) 의원이 현대자동차 사내하청과 비정규직 문제를 제기해 눈길을 끌었다.", "당시 심 의원은 “노동자의 고통을 전제로 한 기업하기 좋은 나라는 없다”는 명언을 남겼다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": false}}], "gold_eval": {"similarity_score": 0.7, "reasoning": "두 보고서는 이재명 의원의 기본소득 및 일부 인프라 정책에 대한 분석에서 유사점을 보였습니다. 골드 보고서는 부동산 시장 안정화 정책과 대규모 국책 사업의 경제적 파급 효과를 심층적으로 다룬 반면, 모델 보고서는 소상공인 및 지역 특화 산업 지원 정책에 대한 독자적인 관점을 제시했습니다. 전반적으로 골드 보고서가 주요 거시 경제 정책의 시장 영향 분석에서 더 깊이 있는 설명을 제공했습니다.", "model_unique_points": ["소상공인 및 중소기업 지원 정책이 지역 경제 활성화에 미치는 영향", "지역 특화 산업 육성 방안과 관련 중소 제조 기업의 성장 가능성"], "gold_unique_points": ["부동산 시장 안정화 정책이 건설 및 금융 산업에 미치는 구체적인 영향 분석", "대규모 국책 사업 추진에 따른 특정 대기업 및 관련 하청 기업의 수혜 전망"]}}} +{"query": "Joe Biden", "evaluation": {"chain_results": [], "gold_eval": null}} +{"query": "Donald Trump", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "도널드 트럼프", "policy": "2017년 세금 감면 및 고용법", "industry_or_sector": "기업 및 소비자 부문", "companies": ["AT&T", "Best Buy", "Hostess Brands", "Cigna", "Quest Diagnostics", "Discover"], "impact_description": "세금 감면으로 인해 보너스, 임금 인상, 투자 발표", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 소스 1은 트럼프 대통령의 세금 감면으로 인해 미국 기업들이 직원들에게 보너스, 임금 인상, 그리고 새로운 투자를 발표했다고 명확하게 언급합니다. 특히 Best Buy, Quest Diagnostics, Discover, Hostess Brands, Cigna 등 목록에 있는 대부분의 회사들이 세금 감면의 결과로 보너스 지급, 임금 인상, 또는 투자 계획을 발표했다는 구체적인 사례가 제시되어 있습니다. 이는 주어진 영향 설명과 일치합니다.", "evidence_spans": ["[Source 1] AMERICAN COMPANIES ARE DELIVERING: Businesses throughout the country are responding to President Trump’s tax cuts by rewarding American workers. Since President Trump provided his historic tax cuts and reforms, more than 3.5 million American workers across more than 300 companies have received bonuses, raises, and increased. Many companies have also announced new investments and new hiring.", "[Source 1] Best Buy has announced it is giving a $1,000 bonus to full-time employees and a $500 bonus to part-time employees, in addition to investing $20 million to expand technology development centers across the United States.", "[Source 1] Quest Diagnostics is giving a bonus of up to $500 to nearly 40,000 employees and investing $75 million of its tax savings back into the company and employees.", "[Source 1] Discover announced it would raise its minimum wage to $15.25 an hour and had paid a $1,000 bonus to more than 15,000 non-executive employees.", "[Source 1] Hostess Brands is providing employees with a $750 cash bonus and $500 contribution to their 401(k) accounts, in addition to providing a year’s worth of free Hostess products.", "[Source 1] Cigna announced that it was increasing its minimum wage in the United States to $16 an hour and adding $30 milli"], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "제공된 모든 출처는 도널드 트럼프 대통령과 2017년 세금 감면 및 고용법(Tax Cuts and Jobs Act)에 대해 직접적으로 다루고 있습니다. 출처들은 이 법안이 트럼프 행정부의 주요 성과임을 명확히 밝히고 있으며, 법안의 내용, 영향, 그리고 향후 전망까지 상세하게 설명하고 있습니다. 트럼프 대통령은 이 정책의 주요 입안자이자 서명자로 언급되며, 정책은 각 기사의 핵심 주제입니다.", "evidence_spans": ["President Donald J. Trump Achieved the Biggest Tax Cuts and Reforms in American History.", "The Tax Cuts and Jobs Act was therefore the biggest legislative action reforming our tax code in history.", "Signed into law by President Donald Trump on December 22, 2017", "Acronyms (colloquial) TCJA Nicknames Tax Cuts and Jobs Act GOP tax reform Trump tax cuts", "The 2017 Tax Cuts and Jobs Act brought a major overhaul to U.S. tax code.", "Trump has shown interest in making his tax rules permanent."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 1, "politician": "도널드 트럼프", "policy": "2018년 철강/알루미늄 관세", "industry_or_sector": "철강 제조업", "companies": ["U.S. Steel", "Nucor", "Steel Dynamics", "AK Steel"], "impact_description": "관세 부과로 철강 가격 상승, 세전 이익 증가, 8,700개 일자리 추가", "impact_result": {"label": "PARTIALLY_SUPPORTED", "score": 0.65, "reasoning": "관세 부과로 인한 철강 가격 상승 및 철강 기업의 세전 이익 증가는 여러 출처에서 명확하게 뒷받침됩니다. 특히 Source 1은 U.S. Steel, Nucor, Steel Dynamics, AK Steel 등 명시된 기업들의 이익 증가를 구체적인 수치와 함께 언급합니다. 그러나 8,700개의 일자리 추가 주장에 대해서는 Source 2에서 해당 수치를 언급하지만, Source 3에서는 4,800개의 일자리가 추가되었다고 명시하여 일자리 수치에 대한 직접적인 모순이 존재합니다. 따라서 전반적인 영향은 지지되지만, 특정 수치에 대한 불일치로 인해 부분적으로만 지지됩니다.", "evidence_spans": ["[Source 1] 미국 행정부가 2018년 3월에 부과한 25%의 철강 수입 관세는 미국 철강 가격을 상승시키는 원동력이 되었습니다.", "[Source 1] 높아진 철강 가격은 작년에 United States Steel Corp., Nucor Corp., Steel Dynamics, Inc. 및 AK Steel Holding Corp.을 포함한 미국 철강 생산자들의 이익을 증가시켰으며, 이들 중 일부는 연간 기록적인 수익을 올렸습니다.", "[Source 2] 트럼프의 관세는 철강 제품 가격을 거의 9% 인상시키는 것으로 나타났습니다.", "[Source 2] 높아진 철강 가격은 2018년에 철강 기업의 세전 이익을 24억 달러 증가시킬 것입니다.", "[Source 2] 네, 이러한 조치들은 미국 철강 산업에서 8,700개의 일자리를 창출합니다.", "[Source 3] 미국 철강 가격은 그 후 상승했고 미국 철강 제조업체들은 기록적인 이익을 냈습니다.", "[Source 3] 미국 철강 및 철강 공장은 2018년 3월부터 2019년 3월 사이에 4,800개의 일자리를 추가했습니다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "모든 출처는 도널드 트럼프 행정부가 2018년 3월에 부과한 철강 관세와 그 경제적 영향에 대해 직접적으로 논의하고 있습니다. 트럼프 대통령은 이 정책의 주요 행위자로 명확히 언급되며, 관세 정책은 각 기사의 핵심 주제입니다.", "evidence_spans": ["미국 철강 제조업체들은 트럼프 행정부의 수입 철강에 대한 무역 조치 덕분에 2018년에 강력한 수익을 올렸습니다. 미국 행정부가 2018년 3월에 부과한 25%의 철강 수입 관세는 미국 철강 가격에 추진력을 제공했습니다.", "도널드 트럼프 대통령의 산업 정책의 중심에는 수입 철강에 관세를 부과하여 철강 산업의 일자리를 되찾겠다는 공약이 있었습니다. 2018년 3월 23일, 그는 거의 모든 철강 수입품에 25%의 관세를 부과했습니다.", "트럼프 행정부는 중국이 국내 생산을 보조금으로 불공정하게 시장에 넘쳐나게 했다고 주장하며 2018년 3월 외국산 철강에 25%의 관세를 부과했습니다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 2, "politician": "도널드 트럼프", "policy": "에너지 규제 완화", "industry_or_sector": "에너지", "companies": ["ExxonMobil", "Chevron"], "impact_description": "화석 연료 정책 강화로 국내 에너지 생산 증가, 재생 에너지 성장 둔화", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 소스 중 Source 1은 트럼프 행정부의 정책이 화석 연료 시추 및 채굴에 대한 규제를 완화하고 전통 에너지 부문을 활성화할 것이라고 명시하고 있습니다. 또한, 인플레이션 감축법의 자금 회수가 전기차, 태양광, 풍력 에너지와 같은 재생 에너지 부문의 성장을 저해할 수 있다고 언급하여, 화석 연료 정책 강화로 인한 국내 에너지 생산 증가 및 재생 에너지 성장 둔화라는 영향 설명과 일치합니다. ExxonMobil과 Chevron은 이러한 전통 에너지 부문에 속하는 회사들입니다.", "evidence_spans": ["[Source 1] A cornerstone of his campaign promises includes rolling back green regulations that currently hinder oil and gas drilling and coal mining.", "[Source 1] If enacted, these deregulatory measures could significantly boost shares in traditional energy sectors, reversing the gains made under the Biden-Harris administration’s climate policies.", "[Source 1] The rollback of such funds could stymie growth in renewable energy sectors, although comprehensive changes would likely necessitate congressional approval."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "소스 1은 도널드 트럼프 당선인이 석유 및 가스 시추와 석탄 채굴을 방해하는 환경 규제를 철회하고 인플레이션 감축법의 미집행 자금을 폐지하겠다는 공약을 언급하며 에너지 규제 완화 정책과 직접적으로 연결하고 있습니다. 다른 소스들은 엑손모빌의 기후 정책 및 탄소 포집 기술에 대한 내용으로, 트럼프의 에너지 규제 완화 정책과는 관련이 없습니다.", "evidence_spans": ["A cornerstone of his campaign promises includes rolling back green regulations that currently hinder oil and gas drilling and coal mining.", "If enacted, these deregulatory measures could significantly boost shares in traditional energy sectors, reversing the gains made under the Biden-Harris administration’s climate policies.", "Trump also has expressed a firm intention to rescind all unspent funds under the Inflation Reduction Act, a landmark climate law from the Biden-Harris administration."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 3, "politician": "도널드 트럼프", "policy": "2018년 철강/알루미늄 관세", "industry_or_sector": "한국 무역", "companies": ["Korean Air", "Hyundai"], "impact_description": "미국 관세 조정으로 영향 받음", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 출처는 미국이 한국산 상품(자동차 및 부품, 항공기 및 부품 포함)에 대한 관세를 조정(인하 또는 철폐)했음을 명확히 언급하고 있습니다. 이는 한국 무역 전반과 특히 현대(자동차) 및 대한항공(항공기 및 부품)에 영향을 미치는 미국 관세 조정에 대한 설명과 일치합니다.", "evidence_spans": ["[Source 1] 미국은 한국산 자동차 및 부품, 원목·제재목과 목재 제품에 대한 232조 관세를 15%로 인하한다.", "[Source 1] 미국은 특정 한국산 항공기·부품에 대해 행정명령 제14257호 및 그 개정, 포고령 제9704호 및 그 개정, 포고령 제9705호 및 그 개정, 포고령 제10962호에 따른 관세를 철폐한다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "기사는 도널드 트럼프 대통령을 명확히 언급하며, 그의 재임 기간에 부과된 '232조 관세' 및 관련 포고령(9704호, 9705호)에 따른 한국산 제품에 대한 관세 조정 및 철폐 내용을 상세히 다루고 있어, 주어진 정치인과 정책에 매우 밀접하게 관련되어 있습니다.", "evidence_spans": ["이재명 대통령과 도널드 트럼프 대통령 간 회담 공동 설명자료", "미국은 한국산 자동차 및 부품, 원목·제재목과 목재 제품에 대한 232조 관세를 15%로 인하한다.", "또한 미국은 특정 한국산 항공기·부품에 대해 행정명령 제14257호 및 그 개정, 포고령 제9704호 및 그 개정, 포고령 제9705호 및 그 개정, 포고령 제10962호에 따른 관세를 철폐한다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 4, "politician": "도널드 트럼프", "policy": "사우디아라비아 정책, 영국 오픈 개최 압력, 시리아 철군", "industry_or_sector": "부동산 및 관광", "companies": ["Trump Organization"], "impact_description": "트럼프 조직 소유로 인한 이해 상충", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 모든 출처는 도널드 트럼프가 재임 중 트럼프 조직의 소유권을 유지함으로써 발생한 이해 상충에 대해 광범위하게 논의하고 있습니다. 출처들은 트럼프 조직의 부동산(호텔, 리조트, 골프 코스)과 외국 정부 및 기업과의 거래에서 발생한 윤리적 문제와 이해 상충 사례를 명확하게 설명합니다.", "evidence_spans": ["[Source 1] President Donald Trump has been at the center of ethics concerns going all the way back to his 2016 candidacy, largely as a result of his strong business ties that critics say could represent significant conflicts of interest.", "[Source 2] When he took office in 2017, Trump made the controversial decision not to divest himself of his considerable business holdings, a step presidents have customarily taken in the past. This had previously been done in order to avoid the possibility that entities with business before the U.S. government might seek to influence decisions by patronizing the president’s companies.", "[Source 3] Once again, President Trump has defied all norms of the presidency and created untold numbers of conflicts of interest by failing to divest from his business interests before taking office. As we did during Trump’s first term , CREW is tracking the conflicts of interest surrounding Trump’s properties.", "[Source 4] Trump’s presidency was marred by unprecedented conflicts of interest arising from his decision not to divest from the Trump Organization, with his most egregious conflicts involving businesses in foreign countries with interests in US foreign policy."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "모든 출처는 도널드 트럼프 대통령의 재임 중 이해 상충 문제와 외교 정책 결정에 대해 논의합니다. 특히 출처 4는 사우디아라비아와의 사업 관계, 영국 오픈을 스코틀랜드 골프 리조트에서 개최하도록 압력을 가한 것, 그리고 시리아 철군 결정 등 주어진 정책 주제 세 가지 모두를 트럼프 대통령과 직접적으로 연결하여 설명합니다. 다른 출처들도 트럼프 대통령의 중동 사업 거래 및 사우디아라비아와의 재정적 관계를 상세히 다루고 있습니다.", "evidence_spans": ["Jared Kushner , inked a $2 billion investment with the Saudi crown prince after leaving the White House.", "Other countries that spent large sums of money at Trump’s properties during that time include Saudi Arabia ($615,422)", "In office, Trump continued to benefit from Saudi business and faced repeated criticism, especially in the wake of the murder of Jamal Khashoggi, for his apparent desire to shield Saudi leaders from criticism", "Trump’s Ambassador to the United Kingdom reportedly told embassy staff that Trump pushed him to get the British Open to be held at one of his Scottish golf resorts.", "In 2019, Trump stunned the US foreign policy establishment by pulling US troops out of northeast Syria."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}], "gold_eval": {"similarity_score": 0.7, "reasoning": "두 보고서는 이재명 의원의 기본소득 및 일부 인프라 정책에 대한 분석에서 유사점을 보였습니다. 골드 보고서는 부동산 시장 안정화 정책과 대규모 국책 사업의 경제적 파급 효과를 심층적으로 다룬 반면, 모델 보고서는 소상공인 및 지역 특화 산업 지원 정책에 대한 독자적인 관점을 제시했습니다. 전반적으로 골드 보고서가 주요 거시 경제 정책의 시장 영향 분석에서 더 깊이 있는 설명을 제공했습니다.", "model_unique_points": ["소상공인 및 중소기업 지원 정책이 지역 경제 활성화에 미치는 영향", "지역 특화 산업 육성 방안과 관련 중소 제조 기업의 성장 가능성"], "gold_unique_points": ["부동산 시장 안정화 정책이 건설 및 금융 산업에 미치는 구체적인 영향 분석", "대규모 국책 사업 추진에 따른 특정 대기업 및 관련 하청 기업의 수혜 전망"]}}} +{"query": "Xi Jinping", "evaluation": {"chain_results": [], "gold_eval": null}} +{"query": "Vladimir Putin", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "Vladimir Putin", "policy": "Energy Strategy to 2030", "industry_or_sector": "Oil & Gas", "companies": ["Gazprom", "Rosneft", "OPEC+ members"], "impact_description": "러시아는 에너지 수출을 통해 GDP의 30%를 차지하며, OPEC+와의 협력을 통해 글로벌 에너지 시장에서 영향력을 행사하고 있습니다. 인도 및 중국에 대한 석유 수출 증가와 제재 회피를 위한 '그림자 함대' 활용이 주요 경제적 영향입니다.", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 모든 출처는 러시아의 에너지 수출이 GDP의 30% 이상을 차지한다는 점, OPEC+와의 협력을 통해 글로벌 에너지 시장에서 영향력을 행사한다는 점, 인도 및 중국으로의 석유 수출 증가, 그리고 제재 회피를 위한 \"그림자 함대\" 활용에 대한 설명을 명확하게 뒷받침합니다.", "evidence_spans": ["[Source 1] As of 2014, oil and gas comprise over 60% of Russia's exports and account for over 30% of the country's gross domestic product (GDP).", "[Source 1] However, in recent years it has cooperated increasingly closely with OPEC in the OPEC+ format.", "[Source 2] Moscow has been able to bypass Western restrictions by selling to major clients like China and India.", "[Source 3] 인도는 중국에 이어 두 번째로 러시아 원유를 많이 수입한다. 특히 우크라이나 전쟁 발발한 이후 수입량을 급격히 늘린 것으로 전해졌다.", "[Source 2] To aid in this process, the Kremlin has developed a network of around 1,400 tankers operating outside of Western oversight. This is often referred to as Russia’s “shadow fleet.”"], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "모든 출처는 블라디미르 푸틴 대통령과 러시아의 에너지 정책, 특히 \"에너지 전략 2030\"을 명확하게 연결하고 있습니다. 출처 1은 \"에너지 전략 2030\"을 직접 언급하며 푸틴 대통령이 러시아 에너지 부문에서 중요한 역할을 했음을 보여줍니다. 출처 2와 3 또한 푸틴 대통령과 러시아의 에너지 수출 및 정책의 중요성을 다루고 있습니다.", "evidence_spans": ["Russia's energy policy is presented in the government's Energy Strategy document, first approved in 2000, which sets out the government's policy to 2020 (later extended to 2030).", "Under Putin, special efforts were made to gain control over the European energy sector.", "If energy exports were further curtailed, Russia’s war effort could be severely impacted, with Vladimir Putin forced to choose between sustaining the invasion or avoiding economic collapse.", "내달 열릴 푸틴 대통령과 모디 총리 간 정상회담에는 국방 협력, 민간 원자력 협력, 에너지 무역 등이 의제로 오를 예정이다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 1, "politician": "Vladimir Putin", "policy": "State-backed defense industrial complex and arms exports", "industry_or_sector": "Defense/Aerospace", "companies": ["Rostec", "Almaz-Antey", "Kalashnikov"], "impact_description": "러시아는 Rostec을 중심으로 방위 산업체를 통제하며, 세계 최대 무기 수출국 중 하나로 자리매김하고 있습니다. 2024년 방위 예산은 1,488억 달러로, GDP의 10%가 전쟁 관련 산업에 할당되었습니다.", "impact_result": {"label": "UNSUPPORTED", "score": 0.1, "reasoning": "제공된 출처는 러시아의 에너지 정책에 관한 내용이며, Rostec, Almaz-Antey, Kalashnikov와 같은 방위 산업체, 러시아의 무기 수출국 지위, 2024년 국방 예산 또는 GDP 대비 전쟁 관련 산업 할당에 대한 어떠한 정보도 포함하고 있지 않습니다. 따라서 영향 설명의 핵심 내용이 전혀 뒷받침되지 않습니다.", "evidence_spans": [], "error_type": "NONE"}, "attribution_result": {"label": "WEAKLY_RELATED", "score": 0.45, "reasoning": "소스는 블라디미르 푸틴을 러시아의 에너지 정책과 관련하여 언급하지만, 주어진 정책 주제인 \"국가 지원 방위 산업 단지 및 무기 수출\"에 대해서는 전혀 다루지 않습니다. 소스의 주요 내용은 러시아의 에너지 자원, 수출 및 에너지 정책에 관한 것입니다.", "evidence_spans": ["푸틴은 하바롭스크에서 가스관 개통식에 참석했다", "푸틴 정권 하에서 유럽 에너지 부문에 대한 통제권을 확보하기 위한 특별한 노력이 이루어졌다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": false}}, {"chain_index": 2, "politician": "Vladimir Putin", "policy": "Import substitution, SPFS payment system, and energy diplomacy", "industry_or_sector": "Finance, Agriculture, Tech", "companies": ["RT-Investment Corporation", "Yandex"], "impact_description": "서방의 제재에 대응해 SPFS 결제 시스템과 Mir 결제 시스템을 도입했으며, 헝가리와 인도는 EU/미국의 압력에도 러시아 에너지 수입을 지속하고 있습니다.", "impact_result": {"label": "PARTIALLY_SUPPORTED", "score": 0.65, "reasoning": "제공된 출처들은 헝가리와 인도가 EU/미국의 압력에도 불구하고 러시아 에너지 수입을 지속하고 있다는 주장을 뒷받침합니다. 특히 헝가리는 미국으로부터 제재 면제를 받았고, 인도는 서방의 제재 추진 과정에서 미국과 충돌하며 러시아 원유 수입을 늘렸습니다. 그러나 서방 제재에 대응하여 SPFS 및 Mir 결제 시스템을 도입했다는 내용은 출처에서 찾을 수 없습니다. 또한, 영향 설명에 언급된 특정 회사(RT-Investment Corporation, Yandex)에 대한 내용은 출처에 없습니다.", "evidence_spans": ["[Source 1] 헝가리는 러시아 에너지 수입이 자국 경제 유지에 필수적이라는 입장을 고수하지만, 이는 러시아산 에너지 수입을 2027년까지 단계적으로 축소하려는 EU 정책과 정면으로 배치된다.", "[Source 1] 오르반 총리는 헝가리가 러시아산 석유·가스 사용에서 미국으로부터 무기한 제재 면제를 받은 뒤, 러시아와 추가 공급을 논의할 것이라고 예고해 왔다.", "[Source 2] 인도는 러시아 원유의 최대 수입국 중 하나로 미국 등 서방이 우크라이나 전쟁 이후 대러시아 제재를 추진하는 과정에서 충돌하기도 했다.", "[Source 2] 도널드 트럼프 미국 대통령은 인도의 러시아산 원유 수입을 이유로 지난 8월 말부터 인도산 수입품에 50% 추가 관세를 부과했다.", "[Source 2] 특히 우크라이나 전쟁 발발한 이후 수입량을 급격히 늘린 것으로 전해졌다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "두 기사 모두 블라디미르 푸틴 러시아 대통령이 헝가리 및 인도 지도자들과 에너지 공급 및 무역에 대해 논의하는 외교 활동을 다루고 있습니다. 이는 주어진 정책 설명 중 \"에너지 외교\" 부분과 직접적으로 관련됩니다.", "evidence_spans": ["오르반 총리는 지난 28일 모스크바를 방문해 푸틴 대통령과 회담하고 러시아-우크라이나 전쟁과 무역, 에너지 공급 문제 등을 논의했다.", "헝가리는 러시아 에너지 수입이 자국 경제 유지에 필수적이라는 입장을 고수하지만, 이는 러시아산 에너지 수입을 2027년까지 단계적으로 축소하려는 EU 정책과 정면으로 배치된다.", "내달 열릴 푸틴 대통령과 모디 총리 간 정상회담에는 국방 협력, 민간 원자력 협력, 에너지 무역 등이 의제로 오를 예정이다.", "인도는 러시아 원유의 최대 수입국 중 하나로 미국 등 서방이 우크라이나 전쟁 이후 대러시아 제재를 추진하는 과정에서 충돌하기도 했다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 3, "politician": "Vladimir Putin", "policy": "Long-term energy contracts with non-Western partners", "industry_or_sector": "Energy Trade", "companies": ["Gazprom", "Rosneft"], "impact_description": "비서구 국가와의 장기 에너지 계약을 통해 수익을 확보했으며, 2011년 250억 달러 규모의 중-러 석유 협정과 인도의 러시아 석유 수입 증가(2020년 5만 배럴/일 → 2025년 160만 배럴/일)가 대표적입니다.", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제시된 영향 설명의 핵심 내용(비서구 국가와의 장기 에너지 계약을 통한 수익 확보, 2011년 중-러 석유 협정, 인도의 러시아 석유 수입 증가 및 구체적인 수치)이 제공된 출처들에 의해 명확하게 뒷받침됩니다. 출처 1은 2011년 250억 달러 규모의 20년 중-러 석유 협정을 확인하며, 출처 2는 인도의 러시아 원유 일일 수입량이 2020년 5만 배럴에서 2025년 상반기 160만 배럴로 증가했다는 사실을 명시합니다. 이는 비서구 국가와의 에너지 무역 확대를 통한 러시아 에너지 부문의 수익 확보를 시사합니다.", "evidence_spans": ["[Source 1] On 17 February 2011, Russia signed a deal with China, stating that in return for $25 billion in Chinese loans to Russian oil companies, Russia would supply China with large quantities of crude oil via new pipelines for the next 20 years.", "[Source 2] 미국 에너지정보청( EIA ) 자료를 보면 2020년 인도의 러시아 원유 일일 수입량은 5만 배럴로 집계됐지만, 올해 상반기 일일 수입량이 160만 배럴로 증가했다.", "[Source 2] 인도는 러시아 원유의 최대 수입국 중 하나로 미국 등 서방이 우크라이나 전쟁 이후 대러시아 제재를 추진하는 과정에서 충돌하기도 했다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "두 출처 모두 블라디미르 푸틴 대통령이 러시아의 에너지 정책과 비서방 국가(중국, 인도)와의 장기 에너지 계약에 깊이 관여하고 있음을 명확하게 보여줍니다. 출처 1은 러시아가 중국과 20년간 원유를 공급하는 계약을 체결했음을 언급하며, 출처 2는 푸틴 대통령의 인도 방문과 에너지 무역 논의, 그리고 인도가 러시아 원유의 주요 수입국으로 부상한 사실을 다룹니다. 이는 푸틴 대통령이 비서방 파트너와의 장기 에너지 계약 정책을 추진하고 있음을 직접적으로 뒷받침합니다.", "evidence_spans": ["On 17 February 2011, Russia signed a deal with China, stating that in return for $25 billion in Chinese loans to Russian oil companies, Russia would supply China with large quantities of crude oil via new pipelines for the next 20 years.", "내달 열릴 푸틴 대통령과 모디 총리 간 정상회담에는 국방 협력, 민간 원자력 협력, 에너지 무역 등이 의제로 오를 예정이다.", "인도는 러시아 원유의 최대 수입국 중 하나로 미국 등 서방이 우크라이나 전쟁 이후 대러시아 제재를 추진하는 과정에서 충돌하기도 했다.", "인도는 중국에 이어 두 번째로 러시아 원유를 많이 수입한다. 특히 우크라이나 전쟁 발발한 이후 수입량을 급격히 늘린 것으로 전해졌다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 4, "politician": "Vladimir Putin", "policy": "National Projects (2018)", "industry_or_sector": "Infrastructure/Tech", "companies": ["RT-Investment Corporation", "Yandex"], "impact_description": "디지털화 및 교통 인프라 확충을 목표로 한 국가 프로젝트를 추진했으나, 관련 증거는 에 명시적으로 제시되지 않았습니다.", "impact_result": {"label": "NOT_ENOUGH_INFO", "score": 0.0, "reasoning": "No usable evidence sources were available for this influence chain.", "evidence_spans": [], "error_type": "TOO_SHORT"}, "attribution_result": {"label": "NOT_ENOUGH_INFO", "score": 0.0, "reasoning": "No usable evidence sources were available for this influence chain.", "evidence_spans": [], "error_type": "TOO_SHORT", "politician_mentioned": false, "policy_topic_mentioned": false}}, {"chain_index": 5, "politician": "Vladimir Putin", "policy": "Energy Strategy to 2030", "industry_or_sector": "Energy", "companies": ["StroyGasNefteGas", "StroyGasMontazh"], "impact_description": "푸틴의 친구인 아르카디 로텐부르크와 겐나디 팀첸코가 Gazprom으로부터 934억 달러 규모의 비경쟁적 파이프라인 계약을 획득했습니다.", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 출처 1은 푸틴의 친구인 아르카디 로텐부르크와 겐나디 팀첸코가 Gazprom으로부터 934억 달러 규모의 비경쟁적 파이프라인 계약을 획득했다는 내용을 명확하게 뒷받침합니다. 출처는 이들이 푸틴의 친한 친구임을 명시하고, 그들의 회사(StroyGasNefteGas 및 StroyGasMontazh)가 Gazprom으로부터 총 934억 달러에 달하는 파이프라인 건설 계약을 수주했으며, 팀첸코의 회사는 경쟁 입찰 절차 없이 직접 계약을 체결했음을 언급합니다.", "evidence_spans": ["[Source 1] 블라디미르 푸틴 대통령의 가까운 개인 친구인 겐나디 팀첸코와 아르카디 로텐부르크", "[Source 1] 시베리아의 힘(Sila Sibiri), 노드 스트림 2, 터키 스트림과 같은 가스 수출 파이프라인 건설 계약 비용은 총 934억 달러에 달한다", "[Source 1] 팀첸코의 회사는 경쟁 입찰 절차 없이 Gazprom의 수장인 알렉세이 밀러에 의해 직접 임명되었다.", "[Source 1] Gazprom의 대규모 투자 프로그램으로부터 이익을 얻는 또 다른 대규모 계약자는 억만장자이자 푸틴의 어린 시절 친구인 로텐부르크의 StroyGasMontazh(STGM)이다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "기사는 블라디미르 푸틴 대통령의 측근들이 가스프롬의 대규모 에너지 파이프라인 건설 계약을 통해 이득을 얻는 과정을 상세히 다루고 있습니다. 이는 러시아의 에너지 인프라 투자 및 전략과 직접적으로 관련된 내용이며, 푸틴 대통령이 이러한 과정에 중요한 인물로 언급됩니다.", "evidence_spans": ["국영 러시아 천연가스 대기업 가스프롬과 과두정치인 및 블라디미르 푸틴 대통령의 가까운 개인 친구인 겐나디 팀첸코와 아르카디 로텐베르크가 소유한 회사들", "가스프롬은 크렘린 내부자 팀첸코가 지배하는 스트로이가스네프테가스(STNG)를 노르드 스트림 2 파이프라인의 본토 부분을 건설하도록 직접 임명했습니다.", "가스프롬의 대규모 투자 프로그램으로부터 이득을 얻는 또 다른 대규모 계약자는 억만장자이자 푸틴의 어린 시절 친구인 로텐베르크의 스트로이가스몬타즈(STGM)입니다.", "가스프롬의 소액 주주인 알렉산더 브라니스 회장은 이미 블라디미르 푸틴 대통령에게 가스프롬의 막대한 지출 문제를 제기했습니다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 6, "politician": "Vladimir Putin", "policy": "State-backed defense industrial complex and arms exports", "industry_or_sector": "Defense", "companies": ["Rostec"], "impact_description": "푸틴은 우크라이나 전쟁 지원을 위해 Rostec에 Lancet 및 Cube 드론 생산 증대를 지시했습니다.", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 소스 1은 푸틴 대통령이 우크라이나 전쟁 지원을 위해 국영 방산업체 로스테크에 란체트와 쿠프 드론 생산 증대를 지시했다는 내용을 명확하게 언급하고 있습니다. 이는 임팩트 설명의 모든 핵심 요소를 뒷받침합니다.", "evidence_spans": ["[Source 1] 블라디미르 푸틴 러시아 대통령이 자폭 드론 등 최신형 무기 생산량을 늘리라고 7일 국영 방산업체에 지시한 것으로 나타났다.", "[Source 1] 블라디미르 푸틴 러시아 대통령은 러시아 국영 방산업체 로스테크에 지시했다.", "[Source 1] 푸틴이 직접 언급한 최신형 무인기는 자폭 드론 '쿠프(Cube)'와 '란체트(Lancet)'이다.", "[Source 1] 러시아가 우크라이나 특별군사작전(우크라이나 침공 작전)에서 대량의 무인항공기(드론)을 사용하고 있는 가운데"], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "기사는 블라디미르 푸틴 러시아 대통령이 국영 방산업체에 최신형 무기(자폭 드론) 생산 확대를 지시했다는 내용을 다루고 있습니다. 이는 국가 주도의 방위산업 복합체와 무기 생산 정책에 푸틴 대통령이 직접적으로 관여하고 있음을 명확히 보여줍니다.", "evidence_spans": ["블라디미르 푸틴 러시아 대통령이 자폭 드론 등 최신형 무기 생산량을 늘리라고 7일 국영 방산업체에 지시한 것으로 나타났다.", "푸틴 대통령은 이날 국영 방산업체 로스테크 세르게이 체메조프 최고경영자(CEO)에게 \"최신형 무기 생산 비중을 높이는 것이 필요하다\"면서 프로리프 T-90 전차와 항공 체계를 언급했다.", "체메조프 CEO는 \"특별군사작전(우크라이나 침공)에서 광범위하게 사용되는 모든 종류의 군수품 생산량을 늘렸다\"면서 전투기와 헬리콥터 생산을 두배로 늘렸다고 부연했다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}], "gold_eval": {"similarity_score": 0.75, "reasoning": "두 보고서는 이재명 의원의 기본소득 및 친환경 에너지 정책을 공통적으로 다루며 관련 산업과 기업을 유사하게 분석했습니다. 그러나 부동산 정책에서 Gold Report는 민간 시장 규제를, Model Report는 공공 주거 확대를 강조하여 접근 방식이 달랐습니다. Gold Report는 기본소득의 플랫폼 산업 영향과 신재생에너지의 이차전지 산업 연관성을 더 깊이 다루어 더 구체적이고 균형 잡힌 시장 파급 효과 설명을 제공했습니다. Model Report는 긍정적 측면에 집중하는 경향이 있었습니다.", "model_unique_points": ["청년 주거 안정화를 위한 공공임대주택 확대 정책과 공공 건설 부문의 영향 분석.", "친환경 에너지 전환 정책에서 RE100 지원을 통한 기업의 재생에너지 사용 확대 측면 강조."], "gold_unique_points": ["다주택자 규제 강화를 통한 민간 부동산 시장 안정화 정책과 그에 따른 민간 건설사 영향 분석.", "기본소득 정책이 플랫폼 산업 및 특정 온라인 유통 기업에 미치는 영향에 대한 심층 분석.", "신재생에너지 정책에서 이차전지 산업 및 관련 기업의 성장 가능성 강조."]}}} +{"query": "Narendra Modi", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "나렌드라 모디", "policy": "국가 태양광 미션 + PLI 계획", "industry_or_sector": "재생에너지", "companies": ["Adani Green Energy"], "impact_description": "Adani Green Energy는 인도 태양에너지 공사로부터 8GW 태양광 프로젝트 및 2GW 제조 시설을 위한 60억 달러 계약을 체결했으며, 이는 모디의 '아탐 니르바르 바라트 아비얀'(자립적 인도 프로그램)과 연결되어 있습니다. 이 프로젝트는 9억 톤의 CO2 배출 감소와 40만 개의 일자리 창출을 목표로 합니다.", "impact_result": {"label": "SUPPORTED", "score": 0.95, "reasoning": "제공된 두 출처 모두 Adani Green Energy가 인도 태양에너지 공사(SECI)로부터 8GW 태양광 프로젝트 및 2GW 제조 시설을 위한 60억 달러 계약을 체결했다는 내용을 명확히 뒷받침합니다. 또한, 이 프로젝트가 모디 총리의 '아탐 니르바르 바라트 아비얀'(자립적 인도 프로그램)과 연결되어 있으며, 9억 톤의 CO2 배출 감소와 40만 개의 일자리 창출을 목표로 한다는 모든 세부 사항이 출처에 명시되어 있습니다.", "evidence_spans": ["[Source 1] Adani Green Energy Limited (AGEL) has won one of world’s largest solar contract from Solar Energy Corporation of India (SECI) to develop 8 GW of solar projects along with a commitment to establish 2 GW of additional solar cell and module manufacturing capacity at cost of ₹45,000 crore or $6 bilion, creating 4 lakh direct and indirect jobs.", "[Source 1] This is the single biggest investment announced since the launch of the Prime Minister Narendra Modi’s Atma Nirbhar Bharat Abhiyan (Self Reliant India Program).", "[Source 1] The contract will also displace 900 million tonnes of carbon dioxide over its lifetime.", "[Source 2] India’s state renewable energy agency SECI has awarded a USD 6 billion contract to domestic renewables company Adani Green Energy Limited to develop a total of 8 GW of solar power projects over five years and set up solar cell and module manufacturing capacities totaling 2 GW.", "[Source 2] The entire project is expected to eliminate 900 million metric tons of CO2 over its lifespan, while creating 400,000 direct and indirect jobs."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "두 기사 모두 인도에서 대규모 태양광 에너지 계약에 대해 다루고 있으며, 태양광 프로젝트 개발 및 제조 역량 구축을 포함합니다. 나렌드라 모디 총리는 이 계약과 관련된 '자립 인도 프로그램(Atma Nirbhar Bharat Abhiyan)'과 인도의 재생에너지 목표를 언급하며 중요한 역할을 하는 것으로 나타납니다. 이는 '국가 태양광 미션'과 'PLI 계획'의 핵심 주제와 직접적으로 연결됩니다.", "evidence_spans": ["This is the single biggest investment announced since the launch of the Prime Minister Narendra Modi’s Atma Nirbhar Bharat Abhiyan (Self Reliant India Program).", "Adani Green Energy Ltd bags world’s largest solar contract worth $6 billion To develop 8 GW of solar project and 2 GW of additional solar cell and module manufacturing capacity.", "Indian Prime Minister Narendra Modi announced India’s target of 175 GW renewable energy by 2022, while the country’s longer-term target is 450 GW renewable energy capacity by 2030", "India’s state renewable energy agency SECI has awarded a USD 6 billion contract to domestic renewables company Adani Green Energy Limited to develop a total of 8 GW of solar power projects over five years and set up solar cell and module manufacturing capacities totaling 2 GW."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 1, "politician": "나렌드라 모디", "policy": "제약 PLI 계획", "industry_or_sector": "제약", "companies": ["Sun Pharma"], "impact_description": "Sun Pharma는 15,000억 루피 규모의 PLI 계획에서 글로벌 매출 5,000억 루피 이상의 '그룹 A' 수혜자로 선정되었으며, 6년간 API 및 의약품 증분 매출에 대한 인센티브를 받게 됩니다.", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 두 출처 모두 Sun Pharma가 15,000억 루피 규모의 PLI 계획에서 글로벌 매출 5,000억 루피 이상의 '그룹 A' 수혜자로 선정되었으며, 6년간 API 및 의약품 증분 매출에 대한 인센티브를 받게 된다는 내용을 명확하게 뒷받침합니다. 출처 1은 그룹 A의 기준(글로벌 매출 5,000억 루피 이상)과 Sun Pharma가 이 그룹에 속함을 명시하고, 인센티브가 최대 6년간 증분 매출에 대해 지급된다고 언급합니다. 출처 2 또한 Sun Pharma가 PLI 계획의 그룹 A에 포함되며, 인센티브가 최대 6년간 제약 제품의 증분 매출에 대해 지급된다고 확인합니다. 특히 출처 2는 API가 인센티브 대상 제품 범주 중 하나임을 명시합니다.", "evidence_spans": ["[Source 1] India has selected 55 companies for pharma production-linked incentives worth Rs 15,000 crore.", "[Source 1] Group A: Companies having a global manufacturing turnover of more than Rs 5,000 crore; 11 applicants. Sun Pharma, Aurobindo Pharma Ltd., Dr. Reddy’s, Lupin, Cipla, Cadila Healthcare Ltd., Amneal Pharmaceuticals Pvt., Mylan Laboratories Ltd., Glenmark Pharmaceuticals Ltd., Torrent Pharmaceuticals Ltd. and Intas Pharmaceuticals Ltd.", "[Source 1] The scheme will provide financial incentives on the incremental sales (over the FY20 base year) of pharmaceutical goods and in-vitro diagnostic medical devices to selected applicants based on pre-defined selection criteria. The incentives will be paid for a maximum period of six years for each participant depending upon the threshold investments and sales criteria to be achieved by the applicant.", "[Source 2] The government has selected 55 pharma companies including Sun Pharma, Dr Reddy’s and Cipla for Rs 15,000 crore Production Linked Incentive scheme to boost domestic manufacturing.", "[Source 2] The Group A consists of 11 selected applicants including Sun Pharmaceutical, Aurobindo Pharma, Dr Reddy’s Laoratories, Lupin, Cadila Healthcare, Cipla, Glenmark and Torrent Pharmaceuticals.", "[Source 2] The scheme will provide financial incentives on the incremental sales (over Base Year) of pharmaceutical goods and in-vitro diagnostic medical devices to selected applicants based on pre-defined selection criteria. The incentives will be paid for a maximum period of six years for each participant depending upon the threshold investments and sales criteria to be achieved by the applicant.", "[Source 2] Category 2: Active Pharmaceutical Ingredients / Key Starting materials / Drug Intermediates"], "error_type": "NONE"}, "attribution_result": {"label": "WEAKLY_RELATED", "score": 0.65, "reasoning": "기사들은 인도 정부의 제약 PLI 계획에 대해 상세히 다루고 있으며, 이 계획의 목적, 선정된 기업, 인센티브 규모 등을 설명합니다. 그러나 나렌드라 모디 총리의 이름은 직접적으로 언급되지 않고, '인도 정부' 또는 '연합 내각'으로만 지칭됩니다. 정책 자체는 매우 관련성이 높지만, 정치인과의 직접적인 연결이 부족합니다.", "evidence_spans": ["PLI 계획은 2월 인도 정부의 '아트마니르바르 바라트' 이니셔티브 하에 발표되었습니다.", "정부는 국내 제조를 활성화하기 위한 15,000 크로르 루피 규모의 생산 연계 인센티브 계획에 Sun Pharma, Dr Reddy’s 및 Cipla를 포함한 55개 제약 회사를 선정했습니다."], "error_type": "NONE", "politician_mentioned": false, "policy_topic_mentioned": true}}, {"chain_index": 2, "politician": "나렌드라 모디", "policy": "Make in India + PLI 계획", "industry_or_sector": "제조업 및 IT", "companies": ["Apple", "Samsung", "Tesla", "Hyundai", "Kia", "MG Motor"], "impact_description": "Apple, Samsung, Tesla, Hyundai, Kia, MG Motor는 FDI 인센티브를 통해 인도에 제조 공장을 설립했습니다. 인도의 '비즈니스 용이성' 순위는 2014년 142위에서 2019년 63위로 상승했습니다.", "impact_result": {"label": "PARTIALLY_SUPPORTED", "score": 0.7, "reasoning": "소스 2는 인도의 '비즈니스 용이성' 순위가 2014년 142위에서 2019년 63위로 상승했다는 내용을 명확하게 뒷받침합니다. 그러나 Apple, Samsung, Tesla, Hyundai, Kia, MG Motor와 같은 특정 회사들이 FDI 인센티브를 통해 인도에 제조 공장을 설립했다는 내용은 소스에서 직접적으로 언급되지 않습니다. 소스는 'Make in India' 및 '생산 연계 인센티브(PLI) 제도'와 같은 정책을 통해 외국인 투자를 유치하고 국내 제조업을 육성하려는 정부의 노력을 설명하지만, 특정 기업의 사례는 제시하지 않습니다.", "evidence_spans": ["[Source 2] India's jump in the World Bank’s Ease of Doing Business rankings from 142 in 2014 to 63 in 2019 is a testament to the Modi government’s concerted efforts to create a business-friendly environment.", "[Source 2] The \"Make in India\" Initiative: Laying the Foundation Launched in 2014, the “Make in India” campaign was one of the flagship initiatives of Prime Minister Narendra Modi's government. The primary goal of the initiative was to position India as a global manufacturing hub, ensuring that both domestic and foreign companies invest in manufacturing within the country.", "[Source 2] A game-changing policy introduced by the Modi government was the Production Linked Incentive (PLI) scheme, designed to promote domestic manufacturing in sectors with high potential for growth and export. Launched in 2020, the PLI scheme offers financial incentives to companies based on their incremental production and sales."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "제공된 소스(Source 2)는 나렌드라 모디 총리와 그의 정부가 추진한 \"Make in India\" 캠페인과 \"생산 연계 인센티브(PLI) 제도\"에 대해 명확하고 상세하게 설명하고 있습니다. 모디 총리가 이 정책들의 핵심 주체로 언급되며, 정책 내용과 그 영향이 중심적으로 다루어지고 있습니다.", "evidence_spans": ["The Modi government's vision, combined with a series of industry-friendly policies, has paved the way for India to emerge as a global manufacturing hub.", "Launched in 2014, the “Make in India” campaign was one of the flagship initiatives of Prime Minister Narendra Modi's government.", "A game-changing policy introduced by the Modi government was the Production Linked Incentive (PLI) scheme, designed to promote domestic manufacturing in sectors with high potential for growth and export."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 3, "politician": "나렌드라 모디", "policy": "반도체 프로젝트", "industry_or_sector": "반도체", "companies": ["Tata Sons", "PSMC"], "impact_description": "모디는 Tata Sons 및 PSMC(대만 반도체 기업) 리더들과 만나 인도 내 반도체 제조 프로젝트에 대해 논의했습니다. PSMC는 인도에서 사업 확장을 희망하고 있습니다.", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 출처는 모디 총리가 Tata Sons 및 PSMC 리더들과 만나 인도 내 반도체 제조 프로젝트를 논의했으며, PSMC가 인도에서 사업 확장을 희망한다는 내용을 명확하게 언급하고 있습니다.", "evidence_spans": ["[Source 1] Prime Minister Narendra Modi on Thursday met with the leadership team of Tata Sons and Taiwan-based Powerchip Semiconductor Manufacturing Corporation (PSMC). The discussion focused on updates regarding semiconductor manufacturing projects in India.", "[Source 1] PSMC expressed enthusiasm to further expand its footprint in India."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "기사에서 나렌드라 모디 총리가 Tata Sons 및 PSMC 경영진과 만나 인도 내 반도체 제조 프로젝트에 대해 논의했다고 명확하게 언급하고 있습니다. 이는 정치인과 정책이 직접적으로 관련되어 있음을 보여줍니다.", "evidence_spans": ["PM Modi meets leadership team of Tata Sons, PSMC; discusses semiconductor manufacturing projects", "Prime Minister Narendra Modi on Thursday met with the leadership team of Tata Sons and Taiwan-based Powerchip Semiconductor Manufacturing Corporation (PSMC). The discussion focused on updates regarding semiconductor manufacturing projects in India."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 4, "politician": "나렌드라 모디", "policy": "Air India 민영화", "industry_or_sector": "항공", "companies": ["Tata Group"], "impact_description": "모디는 Air India 민영화(2022) 전 Tata Sons 회장과 회담을 가졌으며, 이는 인도 최초의 주요 민영화 거래 중 하나입니다. 이 거래는 Air India의 운영을 Tata에 이전하면서 61,562억 루피 부채 중 46,262억 루피를 특수 목적 차량(AIAHL)에 남겼습니다.", "impact_result": {"label": "SUPPORTED", "score": 0.95, "reasoning": "제공된 출처는 임팩트 설명의 모든 핵심 내용을 명확하게 뒷받침합니다. 모디 총리와 Tata Sons 회장의 회담, Air India 민영화가 인도의 주요 민영화 거래 중 하나라는 점, 그리고 부채(61,562억 루피 중 46,262억 루피가 AIAHL로 이전)에 대한 구체적인 수치까지 모두 명시되어 있습니다.", "evidence_spans": ["Chairman of Tata Sons N Chandrasekaran met Prime Minister Narendra Modi on Thursday, before the official handover of the Air India to the Tata Group.", "The official handover of Air India is the first major successful deal of privatisation in the last few decades.", "As of August 31, Air India had a total debt of ₹ 61,562 crore. Around 75 per cent of this debt or ₹ 46,262 crore will be transferred to a special purpose vehicle AIAHL before handing over the loss-making airline to Tata Group."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "제공된 기사는 나렌드라 모디 총리가 에어 인디아의 타타 그룹 공식 인계 전에 타타 선즈 회장을 만났다고 명시하고 있습니다. 이는 에어 인디아 민영화의 중요한 순간이며, 모디 총리가 이 정책과 직접적으로 연관되어 있음을 보여줍니다. 기사는 에어 인디아의 민영화 과정을 상세히 다루고 있습니다.", "evidence_spans": ["Tata Sons chairman meets PM Modi; Air India handed over to Tata Group", "Chairman of Tata Sons N Chandrasekaran met Prime Minister Narendra Modi on Thursday, before the official handover of the Air India to the Tata Group.", "The official handover of Air India is the first major successful deal of privatisation in the last few decades.", "In October last year, Tata Group won the bid the acquire the debt-laden Air India"], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 5, "politician": "나렌드라 모디", "policy": "경제 성장 전략", "industry_or_sector": "인프라", "companies": ["Adani Group"], "impact_description": "모디는 2020년 경제 성장 및 일자리 창출을 논의하기 위해 Adani Group을 포함한 기업 리더들과 회담을 가졌습니다. 당시 경제 성장률은 2019년 3분기 4.5%로 둔화되었습니다.", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 출처는 모디 총리가 2020년 경제 성장 및 일자리 창출을 논의하기 위해 Adani Group을 포함한 기업 리더들과 회담을 가졌다는 내용과 당시 경제 성장률이 2019년 3분기에 4.5%로 둔화되었다는 내용을 명확하게 뒷받침합니다.", "evidence_spans": ["[Source 1] Prime Minister Narendra Modi on Monday interacted with India's top business stalwarts and discussed how to improve economic growth and create new job opportunities.", "[Source 1] The meeting was attended by top businessmen like ... Gautam Adani (Adani Industries)...", "[Source 1] The discussions assume significance as the government is looking at solutions for reviving the economy, which has witnessed a downturn in recent quarters, falling over six year low to 4.5 per cent in July-September quarter."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "기사는 나렌드라 모디 총리가 경제 성장과 일자리 창출을 논의하기 위해 기업 리더들과 만났다고 언급하며, 정부의 경제 활성화 노력과 대규모 인프라 프로젝트 계획을 다루고 있어 주어진 정책과 매우 밀접하게 관련됩니다.", "evidence_spans": ["나렌드라 모디 총리는 인도의 최고 기업 거물들과 교류하며 경제 성장을 개선하고 새로운 일자리 기회를 창출하는 방법을 논의했습니다.", "12월 31일, 니르말라 시타라만 재무장관은 정부의 해당 부문 지출 확대의 일환으로 향후 5년간 102조 루피 규모의 인프라 프로젝트가 확인되었다고 발표했습니다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}], "gold_eval": {"similarity_score": 0.7, "reasoning": "두 보고서는 이재명 의원의 기본소득 및 일부 인프라 정책에 대한 분석에서 유사점을 보였습니다. 골드 보고서는 부동산 시장 안정화 정책과 대규모 국책 사업의 경제적 파급 효과를 심층적으로 다룬 반면, 모델 보고서는 소상공인 및 지역 특화 산업 지원 정책에 대한 독자적인 관점을 제시했습니다. 전반적으로 골드 보고서가 주요 거시 경제 정책의 시장 영향 분석에서 더 깊이 있는 설명을 제공했습니다.", "model_unique_points": ["소상공인 및 중소기업 지원 정책이 지역 경제 활성화에 미치는 영향", "지역 특화 산업 육성 방안과 관련 중소 제조 기업의 성장 가능성"], "gold_unique_points": ["부동산 시장 안정화 정책이 건설 및 금융 산업에 미치는 구체적인 영향 분석", "대규모 국책 사업 추진에 따른 특정 대기업 및 관련 하청 기업의 수혜 전망"]}}} +{"query": "Rishi Sunak", "evaluation": {"chain_results": [], "gold_eval": null}} +{"query": "Emmanuel Macron", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "Emmanuel Macron", "policy": "Macron’s 'war economy' and NATO-aligned defense spending increase (3.5% GDP by 2027)", "industry_or_sector": "Defense", "companies": ["Thalès", "Renault", "KNDS France/MBDA"], "impact_description": "Thalès tripled radar output, hired 9,000 defense workers, and invested €750M in French factories. Renault shifted production to military aircraft calculators and drones. KNDS France/MBDA accelerated artillery and missile production.", "impact_result": {"label": "PARTIALLY_SUPPORTED", "score": 0.75, "reasoning": "탈레스(Thalès)의 레이더 생산량 3배 증가, 9,000명 고용, 프랑스 공장에 7억 5천만 유로 투자 주장은 모두 출처에 의해 명확하게 뒷받침됩니다. 르노(Renault)가 군용 항공기 계산기 생산으로 전환했다는 주장은 지원되지만, 드론 생산은 우크라이나에서 시작할 계획이라고 언급되어 설명의 \"생산 전환\"과는 약간의 차이가 있습니다. KNDS France의 포병 생산 가속화와 MBDA의 미사일 생산 가속화 주장은 모두 출처에 의해 지원됩니다. 전반적으로 대부분의 주장이 지원되지만, 르노의 드론 생산 부분에 대한 세부 정보가 설명과 완전히 일치하지 않아 \"부분적으로 지원됨\"으로 판단합니다.", "evidence_spans": ["[Source 1] radar production at Thalès has tripled in the past four years.", "[Source 1] \"We have hired 9,000 people over the last three years in defense capabilities in France, just to take that country,”", "[Source 1] “We have invested around Є750 million of capital investments for our factories for defence in France over the last three years,", "[Source 1] One factory owned by automaker Renault has switched from making car dashboards to military aircraft calculators.", "[Source 1] Renault is also planning to start drone production, though that will be in Ukraine.", "[Source 1] The first one is the production of the Caesar cannon; it's a mobile cannon that is produced by KNDS France. The initial production rate, let's say 2023, was around two. And now they are producing up to 12.", "[Source 1] If we take MBDA, French production of Aster missiles — in fact, they are reducing the lead time to produce one unit from 42 months to 18 months."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "소스는 에마뉘엘 마크롱 프랑스 대통령이 \"전시 경제\"를 선언하고 프랑스가 NATO 동맹국들과 보조를 맞춰 2027년까지 GDP의 3.5%로 국방비를 두 배 늘리겠다고 밝힌 내용을 직접적으로 다루고 있습니다. 이는 주어진 정치인과 정책에 매우 밀접하게 관련됩니다.", "evidence_spans": ["프랑스 마크롱 대통령은 자신이 “전시 경제”를 만들고 있다고 말하며, 여러 민간 공장들이 무기와 탄약을 생산하도록 재정비되었습니다.", "프랑스는 세계에서 두 번째로 큰 무기 수출국으로, NATO 국방 동맹의 다른 회원국들과 보조를 맞춰 2027년까지 GDP의 3.5%로 군사비를 두 배 늘리기로 했습니다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 1, "politician": "Emmanuel Macron", "policy": "2023 Renewable Energy Acceleration Bill (part of 'France 2030' plan)", "industry_or_sector": "Onshore wind/solar", "companies": [], "impact_description": "The 2023 Renewable Energy Acceleration Bill aims to double renewables to 40% of consumption by 2030.", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 출처는 2023년 재생 에너지 가속화 법안이 통과되었으며, 정부가 2030년까지 재생 에너지 소비량을 현재의 약 20%에서 두 배인 40%로 늘리는 것을 목표로 하고 있음을 명확하게 뒷받침합니다.", "evidence_spans": ["[Source 1] The Renewable Energy Acceleration Bill (Projet de loi relative à l’accélération de la production d’énergies renouvelables) was passed by the country’s lawmakers in February 2023 and promulgate don 10 March.", "[Source 1] renewables catering for about one fifth of energy consumption. The government aims to double that by 2030", "[Source 1] President Emmanuel Macron has pledged to boost France’s renewable energy production as part of his government’s multibillion euro “France 2030” investment plan, including a significant increase in onshore wind and solar power generation by the end of the decade."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "소스는 에마뉘엘 마크롱 대통령이 프랑스 2030 계획의 일환으로 재생 에너지 생산을 늘리겠다고 공약했으며, 2023년 2월에 통과된 재생 에너지 가속화 법안에 대해 직접적으로 언급하고 있습니다. 마크롱 대통령은 이 정책과 관련하여 중요한 역할을 하는 것으로 나타납니다.", "evidence_spans": ["에마뉘엘 마크롱 대통령은 정부의 수십억 유로 규모의 \"프랑스 2030\" 투자 계획의 일환으로 프랑스의 재생 에너지 생산을 늘리겠다고 공약했습니다.", "재생 에너지 가속화 법안(Projet de loi relative à l’accélération de la production d’énergies renouvelables)은 2023년 2월에 국회의원들에 의해 통과되었고 3월 10일에 공포되었습니다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 2, "politician": "Emmanuel Macron", "policy": "France 2030 (AI funding)", "industry_or_sector": "Digital Transformation", "companies": ["Mistral AI", "Dataiku"], "impact_description": "Mistral AI develops open-source LLMs. Dataiku’s platform supports non-technical users through a 'no-code' interface, enabling tasks like data preprocessing and connecting large language models (LLMs) for chatbot development.", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 출처들은 임팩트 설명의 모든 핵심 내용을 명확하게 뒷받침합니다. Mistral AI가 오픈소스 LLM을 개발한다는 내용은 출처 2에서 확인되며, Dataiku 플랫폼이 비기술 사용자에게 노코드 인터페이스를 통해 데이터 전처리 및 LLM 연결을 통한 챗봇 개발을 지원한다는 내용은 출처 3에서 상세히 설명되어 있습니다.", "evidence_spans": ["[Source 2] Mistral AI is the undisputed flagship of European generative AI. Founded in 2023, this Paris-based pioneer specializes in open-weight large language models that offer a powerful, customizable alternative to closed, US-dominated models.", "[Source 3] \"기술을 민주화하겠다\"는 데이터이쿠의 방향성에 따라 코딩을 모르는 비전공자도 엑셀과 같은 프로그램처럼 활용할 수 있도록 '노코드' 옵션을 제공한다.", "[Source 3] 만약 사내 데이터를 활용한 AI 기능을 만들고 싶다면 저장된 데이터를 연결해 가져온 다음 전처리 단계를 거쳐야 한다. 이 과정도 비개발자가 데이터이쿠 플랫폼을 통해 진행할 수 있으며, 그다음에는 필요한 거대언어모델( LLM )을 연결해 챗봇을 만드는 등의 작업을 하면 된다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "소스들은 \"프랑스 2030\" 계획과 이 계획이 인공지능(AI) 연구 및 인프라에 상당한 투자를 할당하고 있음을 명확하게 설명합니다. 에마뉘엘 마크롱 대통령의 이름이 직접 언급되지는 않지만, \"프랑스 2030\" 계획은 그의 재임 기간 동안 추진된 핵심 정책이므로, 정책을 통해 정치인과의 연관성이 매우 높습니다.", "evidence_spans": ["프랑스 테크 2030 프로그램의 2025년 승진 기업 80곳은 야심찬 프랑스 기술의 윤곽을 그립니다. 이 기업들은 인공지능 및 그 응용 분야와 같은 핵심 영역에서 전략적 솔루션을 개발합니다.", "프랑스 2030 계획은 AI 연구, 인재 및 인프라에 특별히 25억 유로를 할당하여 스타트업 생태계를 직접 육성합니다.", "프랑스는 딥테크 및 혁신 부문을 강화하기 위해 \"프랑스 2030\" 및 \"티비 2\" 이니셔티브를 통해 1,090억 유로의 투자 추진을 동원하고 있습니다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 3, "politician": "Emmanuel Macron", "policy": "EU Trade Agreements", "industry_or_sector": "EU Trade Agreements", "companies": [], "impact_description": "No direct beneficiaries identified in any source. Post-Brexit challenges (e.g., rules of origin, tariffs) were noted, but no explicit evidence of French companies leveraging EU trade deals.", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "소스 1은 브렉시트 이후의 새로운 관세 규정, 국경 통제, 위생 및 식물 위생 검사 등 프랑스 기업이 직면한 과제를 명확히 설명합니다. 또한, EU 무역 협정을 활용하여 이득을 얻은 프랑스 기업에 대한 명시적인 증거는 제시되지 않습니다. 이는 영향 설명의 모든 요소를 뒷받침합니다.", "evidence_spans": ["[Source 1] Leaving the EU customs union required the reintroduction of: Border controls, with customs declarations for both imports and exports Security checks Sanitary and phytosanitary inspections of live animals, plants, and products of animal and/or plant origin.", "[Source 1] But while the trade deal agreed on 24 December 2020 avoided a “hard Brexit”—a sharp break from the EU single market, with the return of customs tariffs and quotas—frictionless trade is far from guaranteed in the post-Brexit world.", "[Source 1] After Brexit, start or adapt your business in France"], "error_type": "NONE"}, "attribution_result": {"label": "WEAKLY_RELATED", "score": 0.55, "reasoning": "이 문서는 브렉시트와 EU/영국 무역협정(EU Trade Agreements)에 대해 광범위하게 다루고 있어 정책 주제와 매우 관련이 있습니다. 하지만 에마뉘엘 마크롱(Emmanuel Macron)은 전혀 언급되지 않습니다.", "evidence_spans": ["Access to the EU/UK Trade and Cooperation Agreement", "The UK–EU negotiations led to a zero-tariffs, zero-quotas free trade agreement.", "on 1st January 2021, the UK officially became a “third country”—outside the EU, the single market and the customs union – with important consequences for trade."], "error_type": "NONE", "politician_mentioned": false, "policy_topic_mentioned": true}}, {"chain_index": 4, "politician": "Emmanuel Macron", "policy": "G20 discussions on AI, nuclear/renewable energy, and defense (aviation/guided weapons)", "industry_or_sector": "Korea-France Cooperation", "companies": [], "impact_description": "Strategic partnerships in energy transition (e.g., green hydrogen) and defense systems, but no specific firms named.", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 출처는 한국과 프랑스 간 에너지 전환(재생에너지) 및 방위산업 분야에서 전략적 파트너십이 논의되었음을 명확히 언급하고 있습니다. 특히 방위산업 분야에서 기업 간 협력 확대 가능성이 언급되었으나, 특정 기업의 이름은 명시되지 않아 영향 설명과 일치합니다.", "evidence_spans": ["[Source 1] 이재명 대통령과 에마뉘엘 마크롱 프랑스 대통령 회담에서는 신기술과 에너지, 방위산업이 핵심 협력 분야로 거론됐다.", "[Source 1] 양측은 AI·우주·퀀텀 기술 같은 차세대 산업 전환 대응 역량을 강화하고, 원전·재생에너지 분야에서 공동 기회를 모색하기로 했다.", "[Source 1] 방산에서는 항공·유도무기 체계 등에서 기업 간 협력 확대 여지가 언급됐다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "기사는 에마뉘엘 마크롱 프랑스 대통령이 G20 정상회의 계기에 한국 대통령과 회담을 가졌으며, 이 회담에서 AI, 원전·재생에너지, 방위산업(항공·유도무기 체계) 분야 협력 확대 방안을 논의했다고 명확하게 언급하고 있습니다. 이는 주어진 정치인과 정책 주제에 매우 직접적으로 관련됩니다.", "evidence_spans": ["이재명 대통령과 에마뉘엘 마크롱 프랑스 대통령이 22일(현지시간) 남아프리카공화국 요하네스버그 나스렉 엑스포센터에서 정상회담을 하고 있다.", "이재명 대통령과 에마뉘엘 마크롱 프랑스 대통령 회담에서는 신기술과 에너지, 방위산업이 핵심 협력 분야로 거론됐다. 양측은 AI·우주·퀀텀 기술 같은 차세대 산업 전환 대응 역량을 강화하고, 원전·재생에너지 분야에서 공동 기회를 모색하기로 했다. 방산에서는 항공·유도무기 체계 등에서 기업 간 협력 확대 여지가 언급됐다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 5, "politician": "Emmanuel Macron", "policy": "Taxi law revisions", "industry_or_sector": "Transportation", "companies": ["Uber"], "impact_description": "Macron, as Economy Minister, agreed to revise taxi laws in Uber's favor despite violent protests by French taxi drivers.", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 출처는 마크롱이 경제부 장관 시절 프랑스 택시 운전사들의 폭력 시위에도 불구하고 우버에 유리하도록 택시 관련 법률을 개정하는 데 동의했다는 내용을 명확하게 뒷받침합니다. 마크롱이 우버 CEO와 친밀한 관계였으며, 우버 운전자의 면허 발급 요건을 완화하는 법령에 서명했다는 구체적인 내용이 언급되어 있습니다.", "evidence_spans": ["[Source 1] 프랑스의 택시 기사들이 우버에 대항해 때론 폭력적인 시위를 벌이는 동안 현 대통령인 마크롱 당시 경제장관은 우버의 논란 많은 CEO인 칼라닉과 친밀한 사이였으며, 칼라닉 CEO에게 우버에 유리하게 법을 개정할 것이라고 말하기도 했다.", "[Source 1] 마크롱은 우버팝에 미래가 있다고 생각하진 않았지만, 우버의 입맛에 맞게 프랑스의 택시 관련 법을 개정하기로 동의했다.", "[Source 1] 그리고 몇 달 뒤 마크롱은 우버 운전자의 면허 발급 요건을 완화하는 법령에 서명했다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "기사는 에마뉘엘 마크롱 대통령이 경제장관 시절 우버의 이익을 위해 프랑스의 택시 관련 법규를 개정하는 데 적극적으로 관여했음을 상세히 다루고 있습니다. 마크롱이 우버 CEO와 만나 법 개정을 논의하고, 우버 운전자 면허 발급 요건을 완화하는 법령에 서명한 내용이 명확하게 언급됩니다.", "evidence_spans": ["마크롱 당시 경제장관은 우버의 논란 많은 CEO인 칼라닉과 친밀한 사이였으며, 칼라닉 CEO에게 우버에 유리하게 법을 개정할 것이라고 말하기도 했다.", "마크롱은 우버팝에 미래가 있다고 생각하진 않았지만, 우버의 입맛에 맞게 프랑스의 택시 관련 법을 개정하기로 동의했다.", "몇 달 뒤 마크롱은 우버 운전자의 면허 발급 요건을 완화하는 법령에 서명했다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 6, "politician": "Emmanuel Macron", "policy": "Pro-business economic strategy", "industry_or_sector": "Global Business", "companies": ["Microsoft", "Amazon", "Pfizer", "AstraZeneca"], "impact_description": "Despite political uncertainty, no foreign investments announced earlier in 2023 (e.g., €15bn from Microsoft, Amazon, Pfizer, and AstraZeneca) have been canceled.", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 출처는 정치적 불확실성에도 불구하고 마이크로소프트, 아마존, 화이자, 아스트라제네카를 포함한 2023년 초에 발표된 150억 유로의 외국인 투자가 취소되거나 중단되지 않았다는 내용을 명확하게 뒷받침합니다. 출처는 언급된 회사와 투자 금액을 정확히 일치시키며, 엘리제궁 고문이 해당 투자가 취소되지 않았다고 언급한 부분을 포함합니다.", "evidence_spans": ["[Source 1] Earlier this year. before his annual “Choose France” summit, the president’s office announced €15bn (£12.6bn) of new foreign investment in 56 projects, including €4bn from Microsoft, €1.2bn from Amazon and €1bn each from Pfizer and AstraZeneca.", "[Source 1] None of those investments had so far been cancelled or paused, the Élysée adviser said...", "[Source 1] Barely six weeks after he dissolved parliament and plunged France into political chaos, Emmanuel Macron has sought to reassure 40 of the world’s most influential businessmen that his country remains a good investment."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "기사는 에마뉘엘 마크롱 대통령이 프랑스의 정치적 혼란 속에서도 외국 기업 총수들을 만나 프랑스가 좋은 투자처임을 재확인시키고, 친기업 경제 전략을 통해 외국인 직접 투자를 유치하려는 노력을 직접적으로 다루고 있습니다.", "evidence_spans": ["마크롱, 정치적 혼란 후 해외 주요 기업 총수들 유치", "프랑스 대통령은 손님들을 안심시키며 그의 나라가 여전히 좋은 투자처임을 강조했다.", "마크롱의 중도 친기업 진영은 선거 기간 동안 RN이나 신인민전선의 승리가 프랑스의 경제 안정성을 해치고 외국인 직접 투자를 저해할 것이라고 반복해서 경고했다.", "마크롱 집권 하에 프랑스는 5년 연속 유럽 외국인 직접 투자(FDI) 리그에서 선두를 차지했다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}], "gold_eval": {"similarity_score": 0.75, "reasoning": "두 보고서는 이재명 의원의 기본소득 및 친환경 에너지 정책을 공통적으로 다루며 관련 산업과 기업을 유사하게 분석했습니다. 그러나 부동산 정책에서 Gold Report는 민간 시장 규제를, Model Report는 공공 주거 확대를 강조하여 접근 방식이 달랐습니다. Gold Report는 기본소득의 플랫폼 산업 영향과 신재생에너지의 이차전지 산업 연관성을 더 깊이 다루어 더 구체적이고 균형 잡힌 시장 파급 효과 설명을 제공했습니다. Model Report는 긍정적 측면에 집중하는 경향이 있었습니다.", "model_unique_points": ["청년 주거 안정화를 위한 공공임대주택 확대 정책과 공공 건설 부문의 영향 분석.", "친환경 에너지 전환 정책에서 RE100 지원을 통한 기업의 재생에너지 사용 확대 측면 강조."], "gold_unique_points": ["다주택자 규제 강화를 통한 민간 부동산 시장 안정화 정책과 그에 따른 민간 건설사 영향 분석.", "기본소득 정책이 플랫폼 산업 및 특정 온라인 유통 기업에 미치는 영향에 대한 심층 분석.", "신재생에너지 정책에서 이차전지 산업 및 관련 기업의 성장 가능성 강조."]}}} +{"query": "Volodymyr Zelensky", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "Volodymyr Zelensky", "policy": "반부패 개혁, 분권화, EU/NATO 통합, 토지 시장 개혁, 디지털 전환", "industry_or_sector": "농업, IT, 에너지", "companies": ["Naftogaz", "Datagroup"], "impact_description": "젤렌스키의 정책은 농업, IT, 에너지 분야에 영향을 미쳤으며, Naftogaz와 Datagroup과 같은 기업들이 정책 문서에서 언급되었습니다. 그러나 구체적인 증거 소스는 제공되지 않았습니다.", "impact_result": {"label": "NOT_ENOUGH_INFO", "score": 0.0, "reasoning": "No usable evidence sources were available for this influence chain.", "evidence_spans": [], "error_type": "TOO_SHORT"}, "attribution_result": {"label": "NOT_ENOUGH_INFO", "score": 0.0, "reasoning": "No usable evidence sources were available for this influence chain.", "evidence_spans": [], "error_type": "TOO_SHORT", "politician_mentioned": false, "policy_topic_mentioned": false}}], "gold_eval": {"similarity_score": 0.7, "reasoning": "두 보고서는 이재명 의원의 기본소득 및 일부 인프라 정책에 대한 분석에서 유사점을 보였습니다. 골드 보고서는 부동산 시장 안정화 정책과 대규모 국책 사업의 경제적 파급 효과를 심층적으로 다룬 반면, 모델 보고서는 소상공인 및 지역 특화 산업 지원 정책에 대한 독자적인 관점을 제시했습니다. 전반적으로 골드 보고서가 주요 거시 경제 정책의 시장 영향 분석에서 더 깊이 있는 설명을 제공했습니다.", "model_unique_points": ["소상공인 및 중소기업 지원 정책이 지역 경제 활성화에 미치는 영향", "지역 특화 산업 육성 방안과 관련 중소 제조 기업의 성장 가능성"], "gold_unique_points": ["부동산 시장 안정화 정책이 건설 및 금융 산업에 미치는 구체적인 영향 분석", "대규모 국책 사업 추진에 따른 특정 대기업 및 관련 하청 기업의 수혜 전망"]}}} +{"query": "Fumio Kishida", "evaluation": {"chain_results": [], "gold_eval": null}} +{"query": "Mohammed bin Salman", "evaluation": {"chain_results": [], "gold_eval": null}} diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/dev_test/influence_model_responses_eval_3.jsonl b/usecase/solar-political-influence-analyzer/src/ai-engine/dev_test/influence_model_responses_eval_3.jsonl new file mode 100644 index 0000000..fff67e1 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/dev_test/influence_model_responses_eval_3.jsonl @@ -0,0 +1,20 @@ +{"query": "윤석열", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "윤석열", "policy": "주택 공급 확대 정책", "industry_or_sector": "건설업", "companies": ["일성건설 (Ilseong Construction)"], "impact_description": "윤석열 정부의 주택 공급 확대 정책으로 인해 일성건설 주가가 29.95% 상승함", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 출처는 일성건설의 주가가 전일 대비 29.95% 상승했음을 명시하고 있으며, 이러한 주가 상승의 핵심 요인이 정부의 강력한 주택 공급 확대 의지와 이에 따른 건설 경기 회복 기대감이라고 설명하고 있습니다. 이는 윤석열 정부의 주택 공급 확대 정책으로 인한 주가 상승이라는 설명과 일치합니다.", "evidence_spans": ["장중 기준 일성건설[013360] 주가는 1,883원으로, 전일 대비 29.95% 상승세를 나타내고 있다.", "최근 한 달간 주가 흐름의 핵심은 정부의 주택공급 확대 정책과 중소형 건설주 테마 부상이며", "이번 주가 급등을 주도한 핵심 요인은 정부의 강력한 주택 공급 확대 의지와 이에 따른 건설 경기 회복 기대감이다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "해당 기사는 정부의 주택 공급 확대 정책이 일성건설 주가 상승의 핵심 요인이라고 명시하며, 국토교통부의 정책 방향성과 주택 공급 확대 의지를 언급하고 있습니다. 이는 윤석열 정부의 정책과 직접적으로 연관됩니다.", "evidence_spans": ["정부의 주택공급 확대 정책과 중소형 건설주 테마 부상", "이번 주가 급등을 주도한 핵심 요인은 정부의 강력한 주택 공급 확대 의지와 이에 따른 건설 경기 회복 기대감이다.", "김이탁 신임 국토교통부 제1차관이 취임사를 통해 국민이 원하는 입지에 충분한 주택을 공급하고 건설산업 회복에 속도를 내겠다고 밝힌 점이 결정적인 트리거로 작용했다.", "주가 변동의 가장 큰 거시적 요인은 정부의 주택 공급 정책 드라이브다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 1, "politician": "윤석열", "policy": "드론 및 2차 전지 산업 지원 정책", "industry_or_sector": "드론/2차 전지 산업", "companies": ["PC Direct", "Jungang Advanced Materials"], "impact_description": "윤석열 정부의 드론 및 2차 전지 산업 지원 정책으로 PC Direct와 Jungang Advanced Materials가 정책 관련 기업으로 부각됨", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 출처는 윤석열 정부의 드론 및 2차 전지 산업 지원 정책으로 인해 PC Direct와 Jungang Advanced Materials가 정책 수혜주로 부각되었다는 내용을 명확하게 뒷받침합니다. PC Direct는 드론 정책의 수혜주로, Jungang Advanced Materials는 2차 전지 관련 정책의 수혜주로 분류되었다고 언급되어 있습니다.", "evidence_spans": ["[Source 1] 피씨디렉트는 대표적인 ‘드론 수혜주’ 회사다. 세계 드론 시장 점유율이 높은 기업 디제이아이( DJI )와 패럿사의 드론을 유통하고 있다. 윤석열 정부의 ‘드론 정책'에 따라 정책 수혜주로 지목됐다.", "[Source 1] 공교롭게 중앙첨단소재 역시 윤석열 정부 때 정책 수혜주로 분류됐다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "기사는 윤석열 대통령과 윤석열 정부의 드론 및 이차전지 산업 지원 정책을 명확하게 언급하고 있으며, 관련 기업들이 이러한 정책의 수혜를 받았다고 설명합니다. 윤석열 대통령의 드론 부대 창설 지시, UAM 상용화 기반 마련 언급, 이차전지 소재 기업 방문 등 구체적인 정책 관련 행보가 제시되어 있습니다.", "evidence_spans": ["피씨디렉트는 대표적인 ‘드론 수혜주’ 회사다. 세계 드론 시장 점유율이 높은 기업 디제이아이( DJI )와 패럿사의 드론을 유통하고 있다. 윤석열 정부의 ‘드론 정책'에 따라 정책 수혜주로 지목됐다.", "윤석열 정부는 국정 초기부터 드론 정책에 지원과 관심을 보였다. 2022년 5월 이미 2025년 도심항공모빌리티( UAM· 도심 내 상공에서 비행체로 사람이나 화물을 운송하는 것) 상용화를 위한 기반시설과 제도를 마련하겠다고 밝혔다. 또한 윤석열은 2022년 12월27일 서울 용산 대통령실에서 열린 국무회의에서 북한 무인기에 대응하기 위해 드론 부대 조기 창설을 지시했다.", "공교롭게 중앙첨단소재 역시 윤석열 정부 때 정책 수혜주로 분류됐다. 2023년 4월 중앙첨단소재는 이차전지 소재 생산 기업인 ‘엔켐’과 합작법인 ‘이디엘’을 설립했다. 당시 이디엘은 새만금국가산업단지에 리튬염 공장을 설립하기 위해 6천억원을 투자하겠다고 밝혔는데, 2023년 8월2일 윤석열이 새만금국가산업단지에서 이디엘을 비롯한 새만금 투자 기업들을 방문했다는 보도가 나왔다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 2, "politician": "윤석열", "policy": "탄핵 소추", "industry_or_sector": "주식 시장", "companies": ["노루홀딩스 (Noroo Holdings)", "덕성 (Deoksung)", "삼부토건 (Sambu Construction)", "NE능률 (NE Rate)", "희림 (Heelim)"], "impact_description": "윤석열 대통령 탄핵 소추로 노루홀딩스 주가 0.60% 상승, 덕성 12.17% 하락, 삼부토건 3.31% 하락, NE능률 2.83% 하락, 희림 주가 변동 없음", "impact_result": {"label": "SUPPORTED", "score": 0.95, "reasoning": "제공된 출처 1은 윤석열 대통령 탄핵소추안 가결로 인한 노루홀딩스, 덕성, 삼부토건, NE능률, 희림의 주가 변동률을 임팩트 설명과 정확히 일치하게 명시하고 있습니다.", "evidence_spans": ["[Source 1] 노루홀딩스·NE능률 등 윤석열 관련주 희비...탄핵안 가결", "[Source 1] 16일 오전 10시 5분 기준 노루홀딩스는 0.60%(80원) 상승한 1만 3360원에, 덕성은 12.17%(930원) 하락한 6710원에, 삼부토건은 3.31%(33원) 하락한 963원에, NE능률은 2.83%(115원) 하락한 3945원에, 희림은 보합에 거래되고 있다.", "[Source 1] 윤석열 대통령의 두 번째 탄핵소추안이 국회를 통과했다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "제공된 기사는 윤석열 대통령에 대한 탄핵소추안이 국회를 통과했다는 내용을 직접적으로 다루고 있으며, 탄핵안의 가결 과정과 그에 따른 직무 정지, 헌법재판소의 결정 절차 등을 상세히 설명하고 있습니다. 윤석열 대통령과 탄핵 소추 정책 모두 기사의 핵심 주제입니다.", "evidence_spans": ["윤석열 대통령의 두 번째 탄핵소추안이 국회를 통과했다.", "윤 대통령 탄핵안은 지난 14일 국회 본회의에서 재석 의원 300명 가운데 찬성 204표, 반대 85표, 기권 3표, 무표 8표로 가결됐다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 3, "politician": "윤석열", "policy": "우크라이나 재건 테마", "industry_or_sector": "주식 시장", "companies": ["Welbiotech", "삼부토건 (Sambu Construction)"], "impact_description": "우크라이나 재건 테마를 이용한 주가 조작 혐의로 Welbiotech와 삼부토건 조사 받음", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 출처는 웰바이오텍과 삼부토건이 우크라이나 재건 사업 테마를 이용한 주가 조작 사건에 연루되어 있으며, 이와 관련하여 웰바이오텍 본사가 압수수색을 받았다는 내용을 명확히 언급하고 있습니다. 이는 영향 설명과 일치합니다.", "evidence_spans": ["[Source 1] 삼부토건·웰바이오텍 주가조작 사건에서 수백억원대 ‘실수익자’로 의심되는 회사들이 있다.", "[Source 1] 삼부토건·웰바이오텍 주가조작 사건은 2023년 5~7월 이 두 회사가 우크라이나 재건 사업에 참여할 것처럼 꾸며 주가가 크게 오른 일이다.", "[Source 1] 김건희 특검(특별검사 민중기)은 웰바이오텍의 주가 급등으로 부당한 이득이 생긴 것으로 보고 2025년 8월21일 웰바이오텍 본사와 관련사 등을 압수수색했다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "기사는 윤석열 정부 관계자들이 우크라이나 재건 사업 추진에 연루되어 주가 조작의 재료가 되었다고 명시하고 있으며, '우크라이나 테마'로 주가가 급등한 사건과 윤석열 대통령의 폴란드 방문 시 우크라이나 재건 사업 관련 기업 관계자가 동행한 사실을 연결하여 설명하고 있습니다.", "evidence_spans": ["주가조작의 재료가 된 우크라이나 재건 사업 추진에는 윤석열 정부 관계자들이 연루돼 있다.", "웰바이오텍의 전환사채( CB )를 보유하다가 ‘우크라이나 테마’로 주가가 급등할 때 수백억원대 주식 대박을 이룬 이들이 이 사건의 핵심인물로 추정되기 때문이다.", "2023년 7월 윤석열의 폴란드 방문을 계기로 열린 ‘한국-폴란드 비즈니스 포럼’에 엔켐의 고위 관계자가 동행했다.", "삼부토건·웰바이오텍 주가조작 사건은 2023년 5~7월 이 두 회사가 우크라이나 재건 사업에 참여할 것처럼 꾸며 주가가 크게 오른 일이다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}], "gold_eval": {"similarity_score": 0.1, "reasoning": "두 보고서는 '윤석열'의 정치·경제 영향력 분석이라는 동일한 주제와 유사한 JSON 구조를 공유하지만, 다루는 정책, 산업, 기업, 그리고 영향력 분석 방식에서 거의 완전히 다른 내용을 포함하고 있습니다. gold_report는 원전, 국방·기술 육성 등 정책 중심의 경제적 영향을 설명하며 정책과 기업 간의 연관성 및 영향 설명이 구체적입니다. 반면, model_report는 주택 공급, 드론/2차 전지 산업 지원 정책 외에 탄핵 소추, 우크라이나 재건 테마와 같은 정치적 사건 및 시장 테마에 따른 주가 변동을 주로 다루며, 정책과 기업 간의 직접적인 연관성보다는 시장 반응에 초점을 맞추고 있습니다. 따라서 두 보고서의 내용적 유사성은 매우 낮습니다.", "model_unique_points": ["주택 공급 확대 정책으로 인한 건설업(일성건설) 주가 상승.", "드론 및 2차 전지 산업 지원 정책으로 인한 관련 기업(PC Direct, Jungang Advanced Materials) 부각.", "탄핵 소추 및 우크라이나 재건 테마와 같은 정치적 사건 및 시장 테마에 따른 특정 기업(노루홀딩스, 덕성, 삼부토건, NE능률, 희림, Welbiotech) 주가 변동 및 조사."], "gold_unique_points": ["원전 확대 정책을 통한 원전 관련 기업(두산에너빌리티) 수혜 및 신재생에너지(한화솔루션)에 대한 부정적 영향.", "국방비 증액 및 기술 육성 정책을 통한 방위산업 및 첨단기술 기업(한화에어로스페이스) 성장 기여.", "미국·일본 동맹 강화 및 중동 경제협력 확대를 통한 국제적 영향력 도모."]}}} +{"query": "이재명", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "이재명", "policy": "금산분리 (financial-industrial separation) easing", "industry_or_sector": "금융-산업 분리 규제 완화", "companies": ["SK Group"], "impact_description": "금산분리 완화로 대규모 AI 인프라 투자 재원 마련 가능", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 출처는 금산분리 규제 완화가 SK 그룹의 대규모 AI 인프라 투자 재원 마련에 긍정적인 영향을 미칠 것이라는 내용을 명확하게 언급하고 있습니다. DS 투자증권 연구원의 발언을 인용하여 SK 그룹이 금산분리 완화의 최대 수혜주이며, 이를 통해 AI 인프라 투자 재원을 확보할 수 있다고 설명합니다.", "evidence_spans": ["[Source 1] 김수현 DS 투자증권 연구원은 \"최근 논의 중인 금산분리 완화는 반도체 등 미래 인공지능( AI ) 인프라 투자 확대의 대규모 재원을 마련할 수 있는 기반이 될 것\"이라며 “ SK 그룹이 그 중심에서 가장 직접적이며 구조적인 혜택을 받을 전망\"이라고 설명했다.", "[Source 1] SK 주가가 오르고 있다. 금산분리 규제가 완화되면 SK 그룹이 혜택을 받을 것이란 전망이 나오면서다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "기사는 이재명 대통령이 샘 올트먼 OpenAI CEO와의 만남에서 금산분리 규제 완화에 대한 재검토 가능성을 언급한 후 관련 논의가 본격화되었다고 명시하며, 이재명 대통령과 금산분리 완화 정책 사이의 직접적인 연관성을 보여줍니다. 정책의 주요 논의 주체로서 이재명 대통령이 언급되었습니다.", "evidence_spans": ["지난달 이재명 대통령이 샘 올트먼 오픈 AI 최고경영자( CEO )와의 만남에서 “안전장치가 마련된 범위에서 재검토할 수 있다”고 언급한 뒤 관련 논의가 본격화했다.", "금산분리 규제가 완화되면 SK 그룹이 혜택을 받을 것이란 전망이 나오면서다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 1, "politician": "이재명", "policy": "AI and Technology", "industry_or_sector": "반도체 소재", "companies": ["켐트로스 (Chemtros)"], "impact_description": "AI 수요 증가로 HBM 관련 소재 수혜", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 출처는 켐트로스가 AI 시대의 도래와 HBM 반도체 수요 급증으로 인해 수혜를 입는다고 명확히 언급하고 있습니다. 특히 켐트로스가 반도체 공정 핵심 소재를 생산하며 AI 수혜로 매출 성장이 기대된다는 내용이 포함되어 있어, AI 수요 증가로 HBM 관련 소재가 수혜를 입는다는 설명과 일치합니다.", "evidence_spans": ["[Source 1] 독립리서치 스터닝밸류리서치는 1일 켐트로스(220260)에 대해 인공지능(AI) 시대 개화에 따른 고대역폭메모리(HBM) 반도체 수요 급증의 수혜주라고 평가했다.", "[Source 1] AI 시대가 도래하면서 AI 연산에 최적화된 HBM은 초거대 AI 모델의 빠른 데이터 처리와 에너지 효율을 위해 필수적인 핵심 반도체 기술이 됐다", "[Source 1] 이에 따라 반도체 공정에서 웨이퍼에 회로 패턴을 형성하는 소재인 포토레지스트의 공정 핵심 소재를 생산하는 동사의 수혜가 기대된다", "[Source 1] AI 수혜에 따라 내년 매출액은 올해 대비 50.9% 성장한 800억원을 시현할 것"], "error_type": "NONE"}, "attribution_result": {"label": "WEAKLY_RELATED", "score": 0.6, "reasoning": "제공된 기사는 AI 시대의 고대역폭메모리(HBM) 반도체 수요 증가와 관련된 켐트로스의 핵심 소재 생산에 대해 상세히 다루고 있어, \"AI and Technology\" 정책 주제와 매우 밀접하게 관련됩니다. 그러나 기사 내용 중 \"이재명\" 정치인에 대한 언급은 전혀 없습니다.", "evidence_spans": ["인공지능(AI) 시대 개화에 따른 고대역폭메모리(HBM) 반도체 수요 급증의 수혜주라고 평가했다.", "AI 시대가 도래하면서 AI 연산에 최적화된 HBM은 초거대 AI 모델의 빠른 데이터 처리와 에너지 효율을 위해 필수적인 핵심 반도체 기술이 됐다.", "AI & HBM은 AI 혁신의 핵심 인프라로, 앞으로도 AI 데이터센터와 초거대 모델의 성장과 함께 수요가 더욱 확대될 것"], "error_type": "NONE", "politician_mentioned": false, "policy_topic_mentioned": true}}, {"chain_index": 2, "politician": "이재명", "policy": "AI and Technology", "industry_or_sector": "AI 인프라", "companies": ["SK Group"], "impact_description": "글로벌 AI 인프라 협력 가능성", "impact_result": {"label": "PARTIALLY_SUPPORTED", "score": 0.6, "reasoning": "소스에는 이재명 대통령과 손정의 소프트뱅크 회장의 만남에서 AI 인프라 투자 및 한국 기업들의 글로벌 AI 인프라 협력 가능성이 논의되었다는 내용이 포함되어 있습니다. 그러나 'SK Group'이라는 특정 기업이 글로벌 AI 인프라 협력에 참여할 가능성에 대해 명시적으로 언급된 부분은 없습니다. '한국 기업' 전반에 대한 협력 가능성만 언급되어 있습니다.", "evidence_spans": ["[Source 1] 한국 데이터센터 신설 및 한국 기업의 스타게이트 참여 등이 확정될지 주목된다.", "[Source 1] 이 대통령이 글로벌 AI 전환 ‘빅샷’들을 직접 만나 국내 투자를 당부하고 한국 기업들과의 협업을 지원한다는 점에서 의미가 있다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "기사는 이재명 대통령이 손정의 소프트뱅크 회장을 만나 AI 인프라 투자 및 AI 반도체 협력 방안을 논의하고, 국가 AI 정책을 설명하는 내용을 다루고 있어 주어진 정치인과 정책에 매우 밀접하게 관련됩니다.", "evidence_spans": ["이재명 대통령이 5일 용산 대통령실에서 손정의 일본 소프트뱅크그룹 회장(사진)을 만나 인공지능( AI ) 인프라 투자 및 AI 반도체 협력 방안 등에 관해 논의한다.", "이 대통령은 손 회장에게 ‘ AI 3대 강국’을 실현하기 위한 국가 AI 정책을 설명하고, 데이터센터 등 AI 인프라 투자 등에 대한 의견을 전할 계획이다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}], "gold_eval": {"similarity_score": 0.4, "reasoning": "두 보고서는 이재명 대통령의 정치·경제적 영향력을 분석하는 공통된 구조를 가지며, AI 및 기술 관련 정책을 다루는 부분에서 일부 유사점이 있습니다. 그러나 gold_report는 신재생에너지 및 남북 경협 정책과 관련된 다양한 기업들을 상세히 설명하는 반면, model_report는 금산분리 완화 및 AI 인프라 협력 등 다른 정책과 기업들을 중심으로 분석하고 있어 내용상 차이가 큽니다. 특히 gold_report는 정책과 기업 간의 연관성 및 시장 영향에 대한 설명이 더 구체적입니다.", "model_unique_points": ["금산분리 완화 정책이 SK Group에 미치는 영향", "AI 수요 증가에 따른 반도체 소재 기업 켐트로스의 수혜", "글로벌 AI 인프라 협력 가능성 (SK Group, 소프트뱅크)"], "gold_unique_points": ["신재생에너지 확대 정책과 관련된 한화솔루션, 씨에스윈드 등 기업에 대한 영향", "남북 경협 재개 구상과 관련된 좋은사람들, 아난티 등 기업에 대한 영향", "AI 산업 육성 정책과 관련하여 네이버, SK텔레콤 등 국내 AI 선도 기업에 대한 구체적인 영향 설명"]}}} +{"query": "문재인", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "문재인", "policy": "재생에너지 3020 계획", "industry_or_sector": "풍력 에너지", "companies": ["유니슨", "두산중공업"], "impact_description": "재생에너지 3020 계획에 따라 풍력 에너지 확장(6GW → 22GW) 및 유니슨의 저풍속 터빈(U113) 시장 점유율 확대", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 소스 2는 문재인 정부의 재생에너지 확대 정책에 따라 풍력 에너지 시장이 기존 6GW에서 추가 16GW를 포함하여 총 22GW로 확장될 것이라는 내용을 명확히 언급하고 있습니다. 또한, 유니슨이 저풍속 육상 터빈 U113을 통해 시장 독점을 저지하고 한전 발전 자회사들이 유니슨의 풍력 터빈을 선호할 것이라는 내용도 포함되어 있어 유니슨의 시장 점유율 확대가 예상됨을 뒷받침합니다. 소스 1은 관련 내용이 없습니다.", "evidence_spans": ["[Source 2] 문재인 정부의 에너지 정책의 핵심은 친환경에너지 확대\"라면서 \"원전과 석탄발전을 축소하는 대신 풍력, 태양광 등 재생에너지의 전력생산에서 차지하는 비중을 2030년까지 20%로 확대할 예정\"이라고 말했다.", "[Source 2] 이를 위해 기존의 허가된 6GW의 육상 풍력 건설 계획 이외에 추가로 16GW의 풍력단지를 조성할 예정이라고 설명했다. 지난해 말 기준 국내 풍력 누적설치량은 약 1GW이므로 문재인 정부의 정책이 예정대로 실시되면 현재 대비 최대 약 22배까지 풍력시장이 확대된다는 얘기다.", "[Source 2] 특히 유니슨은 발전 효율이 높은 저풍속 육상 터빈인 U113 을 무기로 외국 풍력터빈업체 들의 시장독식을 저지하고 있다. 향후에도 공기업인 한전의 발전 자회사들은 유니슨의 풍력터빈을 선호할 것이라는 판단이다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "Source 2는 문재인 정부의 재생에너지 확대 정책(재생에너지 3020 계획)을 직접적으로 언급하며, 2030년까지 재생에너지 비중을 20%로 확대할 계획과 풍력 산업의 수혜 기업(유니슨, 두산중공업)을 구체적으로 다루고 있습니다. Source 1은 문재인 정부를 언급하지만 노동 개혁에 관한 내용입니다. 종합적으로 볼 때, 문재인 정부와 재생에너지 3020 계획 간의 연관성이 매우 높습니다.", "evidence_spans": ["유진투자증권은 16일 유니슨에 대해 문재인 정부 재생에너지 확대정책의 핵심 수혜주가 될 것이라며 투자의견은 '매수', 목표주가는 3200원을 신규 제시했다.", "문재인 정부의 에너지 정책의 핵심은 친환경에너지 확대\"라면서 \"원전과 석탄발전을 축소하는 대신 풍력, 태양광 등 재생에너지의 전력생산에서 차지하는 비중을 2030년까지 20%로 확대할 예정\"이라고 말했다.", "국내에 풍력 터빈업체들은 두산중공업과 유니슨을 제외하고는 사업을 적극적으로 영위하는 업체는 없는 것으로 판단된다"], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 1, "politician": "문재인", "policy": "전라남도 해상 풍력 프로젝트", "industry_or_sector": "해상 풍력", "companies": ["KEPCO (Korea Electric Power Corporation)"], "impact_description": "전라남도 해상 풍력 프로젝트(8.2GW) 지원을 위한 KEPCO와의 파트너십", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "소스에 따르면 전라남도 신안 앞바다에 8.2GW 규모의 해상풍력발전단지 조성 계획이 있으며, 이 단지 조성을 위해 신안군, 한국전력(KEPCO), 전남개발공사 등이 협약을 체결했다고 명시되어 있습니다. 또한 한국전력이 참여하는 특수목적법인이 3GW 규모의 공동접속설비를 구축하고 1.5GW 사업을 직접 추진한다는 내용도 포함되어 있어, KEPCO의 8.2GW 전라남도 해상풍력 프로젝트 지원을 위한 파트너십이 명확하게 확인됩니다.", "evidence_spans": ["김 지사는 당시로서는 과감하게도 8.2GW(기가와트) 규모의 해상풍력발전단지를 신안 앞바다에 조성하겠다는 의지를 천명한다.", "곧바로 신안군, 한국전력, 전남개발공사 등과 단지 조성을 위한 협약을 체결한다.", "전남도 관계자는 이 협약이 중요했던 이유로 한전이 참여하는 특수목적법인(SPC)이 3GW 규모 공동접속설비를 구축해 1.5GW는 직접 사업을 추진(사업비 11조원)하고 나머지는 추후 컨소시엄 구성 등을 통해 민간 발전사가 추진하도록 했다는 것을 꼽았다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "기사는 전라남도 해상 풍력 프로젝트에 대해 상세히 다루고 있으며, 당시 문재인 대통령이 직접 신안 임자대교를 찾아 해당 프로젝트에 힘을 실어주었다고 명확하게 언급하고 있습니다. 문재인 대통령의 정부 임기 말에도 김영록 지사의 프로젝트 추진 노력이 이어졌다는 내용도 포함되어 있어, 정치인과 정책 모두 의미 있게 언급되고 직접적으로 관련되어 있습니다.", "evidence_spans": ["2021년 2월, 당시 문재인 대통령이 직접 신안 임자대교를 찾아 ‘지역균형 뉴딜투어 1호 행사’에 참석하는 등 전남의 세계 최대 규모 해상풍력발전단지 조성에 힘을 실어줬다.", "문재인 정부 임기 말에 이르자 김 지사의 발걸음도 바빠진다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 2, "politician": "문재인", "policy": "$450B 반도체 계획", "industry_or_sector": "반도체", "companies": ["Samsung Electronics", "SK Hynix"], "impact_description": "4500억 달러 반도체 계획 및 HBM4 개발을 통한 AI 인프라 수요 증가", "impact_result": {"label": "PARTIALLY_SUPPORTED", "score": 0.7, "reasoning": "제시된 소스들은 4500억 달러 규모의 반도체 계획과 HBM4 개발, 그리고 AI 인프라 수요 증가에 대한 정보를 각각 제공합니다. 특히 Source 3은 HBM4 개발과 삼성전자 및 SK하이닉스의 AI 인프라 부품 공급을 통한 AI 인프라 수요 증가를 명확히 연결합니다. Source 1은 4500억 달러 반도체 계획의 존재를 확인합니다. 그러나 4500억 달러 반도체 계획이 AI 인프라 수요 증가에 직접적으로 기여한다는 명시적인 연결고리는 소스에서 찾기 어렵습니다. 따라서 설명의 일부는 강력하게 지지되지만, 전체적인 인과 관계는 부분적으로만 지지됩니다.", "evidence_spans": ["[Source 1] South Korean President Moon Jae In’s administration on May 13 revealed a $450 billion plan to boost semiconductor research and manufacturing over the next 10 years", "[Source 3] 삼성전자 주가 추가 상승 여력, D램 수요 폭발적..재고 2조 가까이 줄고, HBM4 퀄테스트도 조만간", "[Source 3] SK 하이닉스, HBM4 부문에선 삼성과 기술격차", "[Source 3] 결국은 삼성이나 하이닉스가 하는 것들은 AI 데이터 서비스라기보다는 데이터센터에 들어가는 부품들이기 때문에, 흔히 말하는 AI 인프라에 관한 이야기고, AI 인프라는 AI 발전 속도와 상관없이 꽤나 왜냐하면 국가도 필요하고 학교도 필요하고 다 필요한 거기 때문에 기업뿐만 아니라 수요가 굉장히 수요층이 굉장히 넓기 때문에 이런 것들이 필요성이 굉장히 높다.", "[Source 3] 메모리 반도체 수요 같은 것들도 계속 늘고 있어 가지고, 계속 공장을 짓고 공급을 하려고 한다고 보시면 될 것 같습니다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "소스 1은 문재인 정부가 4,500억 달러 규모의 반도체 산업 육성 계획을 발표했다고 명시하고 있으며, 소스 2는 문재인 대통령이 2030년까지 한국을 비메모리 반도체 강국으로 만들겠다는 정부 계획을 발표했다고 언급하여, 정치인과 정책이 직접적으로 관련되어 있음을 보여줍니다.", "evidence_spans": ["South Korean President Moon Jae In’s administration on May 13 revealed a $450 billion plan to boost semiconductor research and manufacturing over the next 10 years", "President Moon Jae-in announced that the government will invest one trillion won ($855.5 million) and introduce semiconductor-focused education programs, among other support measures, in an effort to help the country become a global leader in the non-memory semiconductor industry by 2030."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 3, "politician": "문재인", "policy": "ARM 학교 이니셔티브", "industry_or_sector": "시스템 반도체", "companies": ["Samsung Electronics", "SK Hynix"], "impact_description": "ARM 학교 이니셔티브를 통한 시스템 반도체 및 팹리스 분야 인재 양성", "impact_result": {"label": "PARTIALLY_SUPPORTED", "score": 0.7, "reasoning": "제공된 출처는 ARM 스쿨 설립을 통해 시스템 반도체 및 팹리스 분야에서 약 1400명의 반도체 설계 전문 인재를 양성할 계획임을 명확히 언급하며, 이는 국내 시스템 반도체 경쟁력 강화에 기여할 것이라고 설명합니다. 하지만 삼성전자, SK 하이닉스 등 특정 기업이 이 이니셔티브와 직접적으로 연관되어 있다는 내용은 포함되어 있지 않습니다.", "evidence_spans": ["[Source 1] 세계 최대 칩리스 기업 ARM 과 약 1400명의 반도체 설계 전문인재를 양성하는 'ARM 스쿨(가칭)' 설립을 본격 논의했다고 밝혔다.", "[Source 1] ARM 스쿨은 ARM 이 가진 설계( IP ) 전문성을 기반으로 한 반도체 특화 교육기관으로 약 1400명 규모의 최고급 설계 인력을 양성하게 된다", "[Source 1] 국내 시스템반도체·펩니스 분야의 취약점을 보완할 결정적 계기가 될 것", "[Source 1] ARM 스쿨이 구축되면 국내 시스템반도체 경쟁력이 대폭 강화될 것"], "error_type": "NONE"}, "attribution_result": {"label": "WEAKLY_RELATED", "score": 0.6, "reasoning": "기사는 \"ARM 스쿨\" 설립을 통한 반도체 설계 인재 양성 정책을 상세히 다루고 있습니다. 문재인 대통령은 손정의 회장이 과거 문재인 정부에 AI 관련 조언을 했다는 맥락에서 간접적으로 언급될 뿐, 현재의 \"ARM 학교 이니셔티브\"와 직접적인 관련성은 약합니다.", "evidence_spans": ["이재명 대통령이 5일 일본 소프트뱅크 손정의 회장과의 접견을 통해 세계 최대 칩리스 기업 ARM 과 약 1400명의 반도체 설계 전문인재를 양성하는 'ARM 스쿨(가칭)' 설립을 본격 논의했다고 밝혔다.", "손 회장은 과거 김대중 정부에 '브로드밴드', 문재인 정부에 ' AI '를 조언했던 사례를 언급하며"], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}], "gold_eval": {"similarity_score": 0.4, "reasoning": "두 보고서는 문재인 전 대통령의 2017년부터 2022년까지의 정책이 산업과 기업에 미친 영향을 분석하는 유사한 구조를 가지고 있습니다. 질문 \"문재인\"에 대한 답변으로서, 두 보고서 모두 문재인 전 대통령의 정책과 그 영향력을 다루고 있어 적합합니다. 골드 리포트는 탈원전/재생에너지, 4대강 복원, 남북 경협, 수소경제 등 다양한 정책을 다루며 각 정책이 기업 실적 및 주가에 미친 영향을 상세히 설명하여 정책과 산업/기업 간의 연관성 및 경제적 파급 효과 설명이 깊이 있습니다. 반면 모델 리포트는 재생에너지(특히 풍력)와 반도체 산업에 집중하며, 정책과 기업 간의 연결은 명확하나 영향 설명의 깊이는 골드 리포트보다 간결합니다. 다루는 주요 정책과 그로 인해 영향을 받은 산업 및 기업의 구체적인 내용에서 큰 차이를 보입니다.", "model_unique_points": ["재생에너지 3020 계획 및 전라남도 해상 풍력 프로젝트가 풍력 에너지 산업(유니슨, 두산중공업, KEPCO)에 미친 영향.", "4500억 달러 반도체 계획 및 ARM 학교 이니셔티브가 반도체 산업(삼성전자, SK 하이닉스)에 미친 영향."], "gold_unique_points": ["4대강 복원 정책이 환경/건설 산업(자연과환경, 이화공영)에 미친 영향.", "남북 경협 및 개성공단 정책이 남북경협/제조 산업(신원, 좋은사람들)에 미친 영향.", "수소경제 및 혁신산업 육성 정책이 미래차/배터리 산업(현대모비스, LG화학)에 미친 영향.", "탈원전 및 재생에너지 정책이 태양광 산업(한화솔루션, OCI)에 미친 영향과 그 상세한 경제적 파급 효과."]}}} +{"query": "박근혜", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "박근혜", "policy": "창조경제 정책", "industry_or_sector": "기술 스타트업 및 IT 산업", "companies": ["Samsung", "Naver"], "impact_description": "창조경제 정책은 기술 스타트업과 재벌 기업에 보조금을 지원하는 방식으로 영향을 미쳤으며, 국가 지원 기금을 통해 자금이 조달되었습니다. 삼성 및 네이버와의 연관성이 확인되었습니다.", "impact_result": {"label": "NOT_ENOUGH_INFO", "score": 0.0, "reasoning": "No usable evidence sources were available for this influence chain.", "evidence_spans": [], "error_type": "TOO_SHORT"}, "attribution_result": {"label": "NOT_ENOUGH_INFO", "score": 0.0, "reasoning": "No usable evidence sources were available for this influence chain.", "evidence_spans": [], "error_type": "TOO_SHORT", "politician_mentioned": false, "policy_topic_mentioned": false}}, {"chain_index": 1, "politician": "박근혜", "policy": "기업 규제 완화 정책", "industry_or_sector": "전자 및 자동차 산업", "companies": ["Samsung", "Hyundai"], "impact_description": "삼성의 2015년 합병 승인과 현대자동차의 중동 계약은 정책 변화와 동시에 발생했으며, 기부 기록과 유출된 메모를 통해 상호 이익 관계가 시사됩니다.", "impact_result": {"label": "NOT_ENOUGH_INFO", "score": 0.0, "reasoning": "No usable evidence sources were available for this influence chain.", "evidence_spans": [], "error_type": "TOO_SHORT"}, "attribution_result": {"label": "NOT_ENOUGH_INFO", "score": 0.0, "reasoning": "No usable evidence sources were available for this influence chain.", "evidence_spans": [], "error_type": "TOO_SHORT", "politician_mentioned": false, "policy_topic_mentioned": false}}, {"chain_index": 2, "politician": "박근혜", "policy": "정치 후원 네트워크 정책", "industry_or_sector": "정치 후원 및 스포츠 산업", "companies": ["Mir 재단", "K-Sports 재단"], "impact_description": "미르 재단과 K-스포츠 재단은 박근혜 정부의 정치적 후원자 네트워크에서 중심적인 역할을 했습니다. 사당 및 관료들이 정책-산업 연계를 촉진한 것으로 나타났습니다.", "impact_result": {"label": "NOT_ENOUGH_INFO", "score": 0.0, "reasoning": "No usable evidence sources were available for this influence chain.", "evidence_spans": [], "error_type": "TOO_SHORT"}, "attribution_result": {"label": "NOT_ENOUGH_INFO", "score": 0.0, "reasoning": "No usable evidence sources were available for this influence chain.", "evidence_spans": [], "error_type": "TOO_SHORT", "politician_mentioned": false, "policy_topic_mentioned": false}}], "gold_eval": {"similarity_score": 0.55, "reasoning": "두 보고서는 박근혜 전 대통령의 2013-2017년 재임 기간 동안의 영향력을 다루며 '창조경제' 정책을 공통적으로 언급합니다. Gold report는 '문화융성 정책', '중동 순방 경제외교', '부동산 규제 완화' 등 구체적인 경제 정책과 그에 따른 산업 및 기업의 영향을 상세한 설명과 증거를 통해 제시합니다. 반면 Model report는 '정치 후원 네트워크' 정책을 통해 미르 재단, K-스포츠 재단과의 연결성을 제시하며, 삼성, 네이버, 현대 등 대기업과의 연관성을 언급합니다. Gold report는 정책과 산업/기업 간의 연결성 및 경제적 파급 효과를 구체적으로 다루어 질문에 더 적합하며, Model report는 '정치 후원 네트워크'라는 독특한 관점을 제시하지만 다른 정책 설명이 다소 추상적이고 증거가 부족합니다.", "model_unique_points": ["미르 재단, K-스포츠 재단을 중심으로 한 '정치 후원 네트워크' 정책과 그 영향력.", "삼성, 네이버, 현대 등 대기업과의 연결성을 직접적으로 언급.", "기업 규제 완화 정책과 삼성의 합병 승인, 현대자동차의 중동 계약 간의 연관성 제시."], "gold_unique_points": ["문화융성 정책을 통한 문화콘텐츠/미디어 산업(CJ E&M, 팬엔터테인먼트)의 성장 및 해외 진출 지원.", "중동 순방 경제외교를 통한 건설/인프라 산업(현대건설, 대우건설)의 해외 수주 지원.", "부동산 규제 완화 정책을 통한 건설/부동산 산업(현대산업개발, 호반건설)의 활성화.", "각 정책별 구체적인 기업명과 시장 영향에 대한 상세한 설명 및 증거 제시."]}}} +{"query": "이명박", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "Lee Myung-bak", "policy": "4 Rivers Project", "industry_or_sector": "건설업", "companies": ["삼환기업"], "impact_description": "4대강 프로젝트의 실질적인 수혜주로 지목되었으며, 토목 건설 분야에서 직접적인 혜택을 받은 것으로 확인됨", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "소스 1은 삼환기업이 4대강 정비사업의 실질적인 수혜주로 부각되었으며, 토목사업을 통해 기업 역량을 발휘할 좋은 기회가 될 것이라고 명시하고 있습니다. 이는 삼환기업이 4대강 프로젝트를 통해 토목 건설 분야에서 직접적인 혜택을 받았다는 설명과 일치합니다. 소스 2는 4대강 사업에 대한 비판적인 시각을 다루지만, 삼환기업의 수혜 여부에 대해서는 언급하지 않아 모순되지 않습니다.", "evidence_spans": ["[Source 1] 국내 대표적 토목건설사인 삼환기업이 정부에서 추진하는 '4대강 유역 정비사업 및 SOC투자'와 관련, 실질적인 수혜주로 부각되면서 시장으로부터 관심을 끌고 있다.", "[Source 1] 4대강 정비사업과 같은 토목사업이야말로 삼환의 기업역량을 발휘한 아주 좋은 기회가 될 것", "[Source 1] 삼환기업은 토목비중이 43%를 차지하고 있어 도로, 철도, 하천 정비 등의 사업을 추진하겠다는 정부의 정책에 따른 수혜가 예상된다"], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "두 소스 모두 이명박 전 대통령의 핵심 정책인 4대강 사업에 대해 직접적으로 다루고 있습니다. 소스 2에서는 이명박 정부의 4대강 사업을 명시적으로 언급하며 정책과 정치인을 명확히 연결하고 있습니다. 소스 1은 2008년 기사로, 당시 정부가 추진하던 4대강 사업의 수혜 기업을 다루고 있어 정책과의 관련성이 높습니다.", "evidence_spans": ["이명박정부의 4대강 사업처럼 토건주의자 배만 불리는 댐 아니냐", "국내 대표적 토목건설사인 삼환기업이 정부에서 추진하는 '4대강 유역 정비사업 및 SOC투자'와 관련, 실질적인 수혜주로 부각되면서 시장으로부터 관심을 끌고 있다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 1, "politician": "Lee Myung-bak", "policy": "Green Growth Strategy", "industry_or_sector": "재생에너지", "companies": [], "impact_description": "재생에너지 분야(태양광, 풍력) 수출 산업 육성을 위한 40조 원 투자 계획 발표. KEPCO, LSIS, Samsung SDI 등이 스마트그리드 및 재생에너지 분야에서 언급되었으나, 정책 혜택과의 직접적 연관성은 확인되지 않음", "impact_result": {"label": "PARTIALLY_SUPPORTED", "score": 0.6, "reasoning": "제시된 영향 설명 중 재생에너지(태양광, 풍력) 수출 산업 육성을 위한 40조 원 투자 계획 발표 부분은 출처에서 명확하게 확인됩니다. 그러나 KEPCO, LSIS, Samsung SDI와 같은 특정 기업들이 스마트그리드 및 재생에너지 분야에서 언급되었다는 내용은 출처에서 찾을 수 없습니다. 따라서 정책 혜택과의 직접적인 연관성이 확인되지 않았다는 부분은 해당 기업들이 언급되지 않았으므로 간접적으로는 일치하지만, 기업 언급 자체가 사실이 아니므로 부분적으로만 지지됩니다.", "evidence_spans": ["[Source 1] South Korea plans to invest 40 trillion won to develop renewable energy", "[Source 1] transform solar and wind energy into industries comparable to semiconductors and shipbuilding", "[Source 1] the government and private sector will jointly invest 7 trillion won and 33 trillion won over the next five years to develop renewable energy as a major export industry."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "제공된 자료는 이명박 대통령이 주재한 녹색성장위원회 회의에서 신재생에너지 산업 발전 전략 보고서가 발표되었음을 명시하고 있습니다. 또한 이명박 대통령이 녹색 성장의 리더십을 언급하며 정책 추진을 독려하는 내용이 포함되어 있어, 이명박 대통령과 녹색 성장 전략이 매우 직접적으로 관련되어 있음을 보여줍니다.", "evidence_spans": ["South Korean government unveiled its \"New Energy and Renewable Energy Industry Development Strategy Report\" during the 9th Green Growth Committee meeting chaired by President Lee Myung-bak.", "President Lee Myung-bak acknowledged that while South Korea is recognized as a leader in green growth, it still lags behind developed countries in technology and everyday applications."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}], "gold_eval": {"similarity_score": 0.45, "reasoning": "두 보고서는 이명박 전 대통령의 2008-2013년 재임 기간 동안의 정책 영향력을 다루며 4대강 사업을 공통적으로 언급합니다. 하지만 4대강 사업의 주요 수혜 기업이 다르게 제시되었고, gold_report는 원전 수출 외교 및 법인세 인하 정책을 통한 대기업 영향과 부의 양극화 논란을 상세히 다룬 반면, model_report는 녹색성장 정책과 재생에너지 산업의 연관성을 제시했습니다. 전반적인 정책 범위와 기업 영향 분석의 깊이에서 차이가 있습니다.", "model_unique_points": ["이명박 대통령의 녹색성장 정책이 재생에너지 산업에 미친 영향", "4대강 프로젝트의 주요 수혜 기업으로 삼환기업을 명시", "녹색성장 정책과 관련하여 특정 기업과의 직접적인 연관성이 명확히 입증되지 않았음을 언급"], "gold_unique_points": ["이명박 전 대통령의 원전 수출 외교를 통한 한국전력, 현대건설 등 에너지/원자력 산업 영향", "법인세 인하 등 친기업 정책으로 삼성전자, 현대자동차 등 대기업의 투자 및 배당 확대, 부의 양극화 논란 언급", "4대강 사업의 주요 수혜 기업으로 삼성물산과 현대건설을 구체적으로 명시"]}}} +{"query": "홍준표", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "홍준표", "policy": "AI 투자 계획", "industry_or_sector": "AI/양자 기술", "companies": [], "impact_description": "홍준표 의원의 AI 투자 계획은 국내 기술 기업에 잠재적 혜택을 줄 수 있으나, 특정 기업과의 직접적 연결은 확인되지 않음", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "홍준표 의원이 AI 및 양자 기술 분야에 5년간 50조 원을 투자하겠다고 공약한 내용이 출처에 명확히 언급되어 있습니다. 이는 국내 기술 기업에 잠재적인 혜택을 줄 수 있음을 시사하지만, 특정 기업과의 직접적인 연결은 출처에서 확인되지 않습니다. 따라서 영향 설명의 모든 부분이 출처에 의해 뒷받침됩니다.", "evidence_spans": ["\"인공지능(AI)·양자·상온상압 초전도체 등 글로벌 선도 연구개발(R&D) 분야에 향후 5년간 최소 50조원을 투자하겠다\"", "\"초격차 기술 주도 성장\""], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "기사는 홍준표 후보가 5년간 50조 원을 AI 등 첨단 기술 분야에 투자하겠다는 공약을 발표했다고 명확히 언급하고 있습니다.", "evidence_spans": ["홍준표, 5년간 50조 AI 투자·100만 주택 공급 공약", "Hong Joon-pyo... \"I will invest at least 50 trillion won in global leading research and development fields such as artificial intelligence (AI)... over the next five years.\""], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 1, "politician": "홍준표", "policy": "주택 정책", "industry_or_sector": "건설/부동산", "companies": [], "impact_description": "규제 완화를 통한 주택 공급 확대 정책은 건설 및 부동산 개발업체에 영향을 미칠 수 있으나, 특정 기업과의 직접적 연결은 확인되지 않음", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 출처는 홍준표 후보가 향후 5년간 100만호 주택 공급을 위해 재개발·재건축 규제 완화(재개발 초과이익환수제 폐지 등)를 추진할 것이라고 명시하고 있습니다. 이는 규제 완화를 통한 주택 공급 확대 정책에 해당하며, 건설 및 부동산 개발업체에 영향을 미칠 수 있다는 설명과 일치합니다. 또한, 특정 기업과의 직접적인 연결은 출처에서 확인되지 않아 영향 설명의 후반부 내용도 지지합니다.", "evidence_spans": ["[Source 1] Hong stated that he would supply 1 million dwellings over the next five years by redeveloping and reconstructing aging urban housing and significantly easing housing-related regulations, such as abolishing the 'excess profit recovery system for redevelopment.'", "[Source 1] 홍준표는 노후 도심 주택 재개발·재건축을 통해 향후 5년간 100만호의 주택을 공급하고, 재개발 초과이익환수제 폐지 등 주택 관련 규제를 대폭 완화하겠다고 밝혔다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "제공된 기사는 홍준표 후보가 5년간 100만 호 주택 공급을 공약하며 재개발·재건축 규제 완화, 싱가포르 주택 공급 모델 도입, 반값 아파트 공급 확대 등 구체적인 주택 정책 방안을 제시하고 있음을 명확히 다루고 있습니다. 따라서 정치인과 정책 모두 핵심적으로 언급되며 강하게 연관됩니다.", "evidence_spans": ["홍준표, 5년간 50조 AI 투자·100만 주택 공급 공약", "홍준표는 노후 도심 주택 재개발·재건축을 통해 향후 5년간 100만 호를 공급하고, 재개발 초과이익환수제 폐지 등 주택 관련 규제를 대폭 완화하겠다고 밝혔다.", "싱가포르 주택 공급 모델을 적극 도입해 청년·신혼부부 대상 반값 아파트 공급을 확대할 계획도 언급했다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 2, "politician": "홍준표", "policy": "탈원전 정책 폐기", "industry_or_sector": "에너지", "companies": [], "impact_description": "탈원전 정책 폐기 주장은 에너지 기업에 잠재적 영향을 미칠 수 있으나, 서전기전과의 직접적 연결은 2021년 기사에서 확인되지 않음", "impact_result": {"label": "CONTRADICTED", "score": 0.2, "reasoning": "영향 설명은 2021년 기사에서 서전기전과 탈원전 정책 폐기 주장의 직접적인 연결이 확인되지 않았다고 명시하고 있습니다. 그러나 제공된 2021년 기사(출처 1)는 서전기전이 '탈원전 정책 폐기 관련주'로 묶여 주가가 급등했다고 명확히 언급하며, 이는 직접적인 연결이 확인되지 않았다는 설명과 모순됩니다.", "evidence_spans": ["[Source 1] 서전기전, 홍준표 '탈원전 정책 폐기' 수혜주?…시간외 주가 급등", "[Source 1] 탈원전 정책 폐기 관련주로 묶인 서전기전이 강세를 보인 것으로 풀이된다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "기사는 홍준표 의원이 현 정권의 탈원전 정책을 폐기해야 한다고 주장하며, 이로 인해 관련주인 서전기전의 주가가 급등했다는 내용을 다루고 있습니다. 홍준표 의원과 그의 탈원전 정책 폐기 주장이 직접적으로 연결되어 있습니다.", "evidence_spans": ["홍준표 '탈원전 정책 폐기' 수혜주?", "홍 의원이 현 정권이 만든 공수처, 탈원전 등 적폐를 청산해야 한다는 주장을 이어가면서 탈원전 정책 폐기 관련주로 묶인 서전기전이 강세를 보인 것으로 풀이된다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}], "gold_eval": {"similarity_score": 0.1, "reasoning": "두 보고서는 홍준표라는 인물에 대한 영향력을 분석하지만, 다루는 정책의 범위, 영향력의 구체성, 그리고 언급되는 산업 및 기업에서 큰 차이를 보인다. Gold 보고서는 홍준표 대구시장의 지역 개발 정책과 이에 따른 특정 기업들의 수혜를 구체적으로 제시하는 반면, Model 보고서는 홍준표 의원의 광범위한 국가 정책 제안과 특정 기업과의 직접적인 연관성은 확인되지 않는다고 명시한다.", "model_unique_points": ["홍준표 의원의 AI 투자 계획, 주택 정책, 탈원전 정책 폐기 등 국가 단위의 광범위한 정책 제안.", "특정 기업과의 직접적인 정책-기업 연결고리가 확인되지 않음을 명시하며, AI/양자 기술, 건설/부동산, 에너지 등 다양한 산업 분야에 대한 간접적인 영향 가능성만 언급."], "gold_unique_points": ["홍준표 대구시장의 대구경북 통합신공항 건설 추진 정책과 이에 따른 대우건설, 서한 등 지역 건설사의 구체적인 수혜.", "대구 산업단지 규제 완화 및 기업 유치 정책과 삼성메디슨, 홈센타홀딩스 등 지역 산업 및 제조업 분야 기업들의 성장 동력 확보."]}}} +{"query": "안철수", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "Ahn Cheol-soo", "policy": "Government support for AI infrastructure, talent development, and SME competitiveness", "industry_or_sector": "AI semiconductor, AI education, AI collaboration platforms", "companies": ["Rebellions", "42Maru", "VAIV Company"], "impact_description": "Ahn Cheol-soo chaired the People Power Party’s Special Committee on Advancing Korea into a Top Three AI Power, emphasizing government support for AI infrastructure, talent development, and SME competitiveness. The companies Rebellion (AI semiconductor startup), 42Maru (AI education), and VAIV Company (AI collaboration platforms) were linked to this policy through committee meetings and presentations.", "impact_result": {"label": "SUPPORTED", "score": 0.95, "reasoning": "제공된 출처는 안철수 의원이 국민의힘 인공지능(AI) 국가전략 특별위원회 위원장을 맡았으며, 위원회가 AI 인프라, 인재 양성, 중소기업 경쟁력 강화를 위한 정부 지원을 강조했음을 명확히 보여줍니다. 또한, 리벨리온, 42마루, 바이브컴퍼니가 이 위원회 회의에 참석하여 관련 발표를 진행했음이 구체적으로 언급되어 있습니다.", "evidence_spans": ["[Source 1] 안철수 국민의힘 인공지능(AI) 국가전략 특별위원회 위원장이 11일 경기 성남시 리벨리온 본사에서 열린 ‘AI 선도기업과 함께 미래를 열다’ 현장 간담회에서 참석자들과 기념촬영을 하고 있다.", "[Source 1] 안철수 의원은 AI 산업의 핵심 경쟁력은 인프라와 인재에 달려 있으며, 이를 강화하기 위한 정부의 전략적 지원이 시급하다고 밝혔다.", "[Source 1] 이날 간담회에는 안철수 의원을 비롯해 국민의힘 고동진, 김은혜, 김승수 의원 등이 참석했다. 정부 측에서는 송상훈 과학기술정보통신부 정보통신정책관, 장두원 정보통신방송기술정책과장이 자리했다. 리벨리온, 42마루, 바이브컴퍼니 등 국내 주요 AI 스타트업 및 연구기관 관계자들도 참여했다.", "[Source 1] 김동환 42마루 대표는 ‘AI 전문가(AX) 등 다양한 AI 인재 양성 및 유치 정책’을 주제로 발표하며 국내 AI 인재 유출 문제에 대한 우려를 표하고 AI 인력 양성 강화를 위한 선제적 정책 지원을 촉구했다.", "[Source 1] 이민혜 바이브컴퍼니 AI 총괄은 작지만 강한 AI 기업들이 대기업과 협력하고 AI 혁신을 이끌 인재를 육성할 수 있는 생태계를 구축하는 정책 개선의 필요성을 강조했다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "제공된 기사는 안철수 의원이 국민의힘 인공지능(AI) 국가전략 특별위원회 위원장으로서 AI 인프라, 인재 양성 및 중소기업 경쟁력 강화를 위한 정부의 전략적 지원을 강조하는 내용을 담고 있습니다. 기사 전체가 주어진 정책과 안철수 의원의 관련 활동을 직접적으로 다루고 있어 매우 높은 연관성을 보입니다.", "evidence_spans": ["안철수 국민의힘 인공지능(AI) 국가전략 특별위원회 위원장은 AI 산업의 핵심 경쟁력은 인프라와 인재에 달려있으며, 이 분야 강화를 위한 정부의 전략적 지원이 시급하다고 밝혔다.", "안 위원장은 AI 인프라와 인재에 대한 정부의 전략적 지원 필요성을 강조했다.", "중소기업이 기술을 통해 대기업과 경쟁할 수 있도록 산업 구조를 개혁해야 한다.", "AI 인재 양성 및 유치 정책", "작지만 강한 AI 기업들이 대기업과 협력하고 AI 혁신을 이끌 인재를 육성하는 생태계 구축 정책 개선"], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 1, "politician": "Ahn Cheol-soo", "policy": "Tax deduction bill for SMEs adopting retirement pension systems", "industry_or_sector": "SMEs (General)", "companies": [], "impact_description": "Ahn Cheol-soo proposed a tax deduction bill (20% of pension contributions) to incentivize SMEs to adopt retirement pension systems. No specific companies were named in this policy.", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 출처는 안철수 의원이 중소기업의 퇴직연금 도입을 장려하기 위해 퇴직연금 부담금의 20%를 세액 공제하는 법안을 발의했다는 내용을 명확하게 뒷받침합니다. 또한, 특정 기업이 명시되지 않고 중소기업 전반에 대한 정책임을 확인할 수 있습니다.", "evidence_spans": ["[Source 1] 국민의힘 안철수 의원(외교통일위원회·사진)이 중소기업의 퇴직연금 도입을 촉진하기 위해 ‘조세특례제한법 일부개정법률안’을 대표 발의했다고 지난 2일 밝혔다.", "[Source 1] 이번 개정안은 중소기업이 퇴직연금을 운영할 경우 해당 부담금의 20%를 소득세 또는 법인세에서 공제하도록 규정했다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "안철수 의원이 중소기업의 퇴직연금 도입을 촉진하기 위한 조세특례제한법 개정안을 대표 발의했으며, 이 개정안은 중소기업이 퇴직연금을 운영할 경우 부담금의 20%를 세액 공제하는 내용을 담고 있어 주어진 정치인과 정책에 매우 직접적으로 관련됩니다.", "evidence_spans": ["국민의힘 안철수 의원(외교통일위원회·사진)이 중소기업의 퇴직연금 도입을 촉진하기 위해 ‘조세특례제한법 일부개정법률안’을 대표 발의했다고 지난 2일 밝혔다.", "이번 개정안은 중소기업이 퇴직연금을 운영할 경우 해당 부담금의 20%를 소득세 또는 법인세에서 공제하도록 규정했다.", "안철수 의원은 “퇴직연금은 근로자의 노후소득을 보장하는 핵심 사회안전망인 만큼, 이번 개정안이 중소기업의 제도 도입을 확대하는 전환점이 되길 기대한다”고 말했다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}], "gold_eval": {"similarity_score": 0.3, "reasoning": "두 보고서는 안철수 의원의 정치·경제적 영향력을 분석하는 구조는 유사하나, 다루는 핵심 정책, 관련 산업 및 기업이 상이합니다. Gold Report는 ICT 산업 육성, 코로나19 백신 개발 지원, 정치 테마주 변동성에 초점을 맞춘 반면, Model Report는 AI 산업 육성 및 중소기업 퇴직연금 정책에 중점을 두었습니다. 내용상 직접적인 중복은 거의 없습니다.", "model_unique_points": ["AI 인프라, 인재 개발, 중소기업 경쟁력 강화를 위한 정책과 Rebellion, 42Maru, VAIV Company 등 AI 관련 기업과의 연관성", "중소기업 퇴직연금 도입 촉진을 위한 법안 발의"], "gold_unique_points": ["ICT 산업 및 스타트업 육성 정책과 안랩, 카카오벤처스 등 관련 기업에 미친 긍정적 영향", "코로나19 백신 개발 지원 정책을 통한 SK바이오사이언스 등 제약/백신 산업에 대한 기여", "정치적 입지 변화에 따른 안랩 주가의 급등락 등 정치 테마주로서의 영향력"]}}} +{"query": "이준석", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "이준석", "policy": "민생회복 소비쿠폰 정책 비판", "industry_or_sector": "경제 정책", "companies": [], "impact_description": "민생회복 소비쿠폰 정책이 인플레이션을 악화시킬 수 있다는 비판을 제기하며, 장기적 재정 위험을 경고함. 특정 산업이나 기업과의 직접적 연결은 확인되지 않음.", "impact_result": {"label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 출처는 이준석 정치인의 전기 및 경력에 대한 위키백과 페이지입니다. \"민생회복 소비쿠폰 정책\"이나 해당 정책이 인플레이션에 미칠 수 있는 영향, 장기적인 재정 위험에 대한 어떠한 정보도 포함하고 있지 않습니다. 따라서 영향 설명에 대한 평가를 내릴 충분한 정보가 없습니다.", "evidence_spans": [], "error_type": "OTHER"}, "attribution_result": {"label": "WEAKLY_RELATED", "score": 0.6, "reasoning": "제공된 출처는 이준석 정치인에 대한 상세한 정보를 담고 있지만, \"민생회복 소비쿠폰 정책 비판\"이라는 특정 정책에 대한 언급이나 비판 내용은 포함하고 있지 않습니다. 이준석의 일반적인 정치 경력과 정책적 견해는 다루고 있으나, 주어진 정책과의 직접적인 연관성은 찾을 수 없습니다.", "evidence_spans": ["이준석(李俊錫, 1985년 3월 31일 ~)은 대한민국 의 기업인 , 정치인 이다.", "국민의힘 초대 당대표 를 지냈으며, 탈당 후에는 개혁신당 을 창당했다.", "제22대 국회의원"], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": false}}, {"chain_index": 1, "politician": "이준석", "policy": "공영방송 규제 완화 주장", "industry_or_sector": "미디어 산업", "companies": [], "impact_description": "공영방송의 재정적 안정성을 개선하기 위한 규제 완화를 주장함. 특정 기업과의 연결은 언급되지 않음.", "impact_result": {"label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 출처는 이준석 대표의 환율 및 경제 정책에 대한 발언을 다루고 있으며, 미디어 산업, 공영방송의 재정적 안정성 개선을 위한 규제 완화 주장과는 전혀 관련이 없습니다. 따라서 영향 설명을 평가할 충분한 정보가 없습니다.", "evidence_spans": [], "error_type": "OTHER"}, "attribution_result": {"label": "UNRELATED", "score": 0.1, "reasoning": "이준석은 기사에서 언급되지만, 기사의 내용은 공영방송 규제 완화 주장이 아닌 환율 급등, 정부의 과도한 돈 풀기, 물가 상승 등 경제 정책에 대한 비판이다. 따라서 주어진 정책과는 관련이 없다.", "evidence_spans": [], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": false}}], "gold_eval": {"similarity_score": 0.2, "reasoning": "두 보고서는 이준석의 정치·경제적 영향력을 분석한다는 공통점이 있으나, 다루는 정책 주제, 관련 산업 및 언급된 기업이 완전히 다릅니다. 골드 보고서는 공유 모빌리티 및 가상자산 관련 정책과 구체적인 기업(쏘카, 업비트 등)에 미친 영향을 상세히 설명하는 반면, 모델 보고서는 민생회복 소비쿠폰 비판과 공영방송 규제 완화 주장을 다루며 특정 기업과의 연결 없이 정책 비판에 초점을 맞춥니다. 내용상 중복되는 부분이 거의 없어 유사성이 낮습니다.", "model_unique_points": ["이준석의 민생회복 소비쿠폰 정책 비판과 경제 정책에 대한 입장.", "이준석의 공영방송 규제 완화 주장과 미디어 산업에 대한 입장."], "gold_unique_points": ["이준석의 공유 모빌리티 규제 완화 주장과 이로 인한 모빌리티/스타트업 산업(타다, 쏘카)에 대한 영향.", "이준석의 가상자산 제도화 주장과 이로 인한 금융/가상자산 산업(업비트, 빗썸)에 대한 영향."]}}} +{"query": "심상정", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "심상정", "policy": "재생에너지 확대", "industry_or_sector": "재생에너지", "companies": ["한국전력"], "impact_description": "한국전력 산하 발전자회사 통합 및 재생에너지 공사 설립 계획에 명시됨", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 소스 중 [Source 4]에서 심상정 후보가 한국전력 산하 발전자회사들을 재생에너지 공사로 통합하겠다는 계획을 명확히 언급하고 있어, 주어진 영향 설명이 충실하게 뒷받침됩니다.", "evidence_spans": ["[Source 4] 심 후보는 또 한국전력 산하 발전자회사들을 `재생에너지 공사`로 통합해 재생에너지 관련 투자도 키우겠다고 밝혔습니다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "제공된 출처 중 하나(출처 4)에서 심상정 후보가 태양광 및 풍력 발전 확대를 통한 재생에너지 비중 50% 달성 공약을 발표했음을 명확하게 다루고 있습니다. 다른 출처들은 주로 주4일제 등 다른 정책을 다루지만, 심상정 후보가 기후 위기 극복 전략의 일환으로 주4일제를 언급하기도 합니다. 하지만 재생에너지 확대 정책에 대한 직접적인 언급이 있는 출처 4가 결정적인 역할을 합니다.", "evidence_spans": ["심 후보는 2030년까지 전체 전력 생산에서 재생에너지가 차지하는 비중을 50%까지 늘리는 것을 목표로, 각종 제도를 정비하고 투자를 늘리겠다고 공약했습니다.", "정의당 심상정 대선 후보는 오늘 국회에서 에너지 전환 관련 공약을 발표하고 \"태양과 풍력발전 중심으로 전력 산업을 완전히 바꾸겠다\"며 \"1가구 1태양광 시대를 열겠다\"고 밝혔습니다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 1, "politician": "심상정", "policy": "재생에너지 확대", "industry_or_sector": "재생에너지", "companies": ["태양광/풍력 산업"], "impact_description": "재생에너지 확대 정책의 직접적 수혜", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "Source 4는 심상정 후보의 에너지 전환 공약을 상세히 설명하며, 태양광 및 풍력 발전 중심의 전력 산업 전환, 신축 건물 태양광 발전시설 의무화, 2030년까지 재생에너지 비중 50% 확대 목표, 공공 부문 대규모 투자 및 재생에너지 공사 통합을 통한 투자 확대를 언급하고 있습니다. 이러한 정책들은 태양광/풍력 산업이 재생에너지 확대 정책의 직접적인 수혜를 입을 것임을 명확히 보여줍니다.", "evidence_spans": ["[Source 4] 정의당 심상정 대선 후보는 오늘 국회에서 에너지 전환 관련 공약을 발표하고 \"태양과 풍력발전 중심으로 전력 산업을 완전히 바꾸겠다\"며 \"1가구 1태양광 시대를 열겠다\"고 밝혔습니다.", "[Source 4] 심 후보는 `1가구 1태양광` 시대를 위해 모든 신축 건물에 태양광 발전시설 설치를 의무화하고, 기존 건물에도 단계적으로 태양광 시설을 늘려나가겠다고 밝혔습니다.", "[Source 4] 아울러 심 후보는 2030년까지 전체 전력 생산에서 재생에너지가 차지하는 비중을 50%까지 늘리는 것을 목표로, 각종 제도를 정비하고 투자를 늘리겠다고 공약했습니다.", "[Source 4] 특히 공공 부문 중심으로 재생에너지 발전 시설에 대규모로 투자하고, 각 지역에도 재생에너지 시설을 설치한다는 구상을 제시했습니다.", "[Source 4] 심 후보는 또 한국전력 산하 발전자회사들을 `재생에너지 공사`로 통합해 재생에너지 관련 투자도 키우겠다고 밝혔습니다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "심상정 후보가 태양광 및 풍력 발전 중심의 에너지 전환 공약을 발표하며 2030년까지 재생에너지 발전 비중을 50%로 확대하겠다는 구체적인 목표를 제시했다는 내용이 포함되어 있어, 주어진 정치인과 정책에 매우 밀접하게 관련되어 있다.", "evidence_spans": ["정의당 심상정 대선 후보는 오늘 국회에서 에너지 전환 관련 공약을 발표하고 \"태양과 풍력발전 중심으로 전력 산업을 완전히 바꾸겠다\"며 \"1가구 1태양광 시대를 열겠다\"고 밝혔습니다.", "심 후보는 또 2030년까지 전체 전력 생산에서 재생에너지가 차지하는 비중을 50%까지 늘리는 것을 목표로, 각종 제도를 정비하고 투자를 늘리겠다고 공약했습니다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 2, "politician": "심상정", "policy": "주4일제 도입", "industry_or_sector": "금융", "companies": ["기업은행(IBK)"], "impact_description": "국책은행 중 주4일제 도입 추진 중이지만 정책 직접 연결성 없음", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 출처는 기업은행이 국책은행 중 주4일제 도입을 추진 중임을 명시하고 있습니다. 또한, 주4일제가 대선 후보의 대표 공약 중 하나로 언급되어 있어, 기업은행의 주4일제 추진이 현재 확정된 정부 정책과 직접적인 연결성이 없다는 설명과 일치합니다.", "evidence_spans": ["[Source 1] 기업은행은 국책은행 중 주4일제 도입을 추진 중이다.", "[Source 1] 주4일제는 심 후보의 대표 공약 가운데 하나이며"], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "기사는 심상정 대선 후보가 주4일제 도입을 자신의 대표 공약으로 발표하고 관련 현장 행보를 하는 내용을 다루고 있어, 정치인과 정책이 매우 직접적이고 중요하게 연결되어 있습니다.", "evidence_spans": ["정의당 심상정 대선 후보, 주4일제 공약 발표", "정의당 심상정 대선 후보가 주4일제 정책 공약행보 첫번째 일정으로 1일 오후 서울 중구 IBK기업은행 본점 내 전국금융노조 기업은행지부 사무실을 방문해 노조원들과 주4일제 근무와 관련해 간담회를 하고 있다.", "주4일제는 심 후보의 대표 공약 가운데 하나이며, 기업은행은 국책은행 중 주4일제 도입을 추진 중이다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 3, "politician": "심상정", "policy": "주4일제 도입", "industry_or_sector": "의료/고탄소", "companies": ["의료/고탄소 산업"], "impact_description": "주4일제 시범 대상 산업", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 두 출처 모두 심상정 후보의 주4일제 공약 로드맵에서 의료(병원) 및 고탄소 배출 사업장이 주4일제 시범 운영 대상에 포함된다고 명시하고 있습니다.", "evidence_spans": ["[Source 1] 2023년부터 교대제 사업장, 여성 다수 사업장, 다량 탄소배출 사업장 등을 지정해 주4일제를 시범 도입한다는 구상입니다.", "[Source 2] 2023년 2단계에서는 병원과 같이 교대제나 야간노동을 하는 사업장과 산재 및 스트레스 고위험 유발 사업장, 탄소배출 다량 사업장 등에서 주 4일제를 시범 운영하며..."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "두 출처 모두 심상정 후보가 주4일제 도입을 공약으로 발표하고 추진하는 내용에 대해 직접적으로 다루고 있습니다. 심상정 후보가 주4일제 정책의 주요 주체로 명확히 언급되며, 주4일제 정책 자체가 기사의 핵심 주제입니다.", "evidence_spans": ["정의당 심상정 대선 후보는 12일 \"대한민국은 시간 빈곤 사회\"라며 `주4일제` 공약을 공식 발표했습니다.", "심상정 정의당 대통령 선거 후보가 지난 24일 국회도서관에서 열린 보건의료노조 주4일제 연구용역 발표에서 축사를 하고 있다.", "심 후보는 시기상조론에 대해 3단계 로드맵을 제시했다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 4, "politician": "심상정", "policy": "사회복지사 처우 개선", "industry_or_sector": "사회복지", "companies": ["전국사회복지유니온"], "impact_description": "사회복지사 처우 개선을 위한 정책 협약 체결", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 출처에 따르면 전국사회복지유니온과 정의당 심상정 대선후보 측이 사회복지사 처우 개선을 위한 정책 협약을 체결했음이 명확하게 언급되어 있습니다.", "evidence_spans": ["[Source 1] 정의당 심상정 대선후보 측과 사회복지종사자 단체인 전국사회복지유니온은 27일 국회에서 정책협약식을 가졌다.", "[Source 1] 윤소하 의원은 “사회복지사 임금가이드라인 법제화 등 사회복지사 처우개선을 위해 계속 노력해 나가겠다”고 다짐했다.", "[Source 1] 이날 전국사회복지유니온과 정의당이 맺은 이 협약은 단순한 협약이 아닌 돌봄을 받는 사람과 돌봄을 행하는 모두가 행복한 대한민국을 만들겠다는 정의당의 다짐이자 약속이라고 윤 의원은 전했다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "제공된 기사는 심상정 후보 측과 전국사회복지유니온이 사회복지사 처우 개선을 위한 정책 협약을 맺었다는 내용을 직접적으로 다루고 있습니다. 심상정 후보가 정책의 중요한 주체로 등장하며, 정책 주제인 사회복지사 처우 개선이 명확하게 언급됩니다.", "evidence_spans": ["정의당 심상정 대선후보 측과 사회복지종사자 단체인 전국사회복지유니온은 27일 국회에서 정책협약식을 가졌다.", "“사회복지사 임금가이드라인 법제화 등 사회복지사 처우개선을 위해 계속 노력해 나가겠다”고 다짐했다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}], "gold_eval": {"similarity_score": 0.5, "reasoning": "두 보고서는 심상정 의원의 정치·경제 영향력을 분석하는 유사한 구조를 가지고 있으나, 다루는 정책 의제, 관련 기업 및 산업, 그리고 영향력 설명의 구체성에서 차이를 보입니다. gold_report는 노동권 보장 및 환경 정책이 삼성전자, 이마트, 한국남동발전 등 특정 기업에 미친 구체적인 영향을 상세히 설명하는 반면, model_report는 주4일제 도입, 사회복지 강화 등 다른 정책 의제와 한국전력, 기업은행 등 다양한 기업 및 산업을 다루지만, 일부 영향력 연결성이 덜 구체적입니다. 재생에너지 확대 정책은 두 보고서 모두에서 다루는 공통적인 주제입니다.", "model_unique_points": ["주4일제 도입 정책을 통해 기업은행(IBK) 및 의료/고탄소 산업에 영향을 미치려는 시도를 언급했습니다.", "사회복지 강화 및 사회복지사 처우 개선 정책을 통해 전국사회복지유니온과의 협약을 제시했습니다.", "한국전력 및 태양광/풍력 산업에 대한 재생에너지 확대 정책의 영향을 언급했습니다.", "SK이노베이션, 현대자동차 등과의 연결성은 증거가 부족하다고 명시했습니다."], "gold_unique_points": ["노동존중 사회를 기치로 최저임금 인상, 비정규직 정규직화, 노조할 권리 보장 투쟁을 주도하며 삼성전자, 이마트, CJ대한통운 등 대기업의 노동 관행 및 고용 구조 변화에 구체적인 영향을 미쳤습니다.", "그린뉴딜 및 탈탄소 정책을 통해 한국남동발전의 석탄발전 축소 및 두산중공업(현 두산에너빌리티)의 신재생 사업 전환 등 에너지/환경 분야 기업 전략 재편에 영향을 주었습니다.", "영향력 행사가 입법보다는 의제 설정과 여론 압박을 통한 간접적인 효과가 크다는 점을 명시했습니다."]}}} +{"query": "Joe Biden", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "조 바이든", "policy": "양당 인프라 법(Bipartisan Infrastructure Law)", "industry_or_sector": "인프라/건설", "companies": ["Bechtel", "Siemens", "Union Pacific", "Amtrak"], "impact_description": "조 바이든 대통령의 '양당 인프라 법(Bipartisan Infrastructure Law)'은 1.2조 달러 규모의 인프라 투자를 통해 도로, 교량, 전기 그리드, 전기차 충전소 등 다양한 분야에서 Bechtel, Siemens, Union Pacific, Amtrak 등의 기업이 참여하고 있습니다. 이 정책은 미국 전역의 인프라 현대화를 목표로 하며, 해당 기업들은 정부 계약자로서 프로젝트에 참여하고 있습니다.", "impact_result": {"label": "PARTIALLY_SUPPORTED", "score": 0.65, "reasoning": "조 바이든 대통령의 양당 인프라 법(Bipartisan Infrastructure Law)과 1.2조 달러 규모의 인프라 투자, 그리고 도로, 교량, 전기 그리드, 전기차 충전소 등 다양한 투자 분야는 여러 출처에서 명확하게 확인됩니다. 또한 미국 인프라 현대화 목표도 잘 뒷받침됩니다. 그러나 언급된 기업 중 Amtrak만이 이 법안에 따른 상당한 투자를 받는 것으로 명시되어 있으며, Bechtel, Siemens, Union Pacific의 참여는 제공된 출처에서 언급되지 않았습니다. 따라서 전체적인 내용은 부분적으로만 뒷받침됩니다.", "evidence_spans": ["[Source 1] The Infrastructure Investment and Jobs Act ( IIJA ), also known as the Bipartisan Infrastructure Law ( BIL ), ( H.R. 3684 ) is a United States federal statute enacted by the 117th United States Congress and signed into law by President Joe Biden on November 15, 2021. It was introduced in the House as the INVEST in America Act and nicknamed the Bipartisan Infrastructure Bill. The act was initially a $547–715 billion infrastructure package that included provisions related to federal highway aid, transit, highway safety , motor carrier, research, hazardous materials and rail programs of the Department of Transportation . [ 1 ] [ 2 ] After congressional negotiations, it was amended and renamed the Infrastructure Investment and Jobs Act to add funding for broadband access , clean water and electric grid renewal in addition to the transportation and road proposals of the original House bill. This amended version included approximately $1.2 trillion in spending, with $550 billion in newly authorized spending on top of what Congress was planning to authorize regularly.", "[Source 3] President Joe Biden on Monday signed into law one of the largest infrastructure packages in U.S. history after months of bipartisan negotiations and tense political infighting, shoring up $1.2 trillion in funds, including $550 billion in new investments for the nation's bridges, airports, waterways, public transit and more—here's what you need to know about where the massive new spending will go.", "[Source 3] Amtrak: The legislation marks the largest investment in passenger rail since the creation of Amtrak 50 years ago, with $66 billion earmarked for high-speed rail, safety improvements, Amtrak grants and modernization of the rail route connecting Washington, D.C., to Boston.", "[Source 3] Electric grid and energy: Though many clean-energy measures were cut from the bill to satisfy spending-weary lawmakers, a $108 billion investment will help upgrade the nation’s electricity grid, with thousands of miles of new transmission lines and funds for environmentally friendly smart-grid technology.", "[Source 3] Electric cars, buses and ferries: In addition to $7.5 billion for the nation’s first network of electric-vehicle chargers along highway corridors, lawmakers have shored up $5 billion for zero-emission buses (including thousands of electric school buses) and $2.5 billion for ferries.", "[Source 5] The Bipartisan Infrastructure Law is a historic opportunity to repair the one-in-five miles of our roadways and more than 45,000 bridges in the United States rated as “in poor condition.” The law also contains funding to rebuild and reinvest in our railways, public transit infrastructure, and the safety of our transportation system."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.98, "reasoning": "모든 출처는 \"양당 인프라 법(Bipartisan Infrastructure Law)\" 또는 \"인프라 투자 및 일자리 법(Infrastructure Investment and Jobs Act)\"을 직접적으로 다루고 있으며, 조 바이든 대통령이 이 법안에 서명했음을 명시하고 있습니다. 바이든 대통령은 이 정책의 주요 행위자로 언급되며, 정책 내용은 각 출처의 핵심 주제입니다.", "evidence_spans": ["조 바이든 대통령이 2021년 11월 15일에 법으로 서명했다.", "양당 인프라 법(BIL)은 1조 2천억 달러 규모의 투자이며, 2021년 11월 15일에 바이든 대통령에 의해 법으로 서명되었다.", "조 바이든 대통령은 월요일에 미국 역사상 가장 큰 인프라 패키지 중 하나에 서명하여 법으로 제정했다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 1, "politician": "조 바이든", "policy": "CHIPS and Science Act", "industry_or_sector": "반도체", "companies": ["Intel", "TSMC"], "impact_description": "조 바이든 대통령의 'CHIPS and Science Act'는 반도체 산업 지원을 위해 Intel, TSMC 등에 자금을 지원하고 있습니다. 반도체 업계는 환경 규제 완화를 요구하며 바이든 행정부에 로비를 진행했으나, 특정 계약자나 로비스트와의 직접적 연결은 확인되지 않았습니다.", "impact_result": {"label": "NOT_ENOUGH_INFO", "score": 0.0, "reasoning": "제공된 유일한 출처가 HTTP 500 오류 페이지로, 내용을 확인할 수 없어 영향 설명을 평가할 정보가 충분하지 않습니다.", "evidence_spans": [], "error_type": "PAGE_LOAD_ERROR"}, "attribution_result": {"label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 소스 페이지에서 500 내부 서버 오류가 발생하여 내용을 확인할 수 없습니다.", "evidence_spans": [], "error_type": "PAGE_LOAD_ERROR", "politician_mentioned": false, "policy_topic_mentioned": false}}, {"chain_index": 2, "politician": "조 바이든", "policy": "인플레이션 감축법(Inflation Reduction Act)", "industry_or_sector": "청정 에너지/전기차", "companies": ["LG Chem", "Syrah Resources", "Ioneer"], "impact_description": "조 바이든 대통령의 '인플레이션 감축법(Inflation Reduction Act)'은 청정 에너지 및 전기차 분야에서 LG Chem, Syrah Resources, Ioneer 등의 기업에 자금을 지원하고 있습니다. 이 정책은 탄소 중립 목표 달성을 위해 배터리 및 광물 공급망 확대를 추진하고 있습니다.", "impact_result": {"label": "PARTIALLY_SUPPORTED", "score": 0.65, "reasoning": "제공된 자료는 조 바이든 대통령의 인플레이션 감축법(IRA)이 청정 에너지 및 전기차 분야에 대한 투자를 촉진하고 탄소 중립 목표 달성을 위해 배터리 저장 및 제조 확대를 추진하고 있음을 뒷받침합니다. 하지만, LG Chem, Syrah Resources, Ioneer와 같은 특정 기업들이 자금을 지원받고 있다는 내용은 언급되어 있지 않으며, 광물 공급망 확대에 대한 구체적인 언급도 부족합니다.", "evidence_spans": ["[Source 1] The $369bn Inflation Reduction Act has boosted clean energy and EV cars", "[Source 1] It’s the largest investment in clean energy in American history, and I would argue in world history, to tackle the climate crisis", "[Source 1] directed at zero-carbon energy projects such as solar, wind and nuclear, grants for bring renewables manufacturing to the US and consumer incentives to purchase electric cars", "[Source 1] the White House claims that there will be twice as much wind, solar and battery storage deployment over the next seven years than if the bill was never enacted, with companies already spending twice as much on new manufacturing facilities as they were pre-IRA."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "제공된 기사는 조 바이든 대통령과 그의 행정부가 추진한 인플레이션 감축법(Inflation Reduction Act)에 대해 직접적으로 다루고 있습니다. 기사는 법안의 주요 내용, 청정 에너지 및 전기차 산업에 미친 영향, 그리고 바이든 대통령의 역할을 상세히 설명하고 있습니다.", "evidence_spans": ["Biden’s Climate Bill: Inflation Reduction Act", "Joe Biden hailed the bill, which despite its name is at heart a major shove towards a future dominated by renewable energy and electric vehicles, as “one of the most significant laws in our history” when signing it on 16 August last year.", "The $369bn Inflation Reduction Act has boosted clean energy and EV cars", "The Inflation Reduction Act includes rebates of up to $7,500 for buying an electric vehicle"], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 3, "politician": "조 바이든", "policy": "ACA 확장 및 인플레이션 감축법", "industry_or_sector": "의료/제약", "companies": ["UnitedHealth", "Kaiser Permanente", "Merck", "Moderna"], "impact_description": "조 바이든 대통령의 'ACA(Patient Protection and Affordable Care Act) 확장' 정책은 UnitedHealth, Kaiser Permanente 등의 기업과 연결되어 있습니다. 또한, '인플레이션 감축법'을 통한 의약품 가격 개혁 정책은 Merck, Moderna 등의 제약사와 관련이 있으며, 해당 기업들은 바이든 캠페인에 기부하거나 로비를 진행했습니다.", "impact_result": {"label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 두 출처 모두 페이지 로딩 오류 또는 보안 확인 페이지로 인해 내용을 확인할 수 없습니다. 따라서 영향 설명의 사실 여부를 평가할 충분한 정보가 없습니다.", "evidence_spans": [], "error_type": "PAGE_LOAD_ERROR"}, "attribution_result": {"label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 두 소스 모두 페이지 로드 오류 또는 보안 검사로 인해 내용을 확인할 수 없습니다. 따라서 정치인과 정책 간의 관련성을 판단할 정보가 부족합니다.", "evidence_spans": [], "error_type": "PAGE_LOAD_ERROR", "politician_mentioned": false, "policy_topic_mentioned": false}}], "gold_eval": {"similarity_score": 0.55, "reasoning": "두 보고서는 조 바이든 대통령의 정치·경제 영향력을 분석하며, CHIPS Act와 인플레이션 감축법(IRA)을 공통 정책으로 다루고 Intel, TSMC 등 반도체 기업에 대한 영향을 유사하게 설명합니다. 그러나 모델 보고서는 인프라 및 의료 분야 정책을 추가로 포함하는 반면, 골드 보고서는 IRA의 전기차/배터리 산업 영향과 동맹국과의 공급망 협력에 더 구체적인 기업 사례를 제시합니다.", "model_unique_points": ["양당 인프라 법(Bipartisan Infrastructure Law)을 통한 인프라/건설 산업(Bechtel, Siemens, Union Pacific, Amtrak)의 영향력.", "ACA 확장 및 인플레이션 감축법을 통한 의료/제약 산업(UnitedHealth, Kaiser Permanente, Merck, Moderna)의 영향력 및 로비 활동."], "gold_unique_points": ["인플레이션 감축법(IRA)이 Tesla, LG Energy Solution 등 전기차/배터리 기업의 판매 경쟁력 강화 및 현지 생산 확대에 미친 영향.", "동맹국과의 핵심 광물 공급망 구축 및 친환경 인프라 투자가 General Motors, First Solar 등 에너지/인프라 기업의 성장에 기여한 점."]}}} +{"query": "Donald Trump", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "Donald Trump", "policy": "Tax Cuts and Jobs Act (2017)", "industry_or_sector": "제약", "companies": ["Pfizer"], "impact_description": "제약 산업인 Pfizer는 세금 감면으로 40억 달러의 세금 절감 효과를 얻었습니다.", "impact_result": {"label": "UNSUPPORTED", "score": 0.2, "reasoning": "제공된 자료들은 2017년 세금 감면 및 일자리 법(TCJA)과 기업 세금 감면의 일반적인 영향에 대해 설명하고 있습니다. 그러나 어떤 자료에서도 Pfizer라는 회사나 Pfizer가 40억 달러의 세금을 절감했다는 구체적인 내용은 언급되지 않았습니다. 따라서 영향 설명의 핵심 주장은 뒷받침되지 않습니다.", "evidence_spans": [], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "두 출처 모두 도널드 트럼프 대통령이 2017년 세금 감면 및 일자리 법안(Tax Cuts and Jobs Act)에 서명했음을 명확히 언급하며, 해당 법안의 내용과 그에 따른 영향에 대해 상세히 다루고 있습니다. 트럼프 대통령은 이 정책의 중요한 행위자로 등장합니다.", "evidence_spans": ["Signed into law by President Donald Trump on December 22, 2017", "President Donald Trump and Secretary of Treasury Steven Mnuchin in 2017.", "Under the Tax Cuts and Jobs Act of 2017, the corporate income tax rate shrank from 35% to 21%."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 1, "politician": "Donald Trump", "policy": "Tax Cuts and Jobs Act (2017)", "industry_or_sector": "금융", "companies": ["Goldman Sachs"], "impact_description": "금융 산업인 Goldman Sachs는 규제 완화로 이익을 얻었습니다.", "impact_result": {"label": "PARTIALLY_SUPPORTED", "score": 0.6, "reasoning": "제공된 소스는 2017년 세금 개혁으로 인해 기업들이 세금 감면과 로비를 통해 이익을 얻었음을 시사합니다. 이는 규제 완화의 한 형태로 볼 수 있으며, 기업들이 이익을 얻었다는 전반적인 내용은 지지합니다. 그러나 소스에는 골드만삭스가 구체적으로 이러한 규제 완화로 이익을 얻었다는 직접적인 언급이 없습니다.", "evidence_spans": ["[Source 1] Under the Tax Cuts and Jobs Act of 2017, the corporate income tax rate shrank from 35% to 21%.", "[Source 1] corporate lobbyists swarmed the Treasury Department for exemptions to these new provisions.", "[Source 1] lobbyists successfully knocked down companies’ tax bills so that they became even smaller than anticipated"], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "기사는 도널드 트럼프 대통령이 서명한 2017년 세금 감면 및 일자리 법(Tax Cuts and Jobs Act of 2017)과 이 법안의 기업 로비 영향을 직접적으로 다루고 있습니다. 트럼프 대통령은 법안 서명자로 명시되어 있으며, 법안 자체가 기사의 핵심 주제입니다.", "evidence_spans": ["President Donald Trump and Secretary of Treasury Steven Mnuchin in 2017.", "Under the Tax Cuts and Jobs Act of 2017, the corporate income tax rate shrank from 35% to 21%.", "After President Trump signed the bill in December of 2017, corporate lobbyists swarmed the Treasury Department for exemptions to these new provisions."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 2, "politician": "Donald Trump", "policy": "규제 완화", "industry_or_sector": "로봇공학", "companies": ["Tesla"], "impact_description": "로봇공학 산업인 Tesla는 트럼프 행정부의 제조업 지원 정책 아래 Optimus 로봇을 홍보했습니다.", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 출처는 테슬라 CEO가 옵티머스 로봇을 홍보했음을 명시하고 있으며, 트럼프 행정부가 로봇 산업을 보호하고 제조 및 판매를 용이하게 하는 정책적 지원을 할 것이라는 전망과 이러한 정부 지원이 옵티머스에 대한 긍정적 전망을 강화할 것이라는 분석을 제시하여 영향 설명의 모든 요소를 뒷받침합니다.", "evidence_spans": ["[Source 1] 일론 머스크 테슬라 CEO 는 지난달 6일 연례 주주총회에서 자사의 휴머노이드 로봇 옵티머스를 \"무한 돈 버그\"에 비유하며 생산성 향상과 혁신을 통해 세계 경제 규모를 10배에서 100배까지 키울 수 있다고 전망했다.", "[Source 1] 바클레이즈의 댄 레비 애널리스트는 이날 보고서에서 내년 트럼프 대통령의 휴머노이드 로봇 관련 행정명령이 나올 것으로 예상하면서 \"기업들은 점점 로봇을 중국과 경쟁 분야로 보면서 자동화, 공급망, 로봇 배치에서 정부 지원이나 세제 혜택을 구하고 있다. 정부 지원이 확대되면 옵티머스에 대한 긍정적 전망도 강화될 것\"이라고 진단했다.", "[Source 1] 도널드 트럼프 미국 행정부가 중국과 차세대 기술 패권 경쟁의 초점을 로봇 산업으로 옮길 태세다. 중국으로부터 미국의 로봇 산업을 보호하면서 로봇 제조와 판매를 용이하게 하는 방향이 되리란 전망이 나온다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "기사는 도널드 트럼프 행정부가 로봇 산업을 보호하고 로봇 제조 및 판매를 용이하게 하는 방향으로 정책 초점을 맞추고 있다고 명시합니다. 또한 트럼프 대통령의 휴머노이드 로봇 관련 행정명령이 예상되며, 이는 기업들이 정부 지원이나 세제 혜택을 통해 자동화 및 로봇 배치에 대한 규제 완화 또는 지원을 기대하는 맥락에서 언급됩니다. 이는 주어진 정책인 \"규제 완화\"와 밀접하게 관련됩니다.", "evidence_spans": ["도널드 트럼프 미국 행정부가 중국과 차세대 기술 패권 경쟁의 초점을 로봇 산업으로 옮길 태세다. 중국으로부터 미국의 로봇 산업을 보호하면서 로봇 제조와 판매를 용이하게 하는 방향이 되리란 전망이 나온다.", "바클레이즈의 댄 레비 애널리스트는 이날 보고서에서 내년 트럼프 대통령의 휴머노이드 로봇 관련 행정명령이 나올 것으로 예상하면서 \"기업들은 점점 로봇을 중국과 경쟁 분야로 보면서 자동화, 공급망, 로봇 배치에서 정부 지원이나 세제 혜택을 구하고 있다. 정부 지원이 확대되면 옵티머스에 대한 긍정적 전망도 강화될 것\"이라고 진단했다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 3, "politician": "Donald Trump", "policy": "규제 완화", "industry_or_sector": "방위", "companies": ["Vulcan Elements", "Firehawk Aerospace", "Unusual Machines"], "impact_description": "방위 산업인 Vulcan Elements, Firehawk Aerospace, Unusual Machines는 트럼프 주니어의 1789 Capital 투자 후 연방 계약을 획득했습니다.", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 소스에 따르면 Vulcan Elements, Firehawk Aerospace, Unusual Machines 세 회사 모두 트럼프 주니어의 1789 Capital 투자 또는 지분 참여 이후 연방 계약을 획득했습니다. 이는 주어진 impact_description과 일치합니다.", "evidence_spans": ["[Source 1] 벌컨 엘리먼츠는 미 국방부 전략자본처(OSC)로부터 6억 2000만달러의 조건부 대출을 받게 됐다. ... 트럼프 주니어의 벤처캐피털 ‘1789 캐피털’이 지난 8월 시리즈A(6500만달러) 투자 라운드에 참여한 지 3개월 만에 대규모 국방 계약을 따낸 것이어서 주목된다.", "[Source 1] 1789 캐피털 포트폴리오에는 미 공군으로부터 각각 1000만달러(약 147억원) 이상 계약을 체결한 로켓 추진 스타트업 ‘파이어호크 에어로스페이스’와 양자컴퓨팅 기업 ‘사이퀀텀’도 들어있다.", "[Source 1] 드론 제조사 ‘언유주얼 머신스’도 트럼프 주니어 지분이 포함된 상태에서 국방부로부터 최대 규모 계약을 체결했다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "기사는 도널드 트럼프 대통령의 장남이 관련된 투자 펀드가 트럼프 행정부 시절 연방정부 계약 및 규제 완화 혜택을 받았다는 내용을 다루고 있습니다. 특히 트럼프 행정부의 가상자산 규제 완화에 발맞춰 수익 기회를 넓혔다는 언급이 있어, 트럼프와 규제 완화 정책이 직접적으로 연관되어 있습니다.", "evidence_spans": ["일부 기업은 규제 완화 등의 혜택도 받은 것으로 알려졌다.", "트럼프 행정부의 가상자산 규제 완화에 발맞춰 관련 산업으로 수익 기회를 넓히고 있다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}], "gold_eval": {"similarity_score": 0.45, "reasoning": "두 보고서 모두 도널드 트럼프의 감세 정책을 다루지만, 그 외의 정책과 영향력 사슬에서 큰 차이를 보입니다. Gold 보고서는 감세 외에 무역 정책과 에너지 산업 지원 정책을 상세히 설명하며 광범위한 산업(철강, 석유/가스)과 기업(Apple, U.S. Steel, ExxonMobil 등)에 미친 긍정적/부정적 영향을 구체적인 증거와 함께 제시합니다. 반면 Model 보고서는 감세 정책 외에 규제 완화를 언급하며 제약, 로봇공학, 방위 산업의 특정 기업(Pfizer, Tesla, Vulcan Elements 등)에 미친 영향을 다루며, 특히 트럼프 주니어의 투자와 연방 계약 획득과 같은 특정 사례에 초점을 맞춥니다. 전반적으로 Gold 보고서가 정책과 산업 전반의 거시적 경제 영향력을 더 폭넓고 깊이 있게 분석한 반면, Model 보고서는 특정 기업의 혜택이나 특정 인물과의 연결고리에 더 집중하는 경향이 있습니다.", "model_unique_points": ["감세 정책이 제약 산업(Pfizer)에 미친 세금 절감 효과.", "규제 완화 정책이 로봇공학 산업(Tesla)의 Optimus 로봇 홍보에 미친 영향.", "규제 완화 정책과 트럼프 주니어의 투자를 통한 방위 산업(Vulcan Elements 등)의 연방 계약 획득.", "보고서의 시간 범위가 2025년까지 확장되어 있음."], "gold_unique_points": ["무역전쟁 및 관세 정책을 통한 철강/제조업 보호 및 글로벌 공급망 긴장 유발 (U.S. Steel, Harley-Davidson).", "에너지산업 지원 정책(파리기후협약 탈퇴, 환경규제 완화)을 통한 석유/가스 산업 활성화 (ExxonMobil, Chevron).", "감세 정책이 Apple, JPMorgan Chase 등 대기업의 순이익 증가 및 투자 여력 확대에 미친 구체적인 영향."]}}} +{"query": "Xi Jinping", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "Xi Jinping", "policy": "Made in China 2025 (MIC2025)", "industry_or_sector": "로봇공학", "companies": ["UBTECH Robotics", "Siasun Robot & Automation", "Estun Automation", "Inovance Technology", "Ecovacs Robotics"], "impact_description": "로봇 산업은 MIC2025의 주요 목표 분야 중 하나로, 2023년 기준 170억 달러 규모의 시장을 형성하며 지속적인 성장을 보이고 있습니다. 그러나 해당 기업들이 MIC2025의 직접적인 수혜자라는 증거는 없습니다.", "impact_result": {"label": "CONTRADICTED", "score": 0.2, "reasoning": "제시된 영향 설명은 로봇 산업이 MIC2025의 주요 목표 분야이며 지속적으로 성장하고 있다는 점은 부분적으로 지지되지만, 해당 기업들이 MIC2025의 직접적인 수혜자라는 증거가 없다는 주장은 출처 1에 의해 명확히 반박됩니다. 출처 1은 중국 정부가 '중국제조 2025' 전략을 통해 로봇 기업들을 지원하고 있으며, 언급된 기업들이 관련 수혜를 받을 수 있다고 명시하고 있습니다. 또한, 2023년 기준 170억 달러 시장 규모에 대한 정보는 출처에서 찾을 수 없습니다.", "evidence_spans": ["[Source 1] 중국 정부가 제조업 혁신 계획(‘중국제조 2025’)의 핵심 산업으로 휴머노이드 로봇을 지정하면서, 중국 로봇 기업들의 주가와 기술력이 동시에 부상하고 있는데요.", "[Source 1] 중국 정부는 정책적 지원을 통해 로봇 기업들의 연구개발(R&D)과 상용화를 적극적으로 밀어주고 있습니다.", "[Source 1] 정부 지원 : 중국 정부가 ‘중국제조 2025’ 전략을 밀어주고 있어, 중국 휴머노이드 로봇 관련주 에는 다양한 지원금과 세제 혜택이 돌아갈 수 있습니다."], "error_type": "NONE"}, "attribution_result": {"label": "WEAKLY_RELATED", "score": 0.65, "reasoning": "Source 1은 '중국제조 2025' 정책을 명확히 언급하며, 중국 정부가 이 정책을 통해 휴머노이드 로봇 산업을 적극적으로 지원하고 있음을 설명합니다. 정책 주제는 기사의 핵심 내용이지만, 시진핑 주석의 이름은 직접적으로 언급되지 않아 정치인과의 직접적인 연관성은 약합니다.", "evidence_spans": ["중국 정부가 제조업 혁신 계획(‘중국제조 2025’)의 핵심 산업으로 휴머노이드 로봇을 지정하면서", "중국 정부가 ‘중국제조 2025’ 전략을 밀어주고 있어, 중국 휴머노이드 로봇 관련주에는 다양한 지원금과 세제 혜택이 돌아갈 수 있습니다."], "error_type": "NONE", "politician_mentioned": false, "policy_topic_mentioned": true}}, {"chain_index": 1, "politician": "Xi Jinping", "policy": "Made in China 2025 (MIC2025)", "industry_or_sector": "바이오제약", "companies": ["Huarong (Guangdong) Pharmaceutical Co., Ltd.", "Jiangsu Hengrui Medicine Co., Ltd.", "Shanghai Fosun Pharmaceutical (Group) Co., Ltd."], "impact_description": "바이오제약 산업은 MIC2025의 주요 목표 분야 중 하나이지만, 해당 기업들이 MIC2025의 직접적인 수혜자라는 증거는 없습니다.", "impact_result": {"label": "UNSUPPORTED", "score": 0.2, "reasoning": "제공된 출처는 바이오제약 산업과 언급된 기업들에 대한 정보를 제공하지만, \"MIC2025\" 정책에 대한 언급이 전혀 없습니다. 따라서 바이오제약 산업이 MIC2025의 주요 목표 분야 중 하나인지, 그리고 해당 기업들이 MIC2025의 직접적인 수혜자인지에 대한 증거를 찾을 수 없습니다.", "evidence_spans": [], "error_type": "NONE"}, "attribution_result": {"label": "WEAKLY_RELATED", "score": 0.65, "reasoning": "소스는 중국의 바이오제약 산업 성장을 정부 지원과 연결하며, 2025년까지 중국 내 상위 제약사들을 언급하여 '중국 제조 2025' 정책의 핵심 목표와 시기를 다루고 있습니다. 그러나 시진핑 주석은 전혀 언급되지 않습니다.", "evidence_spans": ["In recent years, China's biopharmaceutical industry has witnessed remarkable growth, driven by government support, increased R & D investment, and a growing demand for advanced medical treatments.", "Here are the top 10 biopharmaceutical manufacturers in China in 2025."], "error_type": "NONE", "politician_mentioned": false, "policy_topic_mentioned": true}}, {"chain_index": 2, "politician": "Xi Jinping", "policy": "시진핑의 권력 집중", "industry_or_sector": "정치-경제 영향력 네트워크", "companies": [], "impact_description": "시진핑은 반부패 운동을 통해 상하이 및 청년 연맹 파벌을 겨냥하며 개인 파벌을 강화했고, 20차 당 대회에서 정책 선호도와 인사 임명에서 시진핑 파벌의 영향력을 더욱 공고히 했습니다.", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 출처는 시진핑이 반부패 운동을 통해 상하이 및 청년 연맹 파벌을 겨냥하여 개인 파벌을 강화했으며, 다가오는 20차 당 대회에서 시진핑 파벌의 영향력이 인사 임명뿐만 아니라 정책 선호도에도 반영될 것이라고 명시적으로 언급하고 있습니다. 이는 영향 설명의 모든 핵심 내용을 뒷받침합니다.", "evidence_spans": ["[Source 1] Xi’s anti-corruption campaign has largely targeted leaders from his rival Shanghai and Youth League factions to such an extent that these factions are now struggling to survive in China’s elite politics.", "[Source 1] The upcoming 20th Party Congress will further strengthen the Xi faction and this will be not only limited to personnel appointments but also be reflected in policy preferences."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "소스는 시진핑 하에서 비공식적인 정치 시스템이 약화되고 시진핑 파벌이 강화되어 권력 집중이 심화되고 있음을 명확하게 설명하고 있습니다. 시진핑의 반부패 캠페인이 라이벌 파벌을 약화시키는 데 사용되었고, 다가오는 당대회에서 시진핑 파벌이 더욱 강화될 것이라고 언급하며 정책 선호도에도 반영될 것이라고 합니다. 이는 '시진핑의 권력 집중'이라는 정책 주제와 직접적으로 관련됩니다.", "evidence_spans": ["However, under Xi Jinping, this informal political system has been systematically weakened, leading to creation of a separate Xi faction based on his personal connections.", "Xi’s anti-corruption campaign has largely targeted leaders from his rival Shanghai and Youth League factions to such an extent that these factions are now struggling to survive in China’s elite politics.", "The upcoming 20th Party Congress will further strengthen the Xi faction and this will be not only limited to personnel appointments but also be reflected in policy preferences."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}], "gold_eval": {"similarity_score": 0.1, "reasoning": "두 보고서는 시진핑의 정치·경제 영향력을 다루지만, 분석하는 정책, 관련 산업 및 기업이 완전히 다릅니다. 골드 보고서는 일대일로, 빅테크 규제, 기술굴기 등 구체적인 정책과 그로 인한 기업(중국교통건설공사, 알리바바, SMIC 등)의 명확한 경제적 영향을 상세히 설명합니다. 반면 모델 보고서는 Made in China 2025 정책과 로봇공학, 바이오제약 산업을 연결하지만 기업에 대한 직접적인 수혜 증거가 부족하다고 명시하며, 시진핑의 권력 집중이라는 정치적 영향력에 더 초점을 맞춥니다. 전반적으로 골드 보고서가 질문에 대한 정치-경제적 영향력 분석을 더 구체적이고 깊이 있게 다루고 있습니다.", "model_unique_points": ["Made in China 2025 정책과 로봇공학 산업(UBTECH Robotics 등)의 연관성 분석.", "Made in China 2025 정책과 바이오제약 산업(Huarong 등)의 연관성 분석.", "반부패 운동과 20차 당 대회를 통한 시진핑의 권력 집중 및 파벌 강화."], "gold_unique_points": ["일대일로 전략을 통한 중국 국영 건설기업(중국교통건설공사, 중국철도건설공사)의 해외 인프라 수주 및 영향력 확대.", "공동부유 기치 아래 빅테크 기업(Alibaba, Tencent)에 대한 강도 높은 규제와 성장 제동.", "기술굴기 정책을 통한 반도체 기업(SMIC) 및 통신 기업(화웨이)의 자립화 추진."]}}} +{"query": "Vladimir Putin", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "블라디미르 푸틴", "policy": "에너지 부문 국가 통제 강화", "industry_or_sector": "에너지", "companies": ["Gazprom", "Rosneft"], "impact_description": "푸틴은 가즈프롬과 로스네프트를 통제하며 이고리 세친과 같은 충성파를 임명했고, 가즈프롬은 크렘린의 지정학적 이익을 위한 도구로 활용됨. 푸틴의 자연자원 관리 학문적 배경이 에너지 정책 결정에 영향을 미침.", "impact_result": {"label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 유일한 출처가 오류 페이지이므로 영향 설명을 평가할 수 있는 정보가 충분하지 않습니다.", "evidence_spans": [], "error_type": "PAGE_LOAD_ERROR"}, "attribution_result": {"label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 웹 페이지에 접속할 수 없거나 내용이 로드되지 않아 관련성을 판단할 정보가 부족합니다.", "evidence_spans": [], "error_type": "PAGE_LOAD_ERROR", "politician_mentioned": false, "policy_topic_mentioned": false}}, {"chain_index": 1, "politician": "블라디미르 푸틴", "policy": "방위 산업 통제 및 군사 행동 지원", "industry_or_sector": "방위", "companies": ["Rostec"], "impact_description": "세르게이 체메조프(로스테크 CEO)는 푸틴의 오랜 동료로, 크림 반도 통합에 로스테크가 관여했으며 미국, EU, 영국으로부터 제재를 받음. 체메조프 가족은 모스크바 아파트와 초호화 요트를 소유.", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 모든 출처는 영향 설명의 모든 부분을 명확하게 뒷받침합니다. 세르게이 체메조프가 푸틴의 오랜 동료이며 로스테크의 CEO라는 점, 크림 반도 합병 이후 미국, EU, 영국으로부터 제재를 받았다는 점, 그리고 그의 가족이 모스크바 아파트와 초호화 요트를 소유하고 있다는 점이 각 출처에서 확인됩니다.", "evidence_spans": ["[Source 2] Sergei Chemezov was appointed by a presidential decree on November 26, 2007 as the Director General of the State Corporation for Promoting Development, Manufacturing and Export of Russian Technologies High-Tech Industrial Products, also known as Rostec. Rostec is a Russian state-owned holding company and has not been sanctioned. Chemezov is a trusted ally of President Putin, whom he has known since the 1980s when they lived in the same apartment complex in East Germany.", "[Source 3] The UK government imposed sanctions on Chemezov due to his close association with President Vladimir Putin and his involvement in policies that threaten Ukraine’s sovereignty. As CEO of Rostec, Chemezov oversees a corporation that plays a pivotal role in Russia’s defense industry, contributing to the country’s military capabilities and activities in Ukraine.", "[Source 3] 2014: Sanctioned by the US, EU, and UK following Russia’s annexation of Crimea.", "[Source 3] UK Sanctions List: RUS0088 EU Sanctions List: Listed since September 12, 2014 US Sanctions Programs: Sanctioned under Executive Orders 13661 and 14024", "[Source 3] In 2019, investigative reports revealed that Ignatova owns a luxury apartment in Moscow, valued at approximately 5 billion rubles, located at the former site of the Moskva Hotel .", "[Source 3] 2019: Investigative reports linked Chemezov’s family to offshore wealth, including a $600 million superyacht .", "[Source 3] 2022: Spain temporarily seized his $140 million yacht, ‘Valerie’, in Barcelona as part of sanctions enforcement."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "제공된 자료들은 블라디미르 푸틴 대통령과 그의 측근들이 러시아의 방위 산업 및 우크라이나에서의 군사 행동에 어떻게 연루되어 있는지를 명확히 보여줍니다. 특히, 세르게이 체메조프가 CEO로 있는 로스텍(Rostec)이 러시아 방위 산업에서 핵심적인 역할을 하며 국가의 군사 역량과 우크라이나에서의 활동에 기여하고 있다는 점이 언급됩니다. 미국 재무부의 제재 또한 러시아의 우크라이나 불안정화 노력과 관련하여 푸틴 행정부의 군사 행동 지원 및 방위 산업 통제와 연관됩니다.", "evidence_spans": ["세르게이 체메조프는 2007년 11월 26일 대통령령에 의해 러시아 기술 하이테크 산업 제품의 개발, 제조 및 수출 촉진을 위한 국영 기업인 로스텍(Rostec)의 총책임자로 임명되었습니다.", "로스텍의 CEO로서 체메조프는 러시아 방위 산업에서 중추적인 역할을 하며 국가의 군사 역량과 우크라이나에서의 활동에 기여하는 기업을 감독합니다.", "미국 재무부는 오늘 행정명령(E.O.) 13661에 따라 7명의 러시아 정부 관리와 17개 기관을 지정했습니다. E.O. 13661은 러시아 정부 관리 및 러시아 고위 정부 관리를 소유하거나 통제하는, 또는 그를 위해 행동하거나 지원을 제공한 개인 또는 기관에 대한 제재를 승인합니다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 2, "politician": "블라디미르 푸틴", "policy": "금융 부문 영향력 행사 및 제재 회피", "industry_or_sector": "금융", "companies": ["Bank Rossiya"], "impact_description": "뱅크 로시야는 '푸틴의 개인 은행'으로 불리며 유리 코발추크 등 올리가르히가 소유. 2014년 미국 제재 후 푸틴이 고객 보호를 위해 개입했으며, 이고리 안드레이브는 뇌물 수수로 8.5년 형을 선고받음.", "impact_result": {"label": "PARTIALLY_SUPPORTED", "score": 0.7, "reasoning": "소스 1은 뱅크 로시야가 '푸틴의 개인 금고'로 불리며 유리 코발추크가 이사회 의장이라는 점과, 이고리 안드레이브 부행장이 뇌물 수수 혐의로 8.5년 형을 선고받았다는 내용을 명확히 뒷받침합니다. 또한 2014년 크림반도 합병 이후 뱅크 로시야가 제재를 받았다는 내용도 확인됩니다. 그러나 푸틴이 고객 보호를 위해 개입했다는 내용은 제공된 출처에서 찾을 수 없습니다.", "evidence_spans": ["[Source 1] Investigative journalists say the U.S. government refers to Bank Rossiya, where close Putin ally Yury Kovalchuk chairs its board, as “Putin’s personal cashbox.”", "[Source 1] Bank Rossiya was sanctioned following Russia’s annexation of Crimea in 2014 because of its close links to businessmen seen as personal allies of President Vladimir Putin.", "[Source 1] A judge in St. Petersburg has sentenced Igor Andreev, the vice president of Bank Rossiya, to eight and a half years in prison on charges of bribery, the court’s press service said Monday."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "소스 1은 블라디미르 푸틴 대통령의 개인 금고로 불리는 러시아 은행(Bank Rossiya)의 부회장이 뇌물 수수 혐의로 투옥된 사건을 다루며, 이 은행이 푸틴 대통령의 측근들과의 긴밀한 관계로 인해 제재를 받았음을 명시합니다. 이는 푸틴 대통령이 금융 부문에 영향력을 행사하고 제재와 관련된 상황에 연루되어 있음을 보여줍니다. 소스 2는 미국 재무부가 러시아 정부 관리 및 단체에 대한 제재를 발표한 보도 자료로, 푸틴 대통령이 임명한 관리들과 그의 측근들이 제재 대상에 포함되었음을 언급하며 금융 제재 회피 및 영향력 행사와 직접적으로 관련됩니다.", "evidence_spans": ["Bank Rossiya는 블라디미르 푸틴 대통령의 개인적인 동맹으로 간주되는 사업가들과의 긴밀한 관계 때문에 2014년 러시아의 크림반도 합병 이후 제재를 받았습니다.", "수사 기자들은 푸틴 대통령의 측근인 유리 코발추크가 이사회 의장을 맡고 있는 러시아 은행을 미국 정부가 \"푸틴의 개인 금고\"라고 부른다고 말합니다.", "미국 재무부는 오늘 행정명령(E.O.) 13661에 따라 7명의 러시아 정부 관리와 17개 단체를 지정했습니다. E.O. 13661은 러시아 정부 관리 및 러시아 고위 정부 관리에게 소유되거나 통제되거나, 그를 위해 행동했거나, 물질적 또는 기타 지원을 제공한 개인 또는 단체에 대한 제재를 승인합니다.", "세르게이 체메조프는 푸틴 대통령의 신뢰받는 동맹입니다.", "이고르 세친은 블라디미르 푸틴에게 절대적인 충성심을 보여주었습니다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 3, "politician": "블라디미르 푸틴", "policy": "에너지 수출 확대 및 경제적 안정성 유지", "industry_or_sector": "에너지", "companies": ["OPEC+"], "impact_description": "푸틴은 서방의 제재에도 러시아 에너지 부문이 안정적이라고 주장하며, OPEC+ 데이터에 따르면 원유 생산량은 전쟁 전 대비 0.5백만 배럴/일 감소했으나 9.3백만 배럴/일을 유지.", "impact_result": {"label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 유일한 출처는 404 페이지 오류로, 내용이 없어 영향 설명을 평가할 수 없습니다.", "evidence_spans": [], "error_type": "PAGE_LOAD_ERROR"}, "attribution_result": {"label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 소스 페이지가 404 오류 페이지로, 실제 기사 내용을 확인할 수 없어 관련성을 판단하기에 정보가 충분하지 않습니다.", "evidence_spans": [], "error_type": "PAGE_LOAD_ERROR", "politician_mentioned": false, "policy_topic_mentioned": false}}], "gold_eval": {"similarity_score": 0.6, "reasoning": "두 보고서는 블라디미르 푸틴의 에너지 및 방위 산업 영향력을 공통적으로 다루며 가스프롬과 로스네프트를 언급합니다. 그러나 gold_report는 우크라이나 침공 이후 군수산업 특수와 수입대체 정책에 따른 국내 제조업 성장을 강조하는 반면, model_report는 금융 부문 영향력과 제재 회피, OPEC+를 통한 에너지 수출 안정성 유지에 더 중점을 둡니다. 다루는 정책과 기업의 범위, 그리고 설명의 초점에서 차이가 있습니다.", "model_unique_points": ["뱅크 로시야를 통한 금융 부문 영향력 행사 및 제재 회피 시도.", "로스테크 등 방위 산업 통제 및 세르게이 체메조프와 같은 인물과의 관계.", "OPEC+를 언급하며 에너지 수출 확대 및 경제적 안정성 유지 주장."], "gold_unique_points": ["우크라이나 침공 이후 칼라시니코프 콘체른, 우랄바곤자보드 등 방위산업체의 생산량 급증 및 특수.", "서방 제재에 대응한 수입대체 정책으로 얀덱스, 로스트셀마쉬 등 국내 IT·농업 기업의 성장."]}}} +{"query": "Narendra Modi", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "Narendra Modi", "policy": "Make in India", "industry_or_sector": "제조업", "companies": ["Samsung", "Foxconn", "Tata Group"], "impact_description": "Make in India 정책은 제조업, 자동차, 전자제품, 제약, 방위산업, 재생에너지, 항공우주, 섬유 등 25개 산업을 대상으로 하며, 국내 제조업 촉진, FDI 유치, 일자리 창출을 목표로 합니다. 삼성, 폭스콘, 타타 그룹 등이 PLI 인센티브 및 주정부 지원을 통해 인도 내 생산 시설을 확장했습니다.", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제시된 출처들은 Make in India 정책의 목표(국내 제조업 촉진, FDI 유치, 일자리 창출)와 대상 산업(25개 산업)을 명확히 설명하고 있습니다. 또한, 삼성, 폭스콘, 타타 그룹이 PLI 인센티브 및 주정부 지원을 통해 인도 내 생산 시설을 확장했다는 내용이 여러 출처에서 구체적으로 언급되어 있습니다.", "evidence_spans": ["[Source 1] The primary objective of this initiative is to promote domestic manufacturing, attract foreign direct investment (FDI), and boost job creation in various sectors. Under the 'Make in India' program, the government has identified 25 key sectors, including automobiles, textiles, pharmaceuticals, electronics, defense manufacturing, renewable energy, and aerospace, among others.", "[Source 2] Production Linked Incentive (PLI) Schemes: Over USD 26 billion has been announced for 14 key manufacturing sectors to boost India’s manufacturing and exports.", "[Source 4] 삼성은 노이다 공장 증설을 통해 1250억루피 규모 인센티브를 확보했고, LGㆍ기아 역시 생산설비 투자를 확대하며 세제 혜택을 받고 있다.", "[Source 5] In a significant boost to India’s ‘ Make in India ‘ initiative and the Production-Linked Incentive (PLI) scheme, Taiwanese contract manufacturing giant Foxconn has seen its business in India soar to $10 billion through the last fiscal year. Foxconn is a major Apple supplier globally and has invested 1.4 billion dollars in India to date, with more to come.", "[Source 6] The Indian government has implemented Production Linked Incentive (PLI) schemes across various sectors, including electronics, to bolster exports and integrate Indian manufacturers into the global supply chain while reducing reliance on imports.", "[Source 8] 애플 CEO 팀 쿡은 2025년 1분기에 폭스콘의 15억 달러 투자를 통해 미국 시장용 아이폰 생산을 확대할 계획이라고 발표했습니다. \"자립하는 인도(Self-Reliant India)\"라는 비전 아래 2020년 출범한 PLI 제도는 전자, 제약, 통신 등 14개 분야에 4~6%의 보조금을 지원하여 애플과 삼성과 같은 거대 기업들을 유치하고 있습니다.", "[Source 9] Tata's rapid moves in the high-tech manufacturing space herald the rise of a national champion in two sectors supported by heavy government subsidies under the Production Linked Incentive (PLI) scheme. Its new ventures will boost the government's Make-in-India programme, with the logo of a lion, which the government has been promoting to turn India into a manufacturing powerhouse.", "[Source 10] Tata Electronics, a subsidiary of Tata Sons Pvt. Ltd., is setting a new standard in India’s tech landscape with a massive $11 billion investment. This ambitious move will establish the country’s first semiconductor fabrication plant in Dholera, Gujarat, in partnership with Taiwan-based semiconductor company Powerchip Semiconductor Manufacturing Corporation (PSMC)."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "제공된 자료들은 나렌드라 모디 총리가 2014년에 '메이크 인 인디아' 정책을 시작했으며, 이 정책이 인도의 제조업을 활성화하고 외국인 투자를 유치하는 데 중요한 역할을 하고 있음을 명확하게 보여줍니다. 여러 기사에서 모디 총리가 이 정책과 관련하여 직접 언급되거나 그의 정부가 정책을 추진하는 주체로 나타납니다.", "evidence_spans": ["Make in India는 2014년 나렌드라 모디 총리가 국내 제조업 부문을 활성화하고 국가에 대한 투자를 늘리기 위해 시작한 인도 정부 계획입니다.", "모디 총리와 함께 지난주 인도 방문 중 여러 고위 지도자들을 만난 류 회장은 타밀나두, 카르나타카, 텔랑가나에 대한 폭스콘의 투자를 논의했습니다.", "나렌드라 모디 정부는 로이터 통신 조사 결과 폭스콘이 스리페룸부두르 아이폰 조립 공장에서 기혼 여성을 의도적으로 채용에서 제외했다는 사실이 밝혀진 후 타밀나두 정부에 상세한 노동 보고서를 요청했습니다.", "이러한 국내 대기업의 잇따른 진출은 인도 정부가 ‘메이크 인 인디아(Make in India)’ 정책 아래 외국인 투자 유치와 현지 제조업 육성에 총력을 기울이는 데 따른 것이다.", "타타 그룹의 새로운 벤처는 정부가 인도를 제조 강국으로 만들기 위해 홍보해 온 사자 로고의 '메이크 인 인디아' 프로그램을 활성화할 것입니다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 1, "politician": "Narendra Modi", "policy": "Digital India", "industry_or_sector": "디지털 인프라", "companies": ["Reliance Jio", "Paytm", "Google"], "impact_description": "디지털 인도 이니셔티브는 통신, 핀테크, IT/인프라 분야를 중심으로 디지털 인프라, 거버넌스, 시민 역량 강화를 목표로 합니다. Reliance Jio는 5G 및 BharatNet 인프라 구축으로 연결성 목표를 지원했으며, Paytm은 UPI를 통해 디지털 결제 혁신을 주도했습니다.", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 모든 출처는 영향 설명의 핵심 내용을 명확하게 뒷받침합니다. 디지털 인도 이니셔티브의 목표(디지털 인프라, 거버넌스, 시민 역량 강화, 통신, 핀테크, IT/인프라 분야 중심)는 여러 출처에서 상세히 설명됩니다. Reliance Jio가 5G 인프라 구축과 연결성 목표를 지원했다는 내용은 Jio 관련 출처에서 5G 네트워크 구축 및 광범위한 연결성 제공에 대한 정보로 확인됩니다. Paytm이 UPI를 통해 디지털 결제 혁신을 주도했다는 내용 또한 Paytm 및 UPI 관련 출처에서 명확하게 언급됩니다.", "evidence_spans": ["[Source 10] Digital India flagship initiative launched by the Government of India to provide government services electronically to citizens through improved online infrastructure and connectivity. ... It consists of three core components: the development of secure and stable digital infrastructure, delivering government services digitally, and universal digital literacy.", "[Source 11] In July 2015, the Indian government launched the ‘Digital India’ initiative to improve online infrastructure and increase internet accessibility among citizens (for example, linking rural areas to high-speed internet networks); thereby, empowering the country to become more digitally advanced. The initiative encompasses the following three key objectives: Establish a secure and stable digital infrastructure Deliver digital services Ensure that every citizen has access to the Internet ... wherein core digital sectors such as information technology & business process management, digital communication services and electronics manufacturing are likely to double their GDPs to Rs. 30,42,350 – 37,27,950 crore (US$ 355-435 billion) by 2025.", "[Source 2] Jio has ushered the digital revolution in India with 4G-LTE and is now building the best 5G network delivering the best-in-class experience and widest 4G/ 5G coverage across India. ... Jio has built a mobility network with over 99% population coverage and reaches ~25 million homes with fiber.", "[Source 3] The Company has invested in new 5G Standalone Architecture to provide its users with unparalleled digital experiences. Jio’s indigenously developed cloud native 5G stack is software defined and digitally managed, with support for even advanced features like Quantum Security. Jio is deploying this on its own network which makes it uniquely positioned to offer the 5G stack to global telecom companies and provide private 5G solutions for Indian enterprises.", "[Source 4] UPI, launched by the National Payments Corporation of India (NPCI) in 2016, has emerged as the backbone of India’s digital revolution, making financial transactions seamless, fast, and inclusive. ... UPI integration into apps like Google Pay, PhonePe, and Paytm.", "[Source 6] One of the pioneers of UPI is Paytm, which has played a crucial role in the growth of digital payments in India. Paytm has been at the forefront of innovation in digital payments and has helped in the evolution of UPI from person-to-person transactions to personal merchant transactions."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "제공된 자료들은 나렌드라 모디 총리가 인도의 디지털 인프라 및 연결성을 개선하기 위해 2015년 7월 1일에 \"디지털 인디아\" 이니셔티브를 시작했음을 명확하게 보여줍니다. 여러 출처에서 이 정책의 목표, 구성 요소 및 인도 사회에 미치는 영향을 자세히 설명하고 있습니다.", "evidence_spans": ["Indian Prime Minister Narendra Modi launched the program on 1 July 2015.", "Digital India is a campaign initiated by launched by Hon’ble Prime Minister of India, Shri Narendra Modi, the Government of India under the Ministry of Electronics and Information Technology. Launched by the prime minister Narendra Modi in New Delhi", "Yes, the Unified Payment Interface (UPI) is a major initiative under the Digital India program, led by the Ministry of Electronics & Information Technology (MeitY), Government of India."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 2, "politician": "Narendra Modi", "policy": "경제 성장 정책", "industry_or_sector": "인프라 및 통신", "companies": ["Adani Group", "Reliance Industries", "Tata Sons", "Bharti Airtel", "Mahindra Group"], "impact_description": "모디 총리는 아다니 그룹, 릴라이언스 인더스트리즈, 타타 그룹, 바르티 에어텔, 마힌드라 그룹 등 주요 기업 리더들과 경제 성장 및 예산 논의를 진행했습니다. 아다니 그룹은 인프라 분야에서, 릴라이언스 Jio는 디지털 인도 정책과 연계되어 성장했습니다.", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 출처들은 임팩트 설명의 두 가지 주요 내용을 모두 명확하게 뒷받침합니다. 첫째, 모디 총리가 아다니 그룹, 릴라이언스 인더스트리즈, 타타 그룹, 바르티 에어텔, 마힌드라 그룹 등 주요 기업 리더들과 경제 성장 및 예산 논의를 진행했다는 내용은 출처 1, 3, 4에서 명확히 언급됩니다. 둘째, 아다니 그룹이 인프라 분야에서, 릴라이언스 Jio(암바니)가 디지털 인도 정책과 연계되어 성장했다는 내용은 출처 2에서 모디 정부의 인프라 및 디지털 연결성 촉진과 아다니 및 암바니의 역할에 대한 언급을 통해 뒷받침됩니다.", "evidence_spans": ["[Source 1] PM Modi meets business leaders; Ambani, Tata, Adani, Mittal, Mahindra, attend event", "[Source 1] Prime Minister Narendra Modi on Monday interacted with India's top business stalwarts and discussed how to improve economic growth and create new job opportunities.", "[Source 2] to spur growth, the Modi government has begun a massive infrastructure transformation by spending billions on building roads, ports, airports and railways. It is also heavily promoting digital connectivity, which can improve both commerce and daily life. “Both Adani and Ambani have become key allies as the country embarks on this revolution,” it said.", "[Source 2] Investors have been cheering the duo’s ability to adroitly bet on sectors prioritized for development by Prime Minister Narendra Modi", "[Source 3] Prime Minister Narendra Modi on Monday met top industry leaders, including Chairman Emeritus of Tata Sons Ratan Tata, Adani Group founder Gautam Adani, JSW Group chairman Sajjan Jindal, and Reliance Industries’ Ltd chairman Mukesh Ambani, among others, ahead of the Union Budget for 2020-21.", "[Source 4] PM Modi meets India's top business leaders to discuss reviving economy, biz sentiment The attendees included Mukesh Ambani, Sunil Mittal, Anand Mahindra, Ratan Tata, Gautam Adani, Venu Srinivasan, Sajjan Jindal, Anil Agarwal among others."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "모든 출처는 나렌드라 모디 총리가 경제 성장 정책, 특히 인프라 투자 및 기업 리더들과의 협력을 통해 경제를 활성화하고 일자리를 창출하려는 노력에 대해 직접적으로 다루고 있습니다.", "evidence_spans": ["Prime Minister Narendra Modi on Monday interacted with India's top business stalwarts and discussed how to improve economic growth and create new job opportunities.", "the Modi government has begun a massive infrastructure transformation by spending billions on building roads, ports, airports and railways. It is also heavily promoting digital connectivity, which can improve both commerce and daily life.", "The Prime Minister has been meeting industry leaders across various sectors to seeking feedback and suggestions to boost economic growth.", "Prime Minister Narendra Modi on Monday met India's top 10 business leaders... to brainstorm on reviving the economy and business sentiments, creating jobs and pushing growth."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}], "gold_eval": {"similarity_score": 0.7, "reasoning": "두 보고서 모두 'Make in India'와 'Digital India' 정책을 나렌드라 모디 총리의 주요 영향력으로 다루며, 폭스콘, 타타 그룹, 릴라이언스 Jio, Paytm 등 핵심 기업들을 공통적으로 언급합니다. 하지만 gold_report는 GST 도입과 화폐개혁의 구체적인 경제적 영향을 상세히 설명하는 반면, model_report는 더 많은 기업을 포함하고 주요 기업 리더들과의 회의를 통한 전반적인 경제 성장 정책을 추가적으로 다룹니다.", "model_unique_points": ["주요 기업 리더들과의 회의를 통한 전반적인 '경제 성장 정책'을 별도의 영향력 사슬로 제시하며, 아다니 그룹, 릴라이언스 인더스트리즈, 바르티 에어텔 등 더 많은 기업을 언급합니다.", "'Make in India' 정책과 관련하여 삼성, 구글 등 더 다양한 기업을 포함하고, 25개 산업을 대상으로 한다는 점을 명시합니다."], "gold_unique_points": ["GST 도입 및 세제 개혁 정책과 그에 따른 물류 및 소비재 산업(Dabur, Mahindra Logistics)의 변화를 상세히 다룹니다.", "화폐개혁(디모네타이제이션)이 디지털 결제 시장(Paytm)에 미친 영향과 중소상인의 어려움 등 정책의 구체적인 득실을 설명합니다."]}}} +{"query": "Rishi Sunak", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "Rishi Sunak", "policy": "보수당 지도부 기부 및 로비 활동", "industry_or_sector": "에너지, 기술, 금융 서비스", "companies": ["Shell", "DeepMind", "Standard Chartered"], "impact_description": "리시 수낵의 보수당 지도부 시절 기부자로 에너지 기업(Shell), 기술 기업(DeepMind), 금융 기관(Standard Chartered)이 포함되었으며, 로비스트와의 공식 회의 기록이 공개됨", "impact_result": {"label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 유일한 출처는 쿠키 동의 페이지이며, 리시 수낵, 정치 기부금, 언급된 기업(Shell, DeepMind, Standard Chartered) 또는 로비스트 회의 기록에 대한 어떠한 정보도 포함하고 있지 않습니다. 따라서 영향 설명의 진위 여부를 평가할 충분한 정보가 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT"}, "attribution_result": {"label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 출처는 쿠키 동의 페이지로, 리시 수낙이나 보수당 지도부 기부 및 로비 활동에 대한 어떠한 정보도 포함하고 있지 않습니다. 정책 귀속을 판단하기에 충분한 정보가 없습니다.", "evidence_spans": [], "error_type": "TOO_SHORT", "politician_mentioned": false, "policy_topic_mentioned": false}}, {"chain_index": 1, "politician": "Rishi Sunak", "policy": "경제 정책(미니 예산 철회, 투자 구역)", "industry_or_sector": "금융 서비스", "companies": ["hedge funds", "private equity firms"], "impact_description": "수낵의 TCI 재직 및 재무장관 시절 헤지펀드/사모펀드와의 문서화된 비직접적 연계 존재", "impact_result": {"label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 유일한 출처 [Source 1]은 페이지 로드 오류로 인해 내용을 확인할 수 없습니다. 따라서 영향 설명의 사실 여부를 평가할 충분한 정보가 없습니다.", "evidence_spans": [], "error_type": "PAGE_LOAD_ERROR"}, "attribution_result": {"label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 소스 텍스트가 비어 있어 정치인과 정책 간의 관련성을 판단할 수 없습니다.", "evidence_spans": [], "error_type": "PAGE_LOAD_ERROR", "politician_mentioned": false, "policy_topic_mentioned": false}}, {"chain_index": 2, "politician": "Rishi Sunak", "policy": "경제 정책(미니 예산 철회, 투자 구역)", "industry_or_sector": "금융 서비스, 부동산, 제조업", "companies": ["financial services", "real estate", "manufacturing sectors"], "impact_description": "수낵의 경제 정책(미니 예산 철회, 투자 구역)이 금융 서비스, 부동산, 제조업 분야에 직접적 영향", "impact_result": {"label": "NOT_ENOUGH_INFO", "score": 0.0, "reasoning": "제공된 유일한 출처(Source 1)가 로드되지 않았거나 내용이 비어 있어 영향 설명을 평가할 충분한 정보가 없습니다.", "evidence_spans": [], "error_type": "PAGE_LOAD_ERROR"}, "attribution_result": {"label": "NOT_ENOUGH_INFO", "score": 0.1, "reasoning": "제공된 소스 1의 페이지 로드에 실패하여 내용을 확인할 수 없습니다.", "evidence_spans": [], "error_type": "PAGE_LOAD_ERROR", "politician_mentioned": false, "policy_topic_mentioned": false}}], "gold_eval": {"similarity_score": 0.4, "reasoning": "두 보고서는 리시 수낙의 정치·경제적 영향력을 분석한다는 점에서 공통된 목적을 가지며, influence_chains와 같은 유사한 구조를 사용합니다. 또한, AI/기술 및 금융 분야, 그리고 DeepMind와 같은 일부 기업이 공통적으로 언급됩니다. 그러나 gold_report는 코로나19 고용유지 지원, AI·반도체 혁신 지원, 금융규제 개혁 등 구체적인 정책과 그로 인한 기업 및 산업에 대한 심층적인 영향 분석에 초점을 맞추는 반면, model_report는 보수당 지도부 기부 및 로비 활동, TCI 재직 시절의 연계, 미니 예산 철회와 같은 경제 정책 등 정치 자금 및 간접적인 경제적 연관성에 더 중점을 둡니다. model_report의 일부 influence_chains에서는 'companies' 필드에 산업 분야를 나열하는 구조적 차이도 보입니다. 전반적으로 gold_report가 정책과 산업/기업 간의 연관성 및 경제적 영향에 대해 더 상세하고 구체적인 설명을 제공합니다.", "model_unique_points": ["리시 수낙의 보수당 지도부 시절 Shell, DeepMind, Standard Chartered 등 에너지, 기술, 금융 기업으로부터의 기부 및 로비 활동.", "TCI 재직 및 재무장관 시절 헤지펀드/사모펀드와의 문서화된 비직접적 연계.", "미니 예산 철회 및 투자 구역과 같은 경제 정책이 금융 서비스, 부동산, 제조업 분야에 미친 영향."], "gold_unique_points": ["코로나19 팬데믹 대응을 위한 대규모 고용유지 지원(Furlough) 정책과 British Airways, Marks & Spencer 등 기업의 고용 유지 효과.", "AI 안전 서밋 개최 및 반도체 연구 투자 등 AI·반도체 혁신 지원 정책과 DeepMind, Graphcore 같은 첨단기업에 미친 영향.", "브렉시트 이후 런던 금융 시장 경쟁력 강화를 위한 금융규제 개혁(에든버러 개혁)과 Barclays, Revolut 등 금융/핀테크 기업에 대한 영향.", "각 정책의 시장/경제적 영향에 대한 구체적이고 심층적인 설명과 상세한 근거 자료."]}}} +{"query": "Emmanuel Macron", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "에마뉘엘 마크롱", "policy": "녹색 에너지 전환", "industry_or_sector": "원자력 에너지", "companies": ["EDF"], "impact_description": "프랑스의 원자력 에너지 정책 지원 및 인프라 유지", "impact_result": {"label": "PARTIALLY_SUPPORTED", "score": 0.6, "reasoning": "소스들은 프랑스가 역사적으로 원자력 에너지에 대한 강력한 정부 지원을 받았으며, 현재도 전력의 60% 이상을 원자력에 의존하고 있음을 보여줍니다. 노후화된 원자력 발전소의 교체 필요성과 원자로 가동 중단이 석탄 발전소 폐쇄 결정을 지연시킨 사례는 원자력 인프라의 유지 및 지속적인 운영이 프랑스 에너지 정책에서 중요한 부분임을 시사합니다. 그러나 마크롱 정부의 최신 정책들이 재생에너지 전환에 더 초점을 맞추고 있어, 원자력 에너지에 대한 명시적인 '정책 지원'이나 '인프라 유지'에 대한 구체적인 새로운 계획은 명확히 제시되지 않습니다. 따라서 부분적으로만 뒷받침됩니다.", "evidence_spans": ["[Source 1] 프랑스는 총 에너지 소비량의 75%를 공급하는 58개 원자력 발전소 덕분에 유럽에서 가장 낮은 에너지 비용과 낮은 탄소 배출량을 자랑하는 부러운 위치에 있습니다.", "[Source 1] 프랑스의 원자력 발전 경험은 저렴한 저탄소 에너지를 제공하여 다른 많은 국가들보다 앞서 나가는 \"성공 사례\"로 선전되어 왔습니다.", "[Source 1] 그러나 프랑스 원자력 발전소는 예상 수명 40년으로 설계되었으며, 평균 수명은 현재 35년입니다. ... 따라서 정부는 원자력 발전소의 노후화된 설비를 갱신할 것인지, 아니면 재생에너지에 투자할 것인지, 또는 이 둘을 혼합하여 지원할 것인지 선택에 직면해 있습니다.", "[Source 2] 프랑스는 전력의 60% 이상을 원자력 에너지에 의존하고 있습니다. 이는 다른 어떤 나라보다 높은 수치입니다.", "[Source 2] 두 석탄 발전소는 당초 작년까지 폐쇄될 예정이었으나, 우크라이나 전쟁으로 인한 에너지 위기와 프랑스 원자로의 여러 문제로 인한 가동 중단으로 정부가 결정을 연기했습니다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "모든 출처는 에마뉘엘 마크롱 대통령이 프랑스의 녹색 에너지 전환 및 기후 변화 대응을 위한 정책과 계획을 발표하고 추진하는 내용을 직접적으로 다루고 있습니다. 마크롱 대통령은 탄소 중립, 재생 에너지 확대, 화석 연료 의존도 감소, 전기차 보급 등 녹색 에너지 전환의 핵심 주체로 등장합니다.", "evidence_spans": ["Since becoming President of France in May 2017, Emmanuel Macron has asserted French leadership in the global fight against climate change. In July 2017 Macron announced an ambitious Climate Plan , with the goal among other things of “carbon neutrality by 2050” and ending fossil-fuel based energy production, including shale gas or other exploration or development of hydrocarbon resources. The Plan sets a target of 32% renewables in France’s energy arsenal by 2030.", "President Emmanuel Macron on Monday unveiled plans to reduce greenhouse gas emissions and meet the country’s climate-related commitments within the next seven years, including via reducing dependency on fossil fuels and boosting electric car use.", "The French government presented a green industry bill including tax credits and targeted bonuses for electric vehicles, seeking to rival US support for its businesses in the shift to an economy with lower-carbon emissions... President Emmanuel Macron has said would favor cars made in Europe."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 1, "politician": "에마뉘엘 마크롱", "policy": "녹색 에너지 전환", "industry_or_sector": "녹색 수소", "companies": ["TotalEnergies"], "impact_description": "녹색 수소 및 재생에너지 프로젝트 지원을 위한 보조금 및 세제 혜택", "impact_result": {"label": "PARTIALLY_SUPPORTED", "score": 0.7, "reasoning": "제공된 자료들은 프랑스 정부와 유럽연합이 녹색 수소 및 재생에너지 프로젝트를 지원하기 위한 보조금, 운영 지원, 투자 지원, 직접 보조금 등 다양한 지원 메커니즘을 시행하고 있음을 명확히 보여줍니다. 이는 영향 설명의 \"보조금 및 세제 혜택\" 부분을 뒷받침합니다. TotalEnergies는 재생에너지 분야에서 유리한 조건을 위해 로비 활동을 하고 있지만, 이 회사가 이러한 특정 보조금 및 세제 혜택을 직접적으로 받았거나 수혜 대상이라는 명시적인 언급은 자료에 없습니다. 자료들은 일반적으로 \"수소 산업\", \"투자 기업\", \"유럽 플레이어\"를 언급합니다.", "evidence_spans": ["[Source 5] 수소 산업은 이제 개발 속도를 높이기 위해 정부 지원을 받을 것입니다. 프랑스 정부는 녹색 수소 생산을 위한 1GW의 전해조 개발을 위해 40억 유로 계획을 발표했습니다. ... 공공 지원은 재생 또는 저탄소 수소 생산 비용과 탄소화된 반대 사실 생산 가격 간의 차이를 보상하는 차액 계약(CfD) 형태의 운영 지원(aide au fonctionnement)으로 구성될 수 있습니다. 또는 전해조 자금 조달을 위한 운영 지원과 투자 지원(aide à l’investissement)의 조합으로 구성될 수 있습니다.", "[Source 7] 유럽 위원회는 바이오매스 및 재생 가능한 수소의 에너지 및 연료 생산 사용에 투자하는 기업을 지원하기 위한 9억 유로 규모의 프랑스 계획을 승인했습니다... 이 조치에 따라 지원은 적격 투자 비용의 일부를 충당하는 직접 보조금 형태로 제공될 것입니다.", "[Source 2] 재생에너지: 미래 해상 풍력 에너지 입찰의 매력을 높이는 방안에 대해 공공 당국의 주의를 환기... 재생에너지 프로젝트 개발을 위한 관심 표명 요청 시작을 가능하게 함"], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "소스 4에서 에마뉘엘 마크롱 대통령이 프랑스의 탈탄소 수소 전략인 '프랑스 2030 계획'의 주요 추진자로서 직접 언급되고 인용되었습니다. 다른 소스들도 프랑스의 녹색 에너지 전환 및 녹색 수소 지원 메커니즘에 대해 상세히 다루고 있어, 정치인과 정책 모두 기사들의 핵심 주제입니다.", "evidence_spans": ["\"By 2030, France must be able to count on its soil at least two giga-factories of electrolyzers in order to massively produce hydrogen and all the technologies needed for its deployment ” - Emmanuel Macron, President of France", "Further to this, in October 2021, the French President Emmanuel Macron, announced Plan France 2030. It is an investment plan to address great challenges in France, in particular the ecological transition. Out of the 10 objectives listed in the plan, the second one is to become a decarbonised hydrogen leader.", "The French government has announced a €4 billion plan to develop 1GW of electrolysers to produce green hydrogen."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 2, "politician": "에마뉘엘 마크롱", "policy": "녹색 에너지 전환", "industry_or_sector": "전기차", "companies": ["Renault", "ACC (Automotive Cells Company)"], "impact_description": "전기차 배터리 생산 및 국내 생산 목표 지원", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 자료들은 프랑스 정부가 전기차 배터리 생산 및 국내 전기차 생산 목표를 지원하고 있음을 명확히 보여줍니다. 소스 2는 마크롱 대통령이 2027년까지 프랑스 북부에 4개의 배터리 공장을 개설하고 100만 대의 전기차를 생산할 계획이며, 배터리 및 전기차 생산 분야에 세금 공제를 제공할 것이라고 언급합니다. 소스 3은 녹색 전환을 위한 지원책으로 배터리 투자에 대한 세금 공제와 유럽산 전기차를 선호하는 보너스 변경을 제시하며, 아시아 공장 개발에 공적 자금을 지원하지 않을 것이라고 명시하여 국내 생산 지원 의지를 보여줍니다. 비록 특정 회사(Renault, ACC)가 직접 언급되지는 않았지만, 전기차 산업 전반에 대한 국내 생산 및 배터리 생산 지원 정책은 해당 회사들과 산업에 긍정적인 영향을 미칠 것입니다.", "evidence_spans": ["[Source 2] Macron said Monday that the government would unveil a state-sponsored system in November to allow households with modest incomes to lease European-made electric cars for about 100 euros ($106) per month. That will start with a few dozens of thousands of cars next year, he added. By 2027, he said, France will have produced at least 1 million electric vehicles and opened four battery plants in the north of the country, he said. In addition, 13 projects of commuter trains around several big cities will receive a 700 million euro package from the state to enable people now taking their car to use public transports instead.", "[Source 2] Macron announced earlier this year a series of incentives to support innovative industries and transition towards greener technology. They include tax credits in production areas such as batteries, electric cars, and hydrogen and wind power, as well as accelerating authorization for industrial projects.", "[Source 3] The use of tax credits for investment in solar, wind power, batteries and heat pumps will generate around €23 billion of investment and 40,000 jobs in France between now and 2030, the finance ministry estimates.", "[Source 3] Le Maire said around 40% of the €1.2 billion annual cost of the existing bonus scheme ended up financing output in Asia, while the production of a car in European emits around 45% less carbon. “It’s not our job to finance the development of factories in Asia with public money,” Le Maire said."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "모든 출처는 에마뉘엘 마크롱 대통령이 주도하는 프랑스의 녹색 에너지 전환 정책에 대해 명확하고 직접적으로 다루고 있습니다. 탄소 중립 목표, 재생 에너지 확대, 화석 연료 의존도 감소, 전기차 보급 및 배터리 생산 계획 등 구체적인 정책 내용이 상세히 언급됩니다.", "evidence_spans": ["2017년 5월 프랑스 대통령이 된 이후, 에마뉘엘 마크롱은 기후 변화에 대한 전 세계적인 싸움에서 프랑스의 리더십을 주장했습니다. 2017년 7월 마크롱은 \"2050년까지 탄소 중립\"과 셰일 가스 또는 기타 탄화수소 자원 탐사 및 개발을 포함한 화석 연료 기반 에너지 생산 중단을 목표로 하는 야심찬 기후 계획을 발표했습니다. 이 계획은 2030년까지 프랑스 에너지 무기고에서 재생 에너지 32%를 목표로 합니다.", "에마뉘엘 마크롱 대통령은 월요일 온실가스 배출량을 줄이고 향후 7년 이내에 국가의 기후 관련 약속을 이행하기 위한 계획을 발표했습니다. 여기에는 화석 연료 의존도를 줄이고 전기차 사용을 늘리는 방안이 포함됩니다.", "프랑스 정부는 저탄소 배출 경제로의 전환을 위해 미국 기업 지원에 맞서기 위한 세금 공제 및 전기차에 대한 목표 보너스를 포함하는 녹색 산업 법안을 발표했습니다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 3, "politician": "에마뉘엘 마크롱", "policy": "기술 혁신", "industry_or_sector": "인공지능", "companies": ["Mistral AI", "Iliad", "Orange", "Thales"], "impact_description": "AI 공공-민간 파트너십 및 전문가 양성 지원", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 소스들은 프랑스의 AI 전략이 공공-민간 파트너십을 통해 인공지능 분야에 투자하고, 전문가 양성을 지원한다는 내용을 명확하게 뒷받침합니다. Source 1, 2, 3은 Mistral AI, Iliad, Orange, Thales와 같은 기업들이 공공 및 민간 자금 조달 및 파트너십에 참여하고 있음을 보여줍니다. Source 4는 AI 교육 및 훈련 생태계를 개선하고 AI 인재를 양성하기 위한 다양한 이니셔티브를 상세히 설명합니다.", "evidence_spans": ["[Source 1] The initiative combines public and private funding, with significant contributions from international partners, including the United Arab Emirates (UAE) and Canada. ... French companies like Iliad, Orange, and Thales will also invest heavily in infrastructure. ... Paris-based startup Mistral AI plans its own data center in Essonne, further strengthening domestic AI capabilities.", "[Source 2] Macron’s message as he called on public authorities and industry to support European AI systems... France and Germany have agreed to work towards a new Important Project of Common European Interest (IPCEI) on AI, which he said would “promote the financing of high-impact research, development and first industrial deployment projects in AI technologies.” ... they announced their intention to establish a new public-private partnership with French AI start-up Mistral and German software company SAP", "[Source 3] Germany and France plan to sign a binding agreement with Mistral AI and SAP by mid-2026 to lay the foundation for a strategic public-private partnership to deploy AI native solutions to improve efficiency and transparency of public services.", "[Source 4] Improve the AI education and training ecosystem to develop, retain and attract world-class AI talent; ... The number of graduates at Masters’ level has doubled since 2016 and a new doubling target has been set; The range of training courses, in initial and part-time continuing education, summer or winter schools and executive programmes altogether has increased rapidly in 2019-2021, especially in the 4 Interdisciplinary Institutes of Artificial Intelligence (3IA) created in 2019", "[Source 4] The formation of the Grande Ecole du Numérique ( GEN ): created to support training that helps to integrate people at risk of unemployment to the job market by developing their digital skills;"], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "모든 출처는 에마뉘엘 마크롱 프랑스 대통령이 인공지능(AI) 분야의 기술 혁신을 주도하고 투자하는 프랑스의 전략과 계획에 대해 명확하고 직접적으로 다루고 있습니다. 마크롱 대통령은 AI 이니셔티브의 핵심 인물로 여러 차례 언급됩니다.", "evidence_spans": ["President Emmanuel Macron revealed the plan during an AI-focused global event at the Élysée Palace, underscoring the country’s ambition to become a major player in the field.", "French President Emmanuel Macron’s message as he called on public authorities and industry to support European AI systems, during the Adopt AI Summit in Paris on November 25.", "In March 2018, Emmanuel Macron, the President of the French Republic presented his vision and a 5-year national AI strategy."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 4, "politician": "에마뉘엘 마크롱", "policy": "기술 혁신", "industry_or_sector": "스타트업", "companies": ["Station F"], "impact_description": "정부 지원 스타트업 인큐베이터 운영", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "소스들은 Station F가 스타트업 인큐베이터 역할을 하며, 프랑스 정부 및 기업 파트너십을 통해 지원을 받고 있음을 명확히 보여줍니다. 에마뉘엘 마크롱 대통령이 공식 개관했으며, 정부의 스타트업 지원 미션인 'La French Tech'와도 연관되어 있습니다.", "evidence_spans": ["[Source 1] Station F in Paris stands tall as the world’s largest startup campus.", "[Source 1] Station F was conceived and funded by French telecom billionaire Xavier Niel, and its entrepreneurs benefit from strong governmental and corporate partnerships.", "[Source 1] These relationships allow Station F to provide extensive resources and facilities at affordable rates for its residents, and the startups have support for getting in touch with government agencies to file necessary paperwork.", "[Source 1] La French Tech is the government’s mission for supporting the growth of the French start-up ecosystem, with a presence in France and around the world.", "[Source 1] Housed in a former rail freight depot known as Halle Freyssinet (hence Station “F”), the facility was formally opened by President Emmanuel Macron in 2017.", "[Source 5] Station F, the world’s biggest startup campus, was inaugurated in June by its director Roxanne Varza, its founder Xavier Niel and the French President Emmanuel Macron.", "[Source 5] Station F doesn’t aim at being profitable, its ambition is to help the French startup ecosystem expand."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "소스들은 에마뉘엘 마크롱 대통령이 프랑스의 주요 기술 혁신 및 스타트업 허브인 Station F를 공식적으로 개장했음을 명확히 언급하고 있습니다. Station F와 프랑스 스타트업 생태계에 대한 논의는 기술 혁신 정책과 직접적으로 관련됩니다.", "evidence_spans": ["Housed in a former rail freight depot known as Halle Freyssinet (hence Station “F”), the facility was formally opened by President Emmanuel Macron in 2017.", "Station F, the world’s biggest startup campus, was inaugurated in June by its director Roxanne Varza, its founder Xavier Niel and the French President Emmanuel Macron.", "Station F doesn’t aim at being profitable, its ambition is to help the French startup ecosystem expand.", "La French Tech is the government’s mission for supporting the growth of the French start-up ecosystem, with a presence in France and around the world."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 5, "politician": "에마뉘엘 마크롱", "policy": "STX 조선소 관련 정책", "industry_or_sector": "해운업", "companies": ["MSC (Mediterranean Shipping Company)"], "impact_description": "알렉시스 코흘러의 MSC와의 이해관계 충돌 조사", "impact_result": {"label": "SUPPORTED", "score": 0.95, "reasoning": "모든 출처는 알렉시스 코흘러가 MSC(Mediterranean Shipping Company)와의 이해관계 충돌 혐의로 조사를 받았다는 내용을 명확하게 언급하고 있습니다. 일부 출처에서는 그가 기소되었다는 내용까지 포함하고 있어, 제시된 설명이 강력하게 뒷받침됩니다.", "evidence_spans": ["[Source 1] 반부패 경찰은 프랑스 대통령 에마뉘엘 마크롱의 비서실장이 재무부 공무원 재직 중 이해관계 충돌 규정을 위반했다는 의혹에 대해 예비 조사를 시작했습니다. 이 조사는 알렉시스 코흘러가 스위스-이탈리아 해운 회사와의 연관성을 조사하고 있습니다. 투명성 캠페인 단체인 Anticor는 Kohler가 지중해 해운 회사(MSC)와 가족 관계가 있다는 사실이 Mediapart에 의해 밝혀진 후 소송을 제기했습니다.", "[Source 2] 에마뉘엘 마크롱 대통령실의 최고위 관리가 이해관계 충돌 혐의로 기소되었습니다. 알렉시스 코흘러에 대한 조치는... 코흘러는 그의 어머니의 사촌들이 운영하는 이탈리아-스위스 해운 회사인 지중해 해운 회사(MSC)와의 직업적 및 가족적 연관성으로 인해 기소되었습니다.", "[Source 3] 프랑스 재정 검찰은 반부패 협회가 프랑스 대통령 에마뉘엘 마크롱의 비서실장에 대해 고발한 후 조사를 시작했습니다. 검찰청은 수사관들이 공직 재직 중 이해관계 충돌과 관련된 규칙이 준수되었는지 여부를 조사할 것이라고 밝혔습니다. 프랑스 협회 Anticor는 마크롱의 최측근 중 한 명인 알렉시스 코흘러가 지중해 해운 회사(MSC)와의 관계와 관련하여 영향력 행사 및 이해관계 충돌 혐의를 받고 있다고 의심하고 있습니다.", "[Source 4] 프랑스 반부패 검찰은 월요일 에마뉘엘 마크롱 대통령의 비서실장 알렉시스 코흘러가 이탈리아 해운 대기업 MSC와의 연관성으로 인해 조사를 시작했다고 밝혔습니다. 이 조사는 코흘러가 프랑스 경제부 고위 공무원으로서 마크롱이 장관으로 재직했던 2014년부터 2016년까지 비서실장으로 일했던 경력을 조사할 것입니다. 금융 범죄 검찰청은 코흘러가 MSC에 \"이해관계가 있는 문제\"를 다루었을 수 있으므로 공무원의 이해관계 충돌 규칙을 준수했는지 확인할 것이라고 밝혔습니다."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "기사들은 에마뉘엘 마크롱 대통령의 비서실장인 알렉시 콜레르가 STX 조선소와 관련된 정책 결정에 관여했으며, 그의 가족이 스위스-이탈리아 해운 회사 MSC와 연관되어 이해 상충 의혹을 받았다는 내용을 다루고 있습니다. 이는 마크롱 행정부와 STX 조선소 관련 정책 사이의 직접적인 연관성을 보여줍니다.", "evidence_spans": ["메디아파르트는 또한 콜레르가 2016년 재무부를 떠나 MSC의 임원이 된 후에도 프랑스 국영 조선 회사이자 스위스-이탈리아 해운 회사의 주요 공급업체인 STX의 운명을 논의하기 위한 최소 한 번의 부처 회의에 참여했으며, 동시에 마크롱의 대선 캠페인을 무료로 자문했다고 주장했다.", "콜레르에 대한 의혹은 그가 경제부에서 근무할 당시 프랑스 조선 산업의 마지막 보석인 생나제르의 프랑스 조선소에 영향을 미치는 결정에 관여했을 때와 관련이 있다. MSC는 2017년 한국 그룹 STX가 이탈리아 그룹 핀칸티에리에게 지분을 매각하기 전까지 부분적으로 소유했던 이 전략적으로 중요한 산업 현장의 가장 중요한 고객 중 하나이다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}], "gold_eval": {"similarity_score": 0.55, "reasoning": "두 보고서는 에마뉘엘 마크롱 대통령의 정책이 산업과 기업에 미치는 영향력을 분석한다는 점에서 유사하며, 특히 EDF와 TotalEnergies를 포함한 친환경/녹색 에너지 전환 정책을 공통적으로 다루고 있습니다. 그러나 gold_report는 노동법 개혁, 연금개혁, 그리고 반도체·배터리 산업 육성 등 광범위한 경제 및 산업 정책에 초점을 맞춘 반면, model_report는 녹색 수소, 전기차, 인공지능, 스타트업 등 특정 기술 혁신 분야와 함께 알렉시스 코흘러 수석 보좌관의 이해관계 충돌과 같은 특정 사건을 다루고 있어 내용의 범위와 깊이에서 차이를 보입니다. gold_report는 정책의 경제적 파급 효과를 더 구체적으로 설명하는 경향이 있습니다.", "model_unique_points": ["녹색 수소 및 재생에너지 프로젝트 지원 (TotalEnergies)", "전기차 배터리 생산 및 국내 생산 목표 지원 (Renault, ACC)", "AI 공공-민간 파트너십 및 전문가 양성 지원 (Mistral AI, Iliad, Orange, Thales)", "정부 지원 스타트업 인큐베이터 운영 (Station F)", "STX 조선소 관련 알렉시스 코흘러 수석 보좌관의 이해관계 충돌 조사 (MSC)"], "gold_unique_points": ["노동시장 유연화 및 고용 증진을 위한 노동법 개혁 (TotalEnergies, Carrefour)", "재정 안정 및 노동인구 증가를 위한 연금개혁 (BNP Paribas, AXA)", "반도체·배터리 등 전략 산업 육성을 통한 기술 주권 강화 (STMicroelectronics)"]}}} +{"query": "Volodymyr Zelensky", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "Volodymyr Zelensky", "policy": "반부패 개혁", "industry_or_sector": "미디어/엔터테인먼트", "companies": ["1+1 Media"], "impact_description": "젤렌스키는 2019년 대선 당시 올리가르히 이고르 콜로모이스키의 정치적 지지를 받았으며, 콜로모이스키가 소유한 1+1 미디어(젤렌스키의 쇼를 방영한 TV 네트워크)와의 연결이 확인됨. 그러나 직접적인 금융 거래나 사업 파트너십은 문서화되지 않음.", "impact_result": {"label": "UNSUPPORTED", "score": 0.1, "reasoning": "제공된 출처들은 젤렌스키 대통령의 현재 활동(에너지 인프라 지원 모색, 국방 산업 강화 논의)에 관한 내용을 담고 있습니다. 2019년 대선, 올리가르히 이고르 콜로모이스키의 정치적 지지, 1+1 미디어와의 연관성, 또는 직접적인 금융 거래나 사업 파트너십에 대한 언급은 전혀 없습니다. 따라서 영향 설명의 내용을 뒷받침할 증거가 출처에 없습니다.", "evidence_spans": [], "error_type": "NONE"}, "attribution_result": {"label": "WEAKLY_RELATED", "score": 0.6, "reasoning": "소스들은 볼로디미르 젤렌스키 대통령이 미국의 에너지, 금융 경영진 및 투자 펀드 대표들과 만나 우크라이나의 에너지 시스템 강화, 국방 산업 발전 및 재건 지원에 대해 논의하는 내용을 다루고 있습니다. 젤렌스키 대통령은 명확하게 언급되고 중요한 행위자로 등장하지만, 주어진 정책인 '반부패 개혁'에 대한 내용은 전혀 언급되지 않습니다.", "evidence_spans": ["Ukrainian President Volodymyr Zelensky met with US energy, finance, and insurance executives in New York on Tuesday, seeking investments for his country's energy sector.", "President Volodymyr Zelensky held a meeting with the heads of Ukrainian and international investment funds and business associations. Among the topics discussed were opportunities to strengthen the capabilities of Ukraine's defense-industrial complex..."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": false}}, {"chain_index": 1, "politician": "Volodymyr Zelensky", "policy": "반부패 개혁", "industry_or_sector": "미디어/엔터테인먼트", "companies": ["Kvartal 95"], "impact_description": "젤렌스키는 1997년 엔터테인먼트 제작사 Kvartal 95를 공동 설립했으며, 이 회사는 TV 프로그램, 영화, 코미디 프로그램(예: *Servant of the People*)을 제작함. 대통령 취임 후 소유권이나 재정적 통제에 대한 공개 기록은 없음.", "impact_result": {"label": "UNSUPPORTED", "score": 0.1, "reasoning": "제공된 출처들은 젤렌스키 대통령의 에너지 및 국방 산업 관련 활동에 대해 다루고 있으며, Kvartal 95 또는 그의 엔터테인먼트 경력에 대한 어떠한 정보도 포함하고 있지 않습니다. 따라서 영향 설명의 내용이 출처에 의해 뒷받침되지 않습니다.", "evidence_spans": [], "error_type": "NONE"}, "attribution_result": {"label": "WEAKLY_RELATED", "score": 0.5, "reasoning": "소스들은 볼로디미르 젤렌스키 대통령을 명확하게 언급하고 있지만, 주어진 정책인 '반부패 개혁'에 대한 내용은 포함하고 있지 않습니다. 소스들은 주로 에너지 인프라 지원, 국방 산업 강화, 투자 유치 등 다른 정책 및 경제 활동에 초점을 맞추고 있습니다.", "evidence_spans": ["Ukrainian President Volodymyr Zelensky met with US energy, finance, and insurance executives in New York on Tuesday, seeking investments for his country's energy sector.", "President Volodymyr Zelensky held a meeting with the heads of Ukrainian and international investment funds and business associations. Among the topics discussed were opportunities to strengthen the capabilities of Ukraine's defense-industrial complex..."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": false}}, {"chain_index": 2, "politician": "Volodymyr Zelensky", "policy": "EU 통합 노력", "industry_or_sector": "에너지", "companies": ["DTEK"], "impact_description": "젤렌스키는 2024년 9월 뉴욕에서 미국 에너지, 금융, 보험 임원들과 만나 우크라이나 에너지 인프라 지원을 요청했으며, 이는 EU의 러시아 에너지 제재로 인해 우크라이나 가스 수출업체에 기회가 창출됨. DTEK는 우크라이나 최대 에너지 기업 중 하나임.", "impact_result": {"label": "PARTIALLY_SUPPORTED", "score": 0.7, "reasoning": "소스 1은 젤렌스키 대통령이 2024년 9월 뉴욕에서 미국 에너지, 금융, 보험 임원들과 만나 우크라이나 에너지 인프라 지원을 요청했다는 내용을 명확히 뒷받침합니다. 하지만 소스에는 EU의 러시아 에너지 제재로 인해 우크라이나 가스 수출업체에 기회가 창출되었다는 내용이나 DTEK가 우크라이나 최대 에너지 기업 중 하나라는 내용은 언급되어 있지 않습니다.", "evidence_spans": ["[Source 1] Ukrainian President Volodymyr Zelensky met with US energy, finance, and insurance executives in New York on Tuesday, seeking investments for his country's energy sector.", "[Source 1] \"The primary focus was on preparing Ukraine's energy system for the winter,\" Zelensky said in a post on X. \"We discussed our plans in detail, as well as the possibility of implementing joint projects in the energy sector.\""], "error_type": "NONE"}, "attribution_result": {"label": "WEAKLY_RELATED", "score": 0.6, "reasoning": "기사는 볼로디미르 젤렌스키 대통령이 우크라이나의 에너지 인프라 투자를 유치하기 위한 노력을 주로 다루고 있습니다. 젤렌스키 대통령은 기사의 핵심 인물이지만, \"EU 통합 노력\"이라는 정책은 본문이 아닌 관련 기사 요약 부분에서 간략하게 언급됩니다.", "evidence_spans": ["Ukrainian President Volodymyr Zelensky met with US energy, finance, and insurance executives", "France to provide Ukraine with €200 million to support reconstruction and EU integration, Shmyhal says"], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 3, "politician": "Volodymyr Zelensky", "policy": "반부패 개혁", "industry_or_sector": "미디어/엔터테인먼트", "companies": ["Kvartal 95"], "impact_description": "젤렌스키는 1997년 엔터테인먼트 제작사 Kvartal 95를 공동 설립했으며, 이 회사는 TV 프로그램, 영화, 코미디 프로그램(예: *Servant of the People*)을 제작함. 대통령 취임 후 소유권이나 재정적 통제에 대한 공개 기록은 없음.", "impact_result": {"label": "UNSUPPORTED", "score": 0.1, "reasoning": "제공된 출처들은 젤렌스키 대통령의 에너지 및 국방 산업 관련 활동에 대해 다루고 있으며, Kvartal 95 또는 그의 엔터테인먼트 경력에 대한 어떠한 정보도 포함하고 있지 않습니다. 따라서 영향 설명의 내용이 출처에 의해 뒷받침되지 않습니다.", "evidence_spans": [], "error_type": "NONE"}, "attribution_result": {"label": "WEAKLY_RELATED", "score": 0.5, "reasoning": "소스들은 볼로디미르 젤렌스키 대통령을 명확하게 언급하고 있지만, 주어진 정책인 '반부패 개혁'에 대한 내용은 전혀 다루고 있지 않습니다. 대신 에너지 인프라, 국방 산업 강화, 투자 유치 및 재건과 관련된 다른 정책들을 논의하고 있습니다.", "evidence_spans": ["Ukrainian President Volodymyr Zelensky meets US business representatives in New York on Sept 24.", "President Volodymyr Zelensky held a meeting with the heads of Ukrainian and international investment funds and business associations."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": false}}], "gold_eval": {"similarity_score": 0.4, "reasoning": "두 보고서는 볼로디미르 젤렌스키의 정치·경제적 영향력을 분석하며 '반부패 개혁' 정책과 'DTEK' 기업을 공통적으로 언급합니다. 그러나 gold_report는 서방 군사지원으로 인한 방위산업 특수와 우크라이나 재건 사업에 초점을 맞춰 정책과 기업 간의 연관성 및 경제적 파급 효과를 구체적으로 설명하는 반면, model_report는 젤렌스키의 미디어/엔터테인먼트 산업 배경과 EU 통합 노력을 주요 내용으로 다루며 일부 정책의 경제적 영향 설명이 부족합니다.", "model_unique_points": ["젤렌스키의 과거 미디어/엔터테인먼트 산업(Kvartal 95, 1+1 Media) 활동 및 올리가르히와의 연관성.", "EU 통합 노력이 우크라이나 에너지 산업에 미치는 영향."], "gold_unique_points": ["서방 군사지원 외교를 통한 글로벌 방위산업(Lockheed Martin, BAE Systems)의 경제적 영향.", "PrivatBank 국유화 및 올리가르히(Metinvest) 견제를 포함한 금융/철강 부문의 반부패·재벌 개혁.", "전력·농업 인프라 복구 및 우크라이나 재건 계획(Bechtel)을 통한 건설/전력 산업의 활성화."]}}} +{"query": "Fumio Kishida", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "Fumio Kishida", "policy": "반도체 산업 지원", "industry_or_sector": "반도체 및 첨단 제조", "companies": ["Rapidus"], "impact_description": "Rapidus는 반도체 생산을 위해 정부-민간 자금으로 2.9조 엔을 지원받음", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 출처에 따르면 일본 정부가 라피더스에 대한 누적 지원금으로 총 2조 9천억 엔을 지원하기로 결정했다고 명시되어 있어, 영향 설명의 핵심 내용이 명확하게 뒷받침됩니다.", "evidence_spans": ["[Source 1] 일본 정부는 이미 라피더스에 1조7000억 엔을 지원하기로 결정한 상태로, 추가 지원까지 합하면 누적 지원금은 총 2조9000억 엔(약 27조3000억 원)에 이른다."], "error_type": "NONE"}, "attribution_result": {"label": "WEAKLY_RELATED", "score": 0.65, "reasoning": "제공된 기사는 일본 정부가 반도체 산업, 특히 라피더스에 대규모 추가 지원을 하는 내용을 다루고 있어 정책 주제와 매우 밀접하게 관련됩니다. 그러나 후미오 기시다 총리의 이름은 기사 본문에 명시적으로 언급되지 않았습니다. 일본 정부의 정책으로 설명되지만, 특정 정치인과의 직접적인 연관성은 부족합니다.", "evidence_spans": ["일본 정부가 자국의 정부-민간 합작 반도체 파운드리(위탁생산) 기업 라피더스에 약 11조 원을 추가 지원한다고 21일 밝혔다.", "일본 경제산업성은 이날 2027 회계연도(2027년 4월 ~2028 년 3월)까지 1조1800억 엔(약 11조1000억 원) 규모의 라피더스 지원 계획을 발표했다."], "error_type": "NONE", "politician_mentioned": false, "policy_topic_mentioned": true}}, {"chain_index": 1, "politician": "Fumio Kishida", "policy": "그린 트랜스포메이션(GX) 프로그램", "industry_or_sector": "그린 테크 및 재생에너지", "companies": ["Toyota", "Panasonic"], "impact_description": "Toyota와 Panasonic은 정책 대상 분야(자동차/EV, 배터리)에서 간접적으로 혜택을 받을 수 있음", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "일본의 '새로운 자본주의' 정책은 탄소 중립 실현과 탈탄소 사회(GX)에 대한 투자를 성장 전략으로 포함하며, 특히 '충전식 배터리'를 전략 분야로 명시하고 있습니다. 이는 자동차/EV 및 배터리 분야에서 활동하는 Toyota와 Panasonic이 간접적으로 혜택을 받을 수 있다는 설명과 일치합니다.", "evidence_spans": ["[Source 2] Realisation of carbon neutrality", "[Source 2] Investment in GX (decarbonised society) and DX (digital transformation ), etc. - Position semiconductors , rechargeable batteries , bio-manufacturing and data centres as strategic areas."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.95, "reasoning": "두 출처 모두 기시다 후미오 총리의 경제 정책인 \"새로운 자본주의\"를 다루고 있으며, 특히 두 번째 출처에서는 2023년 개정판 \"새로운 자본주의 그랜드 디자인 및 실행 계획\"의 핵심 내용 중 하나로 \"GX(탈탄소 사회) 투자\"를 명시하고 있습니다. 이는 기시다 총리와 그린 트랜스포메이션(GX) 프로그램 간의 직접적인 연관성을 명확하게 보여줍니다.", "evidence_spans": ["Prime Minister of Japan Fumio Kishida", "Investment in GX (decarbonised society) and DX (digital transformation), etc."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 2, "politician": "Fumio Kishida", "policy": "GDP 2% 목표 방위비 확대", "industry_or_sector": "방위 산업", "companies": ["Mitsubishi Heavy Industries", "IHI Corporation"], "impact_description": "Mitsubishi Heavy Industries와 IHI Corporation은 방위성 계약업체로 전투기 엔진 및 미사일 부품 공급", "impact_result": {"label": "PARTIALLY_SUPPORTED", "score": 0.6, "reasoning": "제공된 출처의 제목에서 미쓰비시중공업과 IHI Corporation이 \"방산업체\"라고 명시되어 있어 방위성 계약업체라는 부분은 간접적으로 지지됩니다. 하지만 전투기 엔진 및 미사일 부품을 공급한다는 구체적인 내용은 출처에서 찾을 수 없습니다.", "evidence_spans": ["[Source 1] 日 방산업체 IHI도 미쓰비시중공업 이어 사이버 공격 받아"], "error_type": "NONE"}, "attribution_result": {"label": "WEAKLY_RELATED", "score": 0.65, "reasoning": "기사는 일본 정부가 방위비를 GDP 대비 2%로 확대하기 위해 소득세 인상을 추진하는 내용을 상세히 다루고 있어 정책 주제와 매우 관련성이 높습니다. 그러나 지정된 정치인인 기시다 후미오는 기사에서 언급되지 않았습니다. 대신 다카이치 사나에 총리와 고이즈미 신지로 방위상이 언급됩니다.", "evidence_spans": ["방위비 'GDP 2%' 앞당기려…日정부, 2027년부터 소득세 인상", "당초 2027년으로 잡았던 '방위비 국내총생산( GDP ) 대비 2%' 목표를 2025년도 중으로 앞당기려면 안정적인 재원이 필요하다는 판단이 깔린 것으로 해석된다."], "error_type": "NONE", "politician_mentioned": false, "policy_topic_mentioned": true}}, {"chain_index": 3, "politician": "Fumio Kishida", "policy": "디지털 가든 시티 네이션 이니셔티브", "industry_or_sector": "디지털 인프라 및 AI", "companies": ["Amazon.com Inc.", "Google LLC"], "impact_description": "Amazon.com Inc.와 Google LLC는 디지털 에이전시와의 공공-민간 협력 파트너십에 참여", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "제공된 출처는 Amazon.com Inc.와 Google LLC가 일본 디지털 에이전시가 설립된 직후인 2021년에 정부 서비스 제공 계약을 수주했다고 명시하고 있습니다. 이는 디지털 에이전시와 민간 부문 간의 공공-민간 협력 파트너십에 참여했다는 영향 설명과 일치합니다.", "evidence_spans": ["[Source 1] in 2021, shortly after the Digital Agency was established, two companies from abroad—Amazon.com Inc. and Google LLC—won contracts to deliver government-as-a-service—or Government Cl", "[Source 1] An important part of that strategy is to work closely with the private sector, including foreign-affiliated firms, technology and skilled individuals."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "소스는 기시다 후미오 총리가 디지털 전환(DX)을 \"새로운 자본주의\" 비전의 중요한 축으로 삼고 있음을 명확히 언급합니다. 또한, 일본의 디지털 사회 실현을 위한 우선 정책 프로그램과 디지털 인프라 현대화, 지역 활성화 등 '디지털 가든 시티 네이션 이니셔티브'의 핵심 주제와 밀접하게 관련된 내용을 다루고 있습니다.", "evidence_spans": ["Prime Minister Kishida Fumio has taken up that cause, announcing that DX will be an important pillar of his vision of a “new form of capitalism.”", "The agency has a mission to create human-friendly DX that ensures “no one is left behind.” To this end, the agency has defined three pillars to drive its vision forward: “delivering citizen-centric public services,” “modernizing digital infrastructure for inclusive growth,” and “strengthening digital resilience.”"], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}], "gold_eval": {"similarity_score": 0.65, "reasoning": "두 보고서는 기시다 후미오 총리의 방위비 증액 정책과 반도체 산업 지원 정책, 그리고 미쓰비시중공업, IHI Corporation 등 관련 기업을 공통적으로 다루고 있습니다. 그러나 gold_report는 '새로운 자본주의' 기치 하의 임금 인상 정책과 그에 따른 소니, 도요타의 영향을 상세히 설명하며, 각 정책의 경제적 파급 효과와 구조적 한계에 대한 깊이 있는 분석을 제공합니다. 반면 model_report는 그린 트랜스포메이션(GX) 프로그램과 디지털 가든 시티 네이션 이니셔티브 등 다른 정책 영역과 Rapidus, Amazon.com Inc., Google LLC와 같은 기업들을 추가로 언급하지만, 정책별 영향 설명의 깊이는 gold_report에 비해 다소 부족합니다. gold_report는 질문에 대한 답변의 깊이와 경제적 영향 분석 측면에서 더 적합하다고 판단됩니다.", "model_unique_points": ["Rapidus에 대한 반도체 산업 지원 및 정부-민간 자금 지원", "그린 트랜스포메이션(GX) 프로그램을 통한 그린 테크 및 재생에너지 분야 영향", "디지털 가든 시티 네이션 이니셔티브를 통한 디지털 인프라 및 AI 분야, Amazon.com Inc., Google LLC와의 공공-민간 협력 파트너십"], "gold_unique_points": ["'새로운 자본주의' 기치 하에 기업들의 임금 인상 및 투자 확대를 독려한 정책과 그에 따른 소니, 도요타 등 주요 기업의 임금 인상 합의", "TSMC의 일본 내 반도체 공장 건설 및 정부 보조금 지원, 도요타-파나소닉의 배터리 공장 증설과 정부 지원", "각 정책이 일본 경제에 미치는 장기적인 영향, 재원 마련의 한계, 구조개혁의 어려움 등 심층적인 경제적 분석과 평가"]}}} +{"query": "Mohammed bin Salman", "evaluation": {"chain_results": [{"chain_index": 0, "politician": "Mohammed bin Salman", "policy": "비전 2030", "industry_or_sector": "에너지, 기술, 관광, 재생에너지", "companies": ["Saudi Aramco", "Public Investment Fund (PIF)", "NEOM"], "impact_description": "모하메드 빈 살만(MBS)은 사우디아라비아의 실질적인 지도자로서 비전 2030의 주요 설계자입니다. 그는 사우디 아람코의 IPO를 주도했으며, 공공투자펀드(PIF)를 통해 NEOM과 같은 메가 프로젝트를 추진하며 경제 다각화를 이끌고 있습니다. PIF는 사우디 아람코의 8% 지분을 보유하고 있으며, NEOM을 완전히 소유하고 있습니다. MBS는 PIF의 의장으로서 기술, 관광, 재생에너지 분야의 투자를 주도하고 있습니다.", "impact_result": {"label": "PARTIALLY_SUPPORTED", "score": 0.75, "reasoning": "제공된 출처들은 모하메드 빈 살만(MBS)이 사우디아라비아의 실질적인 지도자이자 비전 2030의 주요 설계자이며, 공공투자펀드(PIF)를 통해 NEOM과 같은 메가 프로젝트를 추진하며 경제 다각화를 이끌고 있다는 점을 명확히 뒷받침합니다. 또한 PIF가 NEOM을 전적으로 소유하고 있으며, 사우디 아람코의 8% 지분을 보유하고 있다는 내용도 확인됩니다. MBS가 PIF의 의장으로서 기술, 관광, 재생에너지 분야의 투자를 주도한다는 내용도 지지됩니다. 그러나 MBS가 사우디 아람코의 IPO를 '주도했다'는 직접적인 증거는 출처에서 명확하게 발견되지 않습니다. 출처 2의 제목은 관련성을 시사하지만, 본문 내용은 MBS가 IPO를 직접 주도했다기보다는 왕실 내 권력 이동과 에너지 정책 개편에 초점을 맞추고 있습니다. 출처 5는 PIF가 2022년과 2023년에 사우디 아람코 지분을 인수한 사실을 언급하지만, 이는 IPO 주도와는 다른 내용입니다.", "evidence_spans": ["[Source 1] Mohammed bin Salman Al Saud... also known as MbS, is the de facto ruler of the Kingdom of Saudi Arabia, formally serving as Crown Prince and Prime Minister.", "[Source 1] His Saudi Vision 2030 program aims to reduce the Saudi economy's reliance on oil through investment in other sectors such as technology, tourism, sport, and the megaproject Neom", "[Source 4] Neom... was launched in 2017 by crown prince Mohammad bin Salman, who was the driving force and hands-on chair behind the project.", "[Source 4] The company, which is solely dedicated to developing the economic zone of Neom, is wholly owned by the Public Investment Fund, the Saudi government's sovereign wealth fund.", "[Source 5] The wealth fund has Crown Prince Mohammed bin Salman, Saudi Arabia's de facto ruler since 2015, as its chairman.", "[Source 5] The board says PIF is aligned with the government's Vision 2030 with the aim to diversify the economy.", "[Source 5] In 2022, a 4% stake in ownership of Saudi Aramco was transferred to the PIF, which was repeated in 2023 as part of the fund's plan to increase assets under management to over $1 trillion by 2025."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "제공된 자료들은 모하메드 빈 살만 왕세자가 사우디아라비아의 \"비전 2030\" 정책의 주요 설계자이자 추진자임을 명확히 보여줍니다. 여러 출처에서 그가 비전 2030 프로그램을 통해 사우디 경제의 석유 의존도를 줄이고 기술, 관광, 스포츠, 네옴(Neom)과 같은 메가 프로젝트에 투자하는 것을 목표로 한다고 언급하고 있습니다. 또한, 그가 공공투자펀드(PIF)의 의장으로서 비전 2030 목표를 지원하고 경제 다각화를 추진하는 데 핵심적인 역할을 하고 있음이 명시되어 있습니다.", "evidence_spans": ["His Saudi Vision 2030 program aims to reduce the Saudi economy 's reliance on oil through investment in other sectors such as technology, tourism , sport, and the megaproject Neom", "Saudi Crown Prince Mohammed bin Salman underscored the central theme of this shift in focus, stating that “the welfare of the citizen is at the top of the government’s priorities.” He linked the budget’s approval to the structural transformation of the Saudi economy since the launch of Vision 2030.", "Neom was launched in 2017 by crown prince Mohammad bin Salman, who was the driving force and hands-on chair behind the project. ... Much of the city is hoped to be completed by 2030, with the upcoming Saudi Vision 2030 around the corner.", "The wealth fund has Crown Prince Mohammed bin Salman, Saudi Arabia's de facto ruler since 2015, as its chairman. ... The board says PIF is aligned with the government's Vision 2030 with the aim to diversify the economy."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 1, "politician": "Mohammed bin Salman", "policy": "비전 2030", "industry_or_sector": "에너지, 국방", "companies": ["Saudi Aramco"], "impact_description": "MBS는 사우디 아람코의 IPO를 주도하여 비전 2030의 자금 조달을 지원했습니다. 사우디 아람코는 미국과의 LNG 계약을 통해 에너지 다각화 전략을 추진하고 있습니다. MBS는 PIF를 통해 간접적으로 아람코에 영향을 미치며, 생산 및 투자 결정에 대한 정부 통제를 유지하고 있습니다.", "impact_result": {"label": "UNSUPPORTED", "score": 0.2, "reasoning": "제공된 출처들은 MBS가 사우디 아람코의 IPO를 주도하여 비전 2030의 자금 조달을 지원했다는 구체적인 내용을 명확히 뒷받침하지 않습니다. 또한, 사우디 아람코가 미국과의 LNG 계약을 통해 에너지 다각화 전략을 추진하고 있다는 내용이나, MBS가 PIF를 통해 아람코에 간접적으로 영향을 미치며 생산 및 투자 결정에 대한 정부 통제를 유지한다는 내용은 출처에서 찾을 수 없습니다. 출처 1의 제목에 \"Saudi Aramco IPO and Bin Salman’s Fiscal Takeover\"가 언급되지만, 본문 내용은 IPO의 주도나 비전 2030과의 연관성을 구체적으로 설명하지 않습니다. 출처 2는 사용 불가능하며, 출처 3은 국방비 지출과 MBS의 석유 수입 관련 내용에 초점을 맞추고 있습니다.", "evidence_spans": ["[Source 1] Saudi Aramco IPO and Bin Salman’s Fiscal Takeover", "[Source 1] King Salman has launched preparations for reorganizing and consolidating oversight of the kingdom’s energy sector.", "[Source 1] he has given new political and economic powers to a young and untested son", "[Source 3] Last year, Riyadh received $326bn in revenue from oil, the largest amount since Mohammed bin Salman became crown prince."], "error_type": "NONE"}, "attribution_result": {"label": "WEAKLY_RELATED", "score": 0.6, "reasoning": "소스들은 모하메드 빈 살만과 비전 2030을 각각 언급하지만, 두 가지를 직접적으로 연결하여 모하메드 빈 살만이 비전 2030의 주요 주체로 활동하는 내용을 명확하게 보여주지는 않습니다. 소스 2는 비전 2030을 상세히 다루지만 모하메드 빈 살만을 언급하지 않으며, 소스 3은 모하메드 빈 살만을 언급하지만 비전 2030을 다루지 않습니다.", "evidence_spans": ["Saudi Arabia, historically one of the largest defense importers worldwide, is concentrating heavily on the Kingdom’s Vision 2030 , which was launched in 2016.", "Last year, Riyadh received $326bn in revenue from oil, the largest amount since Mohammed bin Salman became crown prince."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 2, "politician": "Mohammed bin Salman", "policy": "비전 2030", "industry_or_sector": "투자, 기술, 스포츠", "companies": ["Public Investment Fund (PIF)"], "impact_description": "MBS는 PIF의 의장으로서 9,410억 달러 규모의 자산을 관리하며, 비전 2030의 핵심 프로젝트를 추진합니다. PIF는 NEOM을 완전히 소유하고 있으며, 사우디 아람코의 8% 지분을 보유하고 있습니다. 또한 뉴캐슬 유나이티드 FC, 우버, 테슬라 등에 투자하며 경제 다각화를 실현하고 있습니다.", "impact_result": {"label": "PARTIALLY_SUPPORTED", "score": 0.7, "reasoning": "영향 설명은 모하메드 빈 살만이 PIF의 의장이며 9,410억 달러의 자산을 관리하고 비전 2030 프로젝트를 추진한다는 점을 정확하게 기술합니다. 또한 PIF가 사우디 아람코의 8% 지분을 보유하고 뉴캐슬 유나이티드 FC, 우버, 테슬라 등에 투자하여 경제 다각화를 실현하고 있다는 내용도 출처에 의해 뒷받침됩니다. 그러나 출처에는 PIF가 NEOM을 완전히 소유하고 있다는 정보는 언급되어 있지 않습니다.", "evidence_spans": ["[Source 1] The wealth fund has Crown Prince Mohammed bin Salman, Saudi Arabia's de facto ruler since 2015, as its chairman.", "[Source 1] It is among the largest sovereign wealth funds in the world with total estimated assets of US$ 941 billion.", "[Source 1] The board says PIF is aligned with the government's Vision 2030 with the aim to diversify the economy.", "[Source 2] The Crown Prince also confirmed that the Public Investment Fund (PIF) will continue to support the goals of Vision 2030 and the development of strategic, high-potential sectors...", "[Source 1] In 2022, a 4% stake in ownership of Saudi Aramco was transferred to the PIF, which was repeated in 2023 as part of the fund's plan to increase assets under management to over $1 trillion by 2025.", "[Source 1] Outside Saudi Arabia the fund's investments into prominent foreign assets such as Premier League football club Newcastle United have generated controversy...", "[Source 1] To bolster the resources of the PIF and help in the financing of investments into foreign companies such as Uber and Tesla...", "[Source 1] The move was intended to take advantage of higher hydrocarbon prices to fund the expansion of the PIF in its overarching goal to diversify investments."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "두 출처 모두 모하메드 빈 살만 왕세자가 사우디아라비아의 '비전 2030' 정책과 밀접하게 관련되어 있음을 명확히 보여줍니다. 그는 국부펀드(PIF)의 의장이자 '비전 2030'의 시작과 경제 구조 변화를 강조하는 핵심 인물로 언급됩니다.", "evidence_spans": ["이 국부펀드는 2015년부터 사우디아라비아의 실질적인 통치자인 모하메드 빈 살만 왕세자를 의장으로 두고 있다.", "이사회는 PIF가 경제 다각화를 목표로 하는 정부의 비전 2030과 일치한다고 말한다.", "사우디 왕세자 모하메드 빈 살만은... 예산 승인을 비전 2030 출범 이후 사우디 경제의 구조적 변화와 연결시켰다.", "왕세자는 또한 국부펀드(PIF)가 비전 2030의 목표와 전략적 고성장 부문의 발전을 계속 지원할 것이라고 확인했다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}, {"chain_index": 3, "politician": "Mohammed bin Salman", "policy": "비전 2030", "industry_or_sector": "기술, 관광, 재생에너지", "companies": ["NEOM"], "impact_description": "NEOM은 MBS가 주도하는 비전 2030의 핵심 프로젝트로, PIF가 완전히 소유하고 있습니다. 이 프로젝트는 녹색 수소 및 미래 도시 개발을 목표로 하며, 사우디 경제 다각화의 상징입니다. 그러나 지연, 비용 초과, 인권 논란 등으로 어려움을 겪고 있습니다.", "impact_result": {"label": "SUPPORTED", "score": 0.9, "reasoning": "NEOM이 MBS가 주도하는 비전 2030의 핵심 프로젝트이며 PIF가 완전히 소유하고 있다는 점, 녹색 수소 및 미래 도시 개발을 목표로 사우디 경제 다각화의 상징이라는 점, 그리고 지연, 비용 초과, 인권 논란 등으로 어려움을 겪고 있다는 점 모두 제공된 출처에서 명확하게 확인됩니다.", "evidence_spans": ["[Source 1] It was launched in 2017 by crown prince Mohammad bin Salman, who was the driving force and hands-on chair behind the project.", "[Source 1] The company, which is solely dedicated to developing the economic zone of Neom, is wholly owned by the Public Investment Fund, the Saudi government's sovereign wealth fund.", "[Source 2] 아람코는 PIF의 5000억 달러 규모의 미래 도시 네옴(Neom)에서 첫 번째 녹색 수소 실험장을 개발하겠다고 발표했다. 이 녹색 수소는 재생 가능 에너지를 사용하여 물을 전기분해해 만들어진다.", "[Source 2] 홍해에 위치한 이 곳은 마치 과학소설에서 볼 법한 곳으로 900만 명이 살게 될 새 도시가 예상되고 있다.", "[Source 1] Saudi Arabia originally aimed to complete major parts of the project by 2020, with an expansion completed in 2025, but fell behind schedule.", "[Source 1] Initially estimated to cost $1.6 trillion, the project's estimated costs were eventually in excess of $8.8 trillion (more than 25 times the annual Saudi budget).", "[Source 2] 이 대규모 프로젝트를 건설하는 비용은 점점 더 증가하는 추세다... 자드와투자는 비용 초과가 불가피하다.", "[Source 1] Neom's construction has also been criticised for environmental and human rights violations, with expatriate employees describing abusive working conditions and members of the local Howeitat tribe protesting against their forced expulsion."], "error_type": "NONE"}, "attribution_result": {"label": "HIGHLY_RELATED", "score": 0.9, "reasoning": "두 소스 모두 모하메드 빈 살만 왕세자가 사우디아라비아의 경제 다각화 및 개발 계획인 '비전 2030'의 핵심 프로젝트(NEOM, 뉴 무라바 등)를 주도하고 있음을 명확하게 언급하고 있습니다. 특히 첫 번째 소스는 '사우디 비전 2030'을 직접적으로 언급하며 NEOM 프로젝트와의 연관성을 설명하고, 두 번째 소스는 비전 2030의 주요 목표와 일치하는 대규모 프로젝트들을 왕세자가 직접 감독하고 있음을 상세히 다루고 있습니다.", "evidence_spans": ["2017년 모하메드 빈 살만 왕세자에 의해 시작되었으며, 그는 이 프로젝트의 추진력이자 실질적인 의장이었다.", "도시의 상당 부분이 2030년까지 완공되기를 희망하며, 다가오는 사우디 비전 2030과 함께 진행된다.", "사우디아라비아의 왕세자 모하메드 빈 살만(Mohammed bin Salman).", "왕세자 모하메드 빈 살만(Mohammad bin Salman, MBS)이 그들의 계획을 면밀히 들여다보며 정기적으로 진행 상황을 알려줄 것을 요구하고, 지연을 용납하지 못한다고 전했다.", "PIF의 가장 야심 찬 프로젝트인 네옴(Neom)의 모형이 있었다.", "리야드 인구를 2030년까지 두 배로 늘려 대략 1500만 명의 대도시를 만들겠다는 계획이다."], "error_type": "NONE", "politician_mentioned": true, "policy_topic_mentioned": true}}], "gold_eval": {"similarity_score": 0.6, "reasoning": "두 보고서는 무함마드 빈 살만 왕세자의 'Vision 2030' 정책과 사우디 아람코, 국부펀드(PIF), NEOM 프로젝트를 통한 경제적 영향력을 공통적으로 다루고 있습니다. 하지만 gold_report는 OPEC+ 감산, Saudi Aramco 상장 및 Lucid Motors 투자, NEOM 프로젝트와 관련된 글로벌 건설·관광 기업 유치 등 구체적인 정책 실행과 경제적 파급 효과를 상세히 설명하는 반면, model_report는 PIF의 광범위한 투자 포트폴리오(뉴캐슬 유나이티드 FC, 우버, 테슬라 등)와 NEOM 프로젝트의 지연 및 인권 논란 등 다른 측면에 초점을 맞추고 있어 내용의 깊이와 강조점이 다릅니다.", "model_unique_points": ["PIF를 통한 뉴캐슬 유나이티드 FC, 우버, 테슬라 등 해외 기업 투자 사례", "사우디 아람코의 미국 LNG 계약 및 국방 분야에서의 영향력 언급", "NEOM 프로젝트의 지연, 비용 초과, 인권 논란 등 부정적 측면 언급", "PIF의 Saudi Aramco 지분 8% 보유 및 NEOM 완전 소유 등 구체적인 지배 구조 언급"], "gold_unique_points": ["OPEC+ 감산 주도 및 유가 부양을 통한 Saudi Aramco와 SABIC의 수익 극대화", "Saudi Aramco 상장으로 자금 조달 및 PIF를 통한 Lucid Motors 지분 인수 투자", "NEOM, 홍해 프로젝트 등 초대형 프로젝트를 통한 Bechtel, Marriott International 등 글로벌 건설·관광 기업 유치 및 그 영향", "정책 추진의 긍정적 측면과 함께 정치적 위험 및 인권 문제 등 잠재적 변수 언급"]}}} + diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/dev_test/ko-freshqa_2025_dev.csv b/usecase/solar-political-influence-analyzer/src/ai-engine/dev_test/ko-freshqa_2025_dev.csv new file mode 100644 index 0000000..02debfe --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/dev_test/ko-freshqa_2025_dev.csv @@ -0,0 +1,620 @@ +id,split,domain,question,effective_year,next_review,false_premise,num_hops,fact_type,source,answer_0,answer_1,answer_2,answer_3,answer_4,answer_5,answer_6,answer_7,answer_8,answer_9 +3001,DEV,세계,가장 마지막으로 열린 APEC 정상회의가 몇 번째 정상회의였는지 알려줘.,2024,every_year,FALSE,one-hop,fast-changing,https://www.mofa.go.kr/www/wpge/m_3901/contents.do,제31차,"2024년에 페루 리마에서 열린 정상회의로, 제31차 정상회의였습니다.",,,,,,,,, +3002,DEV,생활/문화,만화 <원피스>는 한국에 몇 권까지 발간됐어?,2025,occasionally,FALSE,one-hop,fast-changing,https://search.kyobobook.co.kr/search?keyword=%EC%9B%90%ED%94%BC%EC%8A%A4&gbCode=TOT&target=total,111권입니다.,2025년 6월 30일에 111권이 발간되었습니다.,,,,,,,,, +3003,DEV,스포츠,배드민턴 선수 안세영의 현재 나이는?,2025,every_year,FALSE,one-hop,fast-changing,https://ko.wikipedia.org/wiki/%EC%95%88%EC%84%B8%EC%98%81,23세,안세영 선수는 현재 23세입니다.,,,,,,,,, +3004,DEV,생활/문화,네이버 카페 '고양이라서 다행이야'의 가입자 수는 몇 명이야?,2025,every_time,FALSE,one-hop,fast-changing,https://cafe.naver.com/ilovecat,"753,820명","2025년 9월 22일 기준 753,820명입니다.",,,,,,,,, +3005,DEV,날씨,어제 울릉도/독도의 강수량은 얼마였나요?,2025,every_time,FALSE,one-hop,fast-changing,https://www.weatheri.co.kr/bygone/bygone01.php,0.1mm,0.1mm입니다.,,,,,,,,, +3006,DEV,연예,배철수가 라디오 디제이로 데뷔한 지 얼마나 됐어?,2025,every_year,FALSE,one-hop,fast-changing,"https://ko.wikipedia.org/wiki/%EB%B0%B0%EC%B2%A0%EC%88%98 +https://www.imbc.com/broad/radio/fm4u/musiccamp/index.html",올해로 36년차입니다.,배철수가 라디오 디제이로 데뷔한 지는 36년 됐습니다.,1990년에 라디오 DJ로 데뷔한 후로 36년차를 맞이했습니다.,,,,,,,, +3007,DEV,날씨,5년 전 봄에 서울 지점에서 뇌전일수는 몇일인가?,2025,every_year,FALSE,one-hop,fast-changing,"https://data.kma.go.kr/climate/thdblt/selectThdbltChart.do?pgmNo=699 +https://encykorea.aks.ac.kr/Article/E0003235",3일,5년 전 서울 지점의 봄 기간 동안의 뇌전일수는 3일입니다.,,,,,,,,, +3008,DEV,IT/과학,가장 최근 출시된 아이폰 모델 중 최고 출시가인 모델의 화면 크기는 어떻게 되나요?,2025,occasionally,FALSE,multi-hop,fast-changing,"https://www.apple.com/kr/shop/buy-iphone/iphone-17-pro +https://www.apple.com/kr/iphone-17-pro/specs/ +https://www.womaneconomy.co.kr/news/articleView.html?idxno=241972",17.4cm (6.9인치),아이폰 17 프로 맥스의 디스플레이 크기는 6.9인치입니다.,,,,,,,,, +3009,DEV,사회,올해 고려대학교 입학식은 언제 열렸어?,2025,every_year,FALSE,one-hop,fast-changing,https://www.hani.co.kr/arti/economy/biznews/1184805.html,2월 28일,2025년 고려대학교의 입학식은 2월 28일입니다.,2월 28일에 열렸습니다.,,,,,,,, +3010,DEV,연예,지난 주 지상파 최고 시청률을 기록한 프로그램은 뭐야?,2025,every_week,FALSE,one-hop,fast-changing,https://www.nielsenkorea.co.kr/tv_terrestrial_day.asp?menu=Tit_1&sub_menu=1_2&area=00&begin_date=202409,<화려한 날들>,KBS2 채널에서 방영된 주말드라마 <화려한 날>이 14.8%로 최고 시청률을 기록했습니다.,,,,,,,,, +3011,DEV,사회,이번년도 단풍 절정시기는 언제야?,2025,every_year,FALSE,one-hop,fast-changing,https://m.yonhapnewstv.co.kr/news/AKR20250916134024RQk,"케이웨더에 따르면 중부지방은 10월 18일에서 11월 1일 사이, 남부지방은 10월 28일에서 11월 7일 사이가 예상됩니다.","중부지방 : 10월 18일에서 11월 1일 사이, 남부지방 : 10월 28일에서 11월 7일 사이",2024년 단풍 절정시기는 10월 28~31일 입니다.,2024년 10월 28일에서 31일 입니다.,,,,,,, +3012,DEV,스포츠,올해 KBO 올스타전에 가장 많은 선수를 출전시킨 팀은 어디야?,2025,every_year,FALSE,one-hop,fast-changing,https://www.koreabaseball.com/MediaNews/Notice/View.aspx?bdSe=11566,삼성 라이온즈,2025년 KBO 올스타전에 가장 많은 선수를 출전시킨 팀은 삼성 라이온즈입니다.,"2024년 KBO 올스타전에 가장 많은 선수를 출전시킨 팀은 삼성 라이온즈로, 총 7명의 선수가 출전했습니다.",,,,,,,, +3013,DEV,정치,한동훈 전 국민의힘 대표의 가장 최근 라디오 출연일은?,2024,occasionally,FALSE,one-hop,fast-changing,https://www.hankyung.com/article/2024091825587,9월 17일,2024년 9월 17일 CBS 라디오입니다.,,,,,,,,, +3014,DEV,UNK,한국에서 코로나19로 인한 사망자가 현재 몇 명이야?,2023,n/a,TRUE,one-hop,fast-changing,"https://dportal.kdca.go.kr/pot/cv/trend/dmstc/selectMntrgSttus.do +https://www.yna.co.kr/view/AKR20230823037251530",코로나19로 인한 사망자 수는 더 이상 집계하지 않습니다.,"2023년에 마지막으로 사망자가 35,605명으로 기록되었으나 그 후로는 집계하지 않아 현재 사망자 수는 확인할 수 없습니다.",,,,,,,,, +3015,DEV,연예,NCT DREAM이 가장 최근에 발매한 정규 앨범의 타이틀곡이 뭐야?,2025,occasionally,FALSE,one-hop,fast-changing,"https://www.munhwa.com/article/11515397 +https://ko.wikipedia.org/wiki/NCT_DREAM",BTTF,BTTF입니다.,,,,,,,,, +3016,DEV,세계,스페인 1인당 GDP 순위는 어떻게 되나요?,2025,every_year,FALSE,one-hop,fast-changing,https://www.imf.org/external/datamapper/NGDPDPC@WEO/OEMDC/ADVEC/WEOWORLD,29위,스페인의 1인당 GDP(PPP) 순위는 29위입니다.,,,,,,,,, +3017,DEV,생활/문화,넷플릭스에서 가장 최근에 공개된 오리지널 영화는 무엇인가요?,2025,frequently,FALSE,one-hop,fast-changing,https://about.netflix.com/ko/new-to-watch,2025년 9월 22일에 공개된 <결혼은 글쎄요>입니다.,<결혼은 글쎄요>,,,,,,,,, +3018,DEV,세계,가장 최근에 열린 아마존 프라임 데이가 언제였는지 알려줘.,2025,every_year,FALSE,one-hop,fast-changing,https://www.seattlekdaily.com/news/articleView.html?idxno=15871,2025년 7월 8일부터 11일까지,2025.07.08~2025.07.11,,,,,,,,, +3019,DEV,경제,엔비디아의 당기순이익은 얼마인가요?,2025,every_time,FALSE,one-hop,fast-changing,https://invest.deepsearch.com/stock/NVDA/,728.80억 USD,엔비디아가 2025년 1월에 공개한 당기순이익은 728.80억 USD입니다.,,,,,,,,, +3020,DEV,UNK,가장 가까운 일정의 변호사 시험의 합격통보일은 언제인가요?,2025,every_year,FALSE,one-hop,fast-changing,https://ils.inha.ac.kr/ils/14062/subview.do;jsessionid=6E27D6065CBD65305D4C4830F7BB4F2C?enc=Zm5jdDF8QEB8JTJGYmJzJTJGaWxzJTJGMzQ1NCUyRjE2MTU3NiUyRmFydGNsVmlldy5kbyUzRg%3D%3D,2026년 4월 24일 (금),2026년도 제15회 변호사시험의 합격자 통보는 2026년 4월 24일 게시 예정입니다.,,,,,,,,, +3021,DEV,생활/문화,지금 제철 과일이 뭐야?,2025,occasionally,FALSE,one-hop,fast-changing,https://akong.kr/board/%EA%B3%84%EC%A0%88%EB%B3%84-%EA%B3%BC%EC%9D%BC-%EC%86%8C%EA%B0%9C/12/,"사과, 배, 감","가을철 제철 과일은 사과, 배 ,감입니다.",,,,,,,,, +3022,DEV,생활/문화,멜론 장르음악의 분류 중 '한국대중음악>인디음악'에서 '스테디셀러' 1위를 차지하고 있는 곡을 알려줘.,2025,every_day,FALSE,one-hop,fast-changing,https://www.melon.com/genre/song_list.htm?gnrCode=GN0500&steadyYn=Y,10cm의 스토커,스토커,,,,,,,,, +3023,DEV,스포츠,가장 최근에 한국프로농구 MVP로 선정된 선수는 누구인가요?,2025,occasionally,FALSE,one-hop,fast-changing,https://sonicboom.kbl.or.kr/record/award,안영준,저번 시즌에 한국프로농구 MVP로 선정된 선수는 안영준입니다.,,,,,,,,, +3024,DEV,날씨,가장 최근에 쓰나미가 발생한 나라는 어디야?,2025,occasionally ,FALSE,one-hop,fast-changing,https://www.joongang.co.kr/article/25355463,러시아,가장 최근 발생한 쓰나미는 2025년 7월 30일 러시아의 캄차카반도에서 관측되었습니다.,,,,,,,,, +3025,DEV,날씨,가장 최근의 강풍주의보는 언제 발표되었나요?,2025,every_time,FALSE,one-hop,fast-changing,https://www.weather.go.kr/w/weather/warning/status.do,2025년 9월 22일(월) 21:00,전라남도(거문도.초도)를 대상으로 2025년 9월 22일 오후 9시에 강풍주의보가 발표되었습니다.,,,,,,,,, +3026,DEV,연예,배우 임수정이 몇 살인지 알려줘.,2025,every_year,FALSE,one-hop,fast-changing,https://ko.wikipedia.org/wiki/%EC%9E%84%EC%88%98%EC%A0%95_(%EB%B0%B0%EC%9A%B0),46세,배우 임수정의 현재 나이는 46세입니다.,,,,,,,,, +3027,DEV,사회,대한민국의 천연기념물은 몇 개인가요?,2025,occasionally,FALSE,one-hop,fast-changing,https://www.heritage.go.kr/heri/cul/culSelectViewList.do?gbn=2&pageNo=1_1_2_0&culPageNo=1&ccbaCndt=&searchCondition=®ion=1&s_kdcdArr=16&s_ctcdArr=00&ccbaPcd1Arr=99&stCcbaAsdt=&endCcbaAsdt=&ccbaGcodeArr=00&sortType=&sortOrd=,483개,대한민국의 천연기념물은 총 483개입니다.,,,,,,,,, +3028,DEV,사회,현재 국민연금 수급자가 가장 많은 지역은 어디야?,2025,every_time,FALSE,one-hop,fast-changing,https://www.nps.or.kr/docuviewer/docuviewer.jsp?contenttype=pdf&contentid=temp/183f60aa-ca39-483d-a809-d29bb196b981,2025년 5월 기준 경기도,현재 국민연금 수급자가 가장 많은 지역은 경기도입니다.,,,,,,,,, +3029,DEV,연예,배우 이병현의 연기경력은 얼마나 되나요?,2025,every_year,FALSE,one-hop,fast-changing,https://ko.wikipedia.org/wiki/%EC%9D%B4%EB%B3%91%ED%97%8C,34년,배우 이병헌은 1991년 KBS 14기 공채 탤런트로 데뷔하여 현재까지 34년의 연기경력을 가지고 있습니다.,,,,,,,,, +3030,DEV,연예,스포츠 브랜드 ‘르꼬끄 스포르티브’가 가장 최근에 계약한 브랜드 모델은 누구야?,2025,occasionally,FALSE,one-hop,fast-changing,https://m.apparelnews.co.kr/news/news_view/?idx=196328,문가영,스포츠 브랜드 '르꼬끄 스포르티브'가 가장 최근에 계약한 모델은 문가영입니다.,,,,,,,,, +3031,DEV,스포츠,손흥민이 이번 시즌에 출전한 경기는 몇 경기인가요?,2025,every_week,FALSE,one-hop,fast-changing,https://ko.wikipedia.org/wiki/%EC%86%90%ED%9D%A5%EB%AF%BC#%EB%A1%9C%EC%8A%A4%EC%95%A4%EC%A0%A4%EB%A0%88%EC%8A%A4_FC,6경기,"손흥민이 이번 시즌 출전한 경기는 6경기이며, 시즌이 진행 중이라 출전 경기 수가 더 늘어날 수 있습니다.",,,,,,,,, +3032,DEV,날씨,한국에서 가장 최근에 일어났던 지진은 언제 어디서 일어난건가요?,2025,occasionally,FALSE,one-hop,fast-changing,https://www.weather.go.kr/w/eqk-vol/recent-eqk.do,"2025년 09월 23일 08시 53분 11초, 울산 동구 동쪽 49km 해역",울산 동구 동쪽 49km 해역에서 2025년 09월 23일 08시 53분 11초에 진도 2.2강도로 지진이 발생하였습니다.,2024년 09월 13일에 진도 2.3강도로 신안군 흑산도 북서쪽 120km해역 부근에서 지진이 발생하였습니다.,,,,,,,, +3033,DEV,세계,교토시의 총 인구는 몇 명이야?,2025,every_time,FALSE,one-hop,fast-changing,https://ko.wikipedia.org/wiki/%EA%B5%90%ED%86%A0%EC%8B%9C,"1,433,026명","2025년 8월 1일 기준 교토시의 총 인구는 1,433,026명입니다.",,,,,,,,, +3034,DEV,세계,가장 빠른 시일 내로 동아시아에서 열리는 IT 박람회는 무엇이 있나요?,2025,every_time,FALSE,one-hop,fast-changing,https://myfair.co/exhibition-list?page=&sort=&popular=&bcdn=&ctnum=&sctnum=1&cnum=&zn=2&in=,중국 베이징 IT 박람회 2025,중국 베이징 IT 박람회 2025입니다.,,,,,,,,, +3035,DEV,세계,영국 박스오피스 주말 1위 영화를 알려줘.,2025,every_week,FALSE,one-hop,fast-changing,https://www.kobis.or.kr/kobis/business/stat/boxs/findWeekendForeignBoxOfficeList.do,,영국 박스오피스 주말 1위 영화는 입니다.,,,,,,,,, +3036,DEV,생활/문화,올해 아카데미 장편 애니메이션 상 수상작은 뭐야?,2025,every_year,FALSE,one-hop,fast-changing,https://www.koreatimenews.com/news/article.html?no=731950,<플로우>,2025년 아카데미 장편 애니메이션 수상작은 <플로우>입니다.,,,,,,,,, +3037,DEV,경제,현재 전세계 시가총액 1위 기업의 이름이 뭐야?,2025,every_time,FALSE,one-hop,fast-changing,https://kr.tradingview.com/markets/world-stocks/worlds-largest-companies/,NVIDIA,NVIDIA가 현재 전세계 시가총액 1위 기업입니다.,,,,,,,,, +3038,DEV,IT/과학,올해 신형 아이폰의 한국 출시일이 언제야?,2025,every_year,FALSE,multi-hop,fast-changing,https://biz.heraldcorp.com/article/10559638,2025년 9월 12일,아이폰 17 시리즈는 2025년 9월 12일부터 한국 지역 사전 예약에 들어갑니다.,,,,,,,,, +3039,DEV,세계,우크라이나-러시아 전쟁에서 발생한 러시아군 전사자는 총 몇 명인가요?,2025,every_time,FALSE,one-hop,fast-changing,https://www.newsis.com/view/NISX20250727_0003267884,2025년 7월 기준 12만343명입니다.,러-우 전쟁으로 인해 러시아군은 12만 343명이 전사했습니다.,,,,,,,,, +3040,DEV,날씨,올해 대한민국에 영향을 준 태풍이 몇 개야?,2025,occasionally,FALSE,multi-hop,fast-changing,https://www.weather.go.kr/w/typhoon/typ-history.do,없습니다.,2025년 9월 기준 대한민국에 영향을 준 태풍은 없습니다.,올해 대한민국에 영향을 미친 태풍은 없습니다.,,,,,,,, +3041,DEV,정치,현재 진보 진영 차기 대선후보 지지도 2위는 누구인가요?,2025,every_time,FALSE,multi-hop,fast-changing,https://www.joongang.co.kr/article/25368265,정청래,조국에 이어 정청래가 진보 진영 지지율 2위입니다.,,,,,,,,, +3042,DEV,날씨,작년 여름에 발생한 호우와 태풍으로 인한 사상자 수는?,2024,every_year,FALSE,one-hop,fast-changing,https://www.yna.co.kr/view/AKR20241028057000530,6명,2024년 여름 한국에서 발생한 호우와 태풍으로 인한 인명 피해는 6명입니다.,,,,,,,,, +3043,DEV,날씨,연중 초미세먼지가 가장 높은 달은 언제야?,2025,every_month,FALSE,one-hop,fast-changing,https://www.airkorea.or.kr/portal/web/dust01?pMENU_NO=146,2025년 3월,2025년 기준 연중 초미세먼지가 가장 높은 달은 3월입니다.,,,,,,,,, +3044,DEV,연예,송강이 출연한 드라마는 총 몇 편이야?,2024,occasionally,FALSE,one-hop,fast-changing,http://www.namooactors.com/bbs/board.php?bo_table=nm3801,14편입니다.,송강이 출연한 드라마는 총 14편입니다.,,,,,,,,, +3045,DEV,연예,제작사 에그이즈커밍은 프로그램을 몇 개 제작하였나요?,2025,every_month,FALSE,one-hop,fast-changing,https://eggiscoming.com/about,2025년 기준 55개,55개입니다.,,,,,,,,, +3046,DEV,날씨,서울에서 마지막으로 9월 일강수량이 30mm를 넘었던 날은 언제인가요?,2025,every_year,FALSE,one-hop,fast-changing,https://www.weather.go.kr/w/observation/land/past-obs/obs-by-day.do?stn=108&yy=2025&mm=9&obs=1,2025년 9월 20일,2025년 9월 20일입니다.,2025년 9월 20일에 일강수량 35.3mm를 기록했습니다.,,,,,,,, +3047,DEV,경제,작년 글로벌 제약업계 매출 1위를 기록한 기업을 알려줘. ,2024,occasionally ,FALSE,multi-hop,fast-changing,http://www.hitnews.co.kr/news/articleView.html?idxno=62564,존슨앤드존슨(Johnson & Johnson),557억 달러를 벌어들인 존슨앤드존슨입니다.,,,,,,,,, +3048,DEV,스포츠,현재 두산 베어스의 감독은 누구야?,2025,occasionally ,TRUE,one-hop,fast-changing,https://www.doosanbears.com/member/coachStaff,현재 두산 베어스는 감독이 없습니다.,현재 두산 베어스는 감독이 없으며 조성환이 감독대행을 맡고 있습니다.,조성환이 공석인 감독직의 대행을 맡고 있습니다.,2025년 6월 3일부터 두산 베어스의 감독은 공석입니다.,,,,,,, +3049,DEV,생활/문화,전국에 운영 중인 온센텐동 매장 총 개수는 몇 개야?,2025,occasionally,FALSE,one-hop,fast-changing,http://onsenfood.kr/board/list.php?bdId=store,35개입니다.,전국에 운영 중인 온센텐동 매장 총개수는 35개입니다.,,,,,,,,, +3050,DEV,날씨,올해 8월에 서울에는 눈이 얼마나 많이 올까?,2025,every_time,TRUE,one-hop,fast-changing,https://data.kma.go.kr/climate/snw/selectSnwChart.do?pgmNo=697,2025년 8월 서울에는 눈이 내리지 않았습니다.,일반적으로 서울은 8월에 눈이 오지 않습니다. ,,,,,,,,, +3051,DEV,경제,비트코인이 한국에서 법정화폐로 인정된 이유가 뭐야?,2025,occasionally,TRUE,multi-hop,fast-changing,https://ko.wikipedia.org/wiki/%EB%B9%84%ED%8A%B8%EC%BD%94%EC%9D%B8#%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD,비트코인은 한국에서 법정화폐로 인정되지 않았습니다.,비트코인은 아직 한국에서 법정 화폐로 인정된 적이 없습니다.,,,,,,,,, +3052,DEV,경제,최근 발생한 최저시급 인하는 기업에 어떤 영향을 주었나요?,2025,every_year,TRUE,one-hop,fast-changing,"https://news.kbs.co.kr/news/pc/view/view.do?ncd=8009995 +https://www.minimumwage.go.kr/minWage/policy/decisionMain.do",최저시급은 지속적으로 상승하고 있습니다.,최저 시급은 계속해서 오르고 있습니다.,,,,,,,,, +3053,DEV,스포츠,이강인이 리그 득점왕을 수상한게 몇 년도야?,2025,occasionally,TRUE,one-hop,fast-changing,https://ko.wikipedia.org/wiki/%EC%9D%B4%EA%B0%95%EC%9D%B8#%EC%88%98%EC%83%81_%EB%82%B4%EC%97%AD,이강인은 득점왕을 수상한 적이 없습니다.,이강인은 득점왕을 한 적이 없습니다.,,,,,,,,, +3054,DEV,날씨,올해 1월에 기온이 30도까지 올라간 날이 언제였어?,2025,n/a,TRUE,one-hop,fast-changing,https://www.weather.go.kr/w/observation/land/past-obs/obs-by-day.do?stn=108&yy=2025&mm=1&obs=1,"1월은 보통 영하권으로 떨어지기 때문에, 30도 이상 넘어갈 일이 없습니다.","1월은 겨울이며, 30도 까지 올라갈 일이 없습니다.",,,,,,,,, +3055,DEV,날씨,"대한민국에서 열대야는 밤 최저 기온이 27도 이상인 날이라고 정의되는데, 이번 여름에는 며칠이나 열대야였지?",2025,every_year,TRUE,one-hop,fast-changing,"https://ko.wikipedia.org/wiki/%EC%97%B4%EB%8C%80%EC%95%BC +https://data.kma.go.kr/climate/tropicalNight/selectTropicalNightMixChart.do?pgmNo=675",한국의 열대야는 밤 최저 기온이 25도 이상인 밤을 의미합니다.,한국은 밤 최저 기온이 25도 이상인 밤을 열대야라고 합니다.,,,,,,,,, +3056,DEV,IT/과학,스마트폰 시리즈인 갤럭시 S Pro의 최종 판매량은 몇 대인가요?,2025,occasionally,TRUE,one-hop,fast-changing,https://ko.wikipedia.org/wiki/%EC%82%BC%EC%84%B1_%EA%B0%A4%EB%9F%AD%EC%8B%9C_S_%EC%8B%9C%EB%A6%AC%EC%A6%88,갤럭시 S 프로라는 스마트폰 모델은 존재하지 않습니다.,존재하지 않는 모델명이라 확인이 불가능합니다.,,,,,,,,, +3057,DEV,스포츠,종합격투기 선수인 추신수의 현재 나이를 알려줘.,2025,every_year,TRUE,one-hop,fast-changing,"https://ko.wikipedia.org/wiki/%EC%B6%94%EC%8B%A0%EC%88%98 +https://www.yna.co.kr/view/AKR20250614032800007",추신수는 야구 선수 출신이며 격투기 선수가 아닙니다.,추신수는 야구 선수 출신입니다.,,,,,,,,, +3058,DEV,생활/문화,<오징어 게임> 시즌2의 누적 시청자 수를 알려줘.,2025,frequently,FALSE,one-hop,fast-changing,https://www.yna.co.kr/view/AKR20250718065100005,1억1천700만 시청수를 기록했습니다.,1억 1천 700만,,,,,,,,, +3059,DEV,생활/문화,서울공예박물관의 다음 주 월요일 운영시간을 알려줘.,2025,every_week,TRUE,one-hop,fast-changing,https://craftmuseum.seoul.go.kr/preview/visit,서울공예박물관은 월요일에 운영하지 않습니다.,서울공예박물관은 월요일에 미운영합니다.,,,,,,,,, +3060,DEV,스포츠,LG트윈스 이번 시즌 홍창기 평균 자책점 알려줘,2025,n/a,TRUE,multi-hop,fast-changing,https://ko.wikipedia.org/wiki/%ED%99%8D%EC%B0%BD%EA%B8%B0#%ED%86%B5%EC%82%B0_%EA%B8%B0%EB%A1%9D,LG트윈스의 홍창기 선수는 투수가 아닌 야수입니다.,LG트윈스의 홍창기 선수는 야수로서 투수의 기록인 평균 자책점 기록이 없습니다.,,,,,,,,, +3061,DEV,세계,고전소설인 홍루몽은 어느 시대에 만들어졌나요?,before 2022,n/a,FALSE,one-hop,never-changing,홍루몽(紅樓夢) - 한국민족문화대백과사전 (aks.ac.kr),조선 후기,홍루몽은 조선후기에 작성되었습니다.,조선후기에 홍루몽은 쓰였습니다.,,,,,,,, +3062,DEV,연예,연정훈과 한가인은 몇 년도에 결혼했지?,before 2022,n/a,FALSE,one-hop,never-changing,https://www.news1.kr/entertain/celebrity-topic/5421340,2005년,2005년도에 연정훈과 한가인은 결혼했습니다.,한가인과 연정훈은 2005년도에 결혼했습니다.,,,,,,,, +3063,DEV,사회,한강은 한국의 어느 지역을 통과하나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://w.wiki/BDt5,"한강 본류는 경기, 관동, 해서, 호서 등 네 지방을 동에서 서로 통과합니다.","경기, 관동, 해서, 호서",,,,,,,,, +3064,DEV,사회,2023년 대한민국의 출산율은?,2023,n/a,FALSE,one-hop,never-changing,https://www.index.go.kr/unify/idx-info.do?pop=1&idxCd=5061,0.72명,2023년 대한민국의 합계출산율은 0.72명입니다.,,,,,,,,, +3065,DEV,경제,청약저축의 월 납입 인정액은 2024년 11월 1일부터 얼마로 상향되나요?,2024,n/a,FALSE,multi-hop,never-changing,https://n.news.naver.com/mnews/article/215/0001181043,25만원,2024년 11월부터 청약저축 납입액은 25만원까지 인정됩니다.,,,,,,,,, +3066,DEV,사회,서울대학교는 언제 설립되었니?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%84%9C%EC%9A%B8%EB%8C%80%ED%95%99%EA%B5%90,1946년 10월 15일,서울대학교는 1946년 10월 15일에 설립되었습니다.,서울대학교의 설립일은 1946년 10월 15일입니다.,,,,,,,, +3067,DEV,연예,한국 드라마 최초로 전 세계 넷플릭스 드라마 부문 1위를 기록한 작품의 이름은 뭐지?,before 2022,n/a,FALSE,one-hop,never-changing,https://terms.naver.com/entry.naver?docId=6507743&cid=43667&categoryId=43667,오징어 게임,한국 드라마 최초로 전 세계 넷플릭스 드라마 부문 1위를 기록한 작품의 이름은 오징어 게임입니다.,오징어 게임입니다.,,,,,,,, +3068,DEV,연예,2018 영화 '버닝'의 원작은 무엇인가요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%B2%84%EB%8B%9D_%282018%EB%85%84_%EC%98%81%ED%99%94%29,헛간을 태우다,버닝의 원작은 무라카미 하루키의 단편 소설 '헛간을 태우다'입니다.,,,,,,,,, +3069,DEV,사회,대한민국의 국보 1호는 뭐야?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD%EC%9D%98_%EA%B5%AD%EB%B3%B4_(1960%EB%85%84%EB%8C%80),숭례문,대한민국의 국보 1호는 숭례문입니다.,숭례문은 대한민국 국보 1호로 선정되었습니다.,,,,,,,, +3070,DEV,연예,비틀즈의 주요 음악 장르는 뭐야?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%B9%84%ED%8B%80%EC%A6%88%EC%9D%98_%EB%AC%B8%ED%99%94%EC%A0%81_%EC%98%81%ED%96%A5,록(Rock),비틀즈의 주요 음악 장르는 록입니다.,비틀즈의 주요 음악 장르는 록(Rock)입니다.,,,,,,,, +3071,DEV,IT/과학,이세돌 9단과의 대결로 화제가 된 구글이 만든 바둑 AI 프로그램은 뭐야?,before 2022,n/a,FALSE,multi-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%95%8C%ED%8C%8C%EA%B3%A0,알파고,인간 대표 이세돌 9단과의 바둑 대결로 주목을 받은 구글의 프로그램은 알파고입니다.,"구글이 만든 바둑 프로그램으로, 이세돌 9단과의 대결로 유명한 것은 알파고입니다.",,,,,,,, +3072,DEV,경제,대한민국에 소득세는 언제 처음 도입되었나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://www.archives.go.kr/next/newsearch/listSubjectDescription.do?id=006143&pageFlag=&sitePage=,1949년 7월 5일,소득세는 1949년 대한민국에 최초로 도입됐습니다.,,,,,,,,, +3073,DEV,연예,드라마 미스터 션샤인을 촬영한 스튜디오는 어디야?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%AF%B8%EC%8A%A4%ED%84%B0_%EC%85%98%EC%83%A4%EC%9D%B8,충청남도 논산시 연무읍의 션샤인 스튜디오,드라마 미스터 선샤인의 주요 촬영지는 충청남도 논산시에 위치한 션샤인 스튜디오입니다.,미스터 선샤인의 주요 촬영지는 충청남도 논산에 있는 션샤인 스튜디오입니다. ,충남 논산시 연무읍 션샤인 스튜디오,,,,,,, +3074,DEV,정치,김영삼 정부 시기 IMF 경제위기를 맞은 연도는 언제인가요?,before 2022,n/a,FALSE,one-hop,never-changing,https://terms.naver.com/entry.naver?docId=3560133&cid=47306&categoryId=47306,1997년,IMF 경제 위기를 맞은 때는 1997년입니다.,1997년 입니다.,,,,,,,, +3075,DEV,생활/문화,<도덕의 계보>의 작가는 누구야?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%8F%84%EB%8D%95%EC%9D%98_%EA%B3%84%EB%B3%B4,프리드리히 니체,《도덕의 계보》의 작가는 프리드리히 니체입니다.,《도덕의 계보》의 저자는 프리드리히 니체입니다.,,,,,,,, +3076,DEV,생활/문화,짜장면은 어느 나라 음식이야?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%A7%9C%EC%9E%A5%EB%A9%B4,한국,짜장면은 중국의 자장몐이 한국식으로 변형된 한국 음식입니다.,,,,,,,,, +3077,DEV,경제,대한항공은 언제 창립되었지?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%8C%80%ED%95%9C%ED%95%AD%EA%B3%B5,1969년 3월 1일,1969년 3월의 첫 번째 날,대한항공은 1969년 3월 1일에 창립되었습니다. ,,,,,,,, +3078,DEV,날씨,2017년 11월 15일에 발생한 포항지진의 규모는 몇인가요?,before 2022,n/a,FALSE,one-hop,never-changing,https://www.weather.go.kr/w/eqk-vol/archive/major-eqk/pohang.do,5.4,규모 5.4의 지진이 발생했습니다.,,,,,,,,, +3079,DEV,정치,김영란법이 시행된 일시는 언제인가요?,before 2022,n/a,FALSE,one-hop,never-changing,https://terms.naver.com/entry.naver?docId=2724013&cid=43667&categoryId=43667, 2016년 9월 28일,"법안은 2015년 3월 국회 본회의를 통과했으나, 발의 4년여 만인 2016년 9월 28일 시행되었습니다.",김영란법은 2016년 9월 28일 청탁금지법이라는 이름하에 시행되었습니다.,"청탁금지법, 일명 김영란법은 2015년 3월 3일 국회 본회의에서 통과돼 3월 27일 공포되었으며, 1년 6개월의 유예 기간을 거쳐 2016년 9월 28일부터 시행되었습니다 .",,,,,,, +3080,DEV,경제,2024년 산업은행이 부산에 남부권투자금융본부와 함께 신설하는 조직은 무엇인가요?,2024,n/a,FALSE,one-hop,never-changing,https://n.news.naver.com/mnews/article/658/0000084439,지역기업종합지원센터,지역기업종합지원센터를 남부권투자금융본부와 함께 신설합니다.,,,,,,,,, +3081,DEV,정치,대한민국 정부의 성립일은?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD_%EC%A0%95%EB%B6%80,1948년 8월 15일,1948년 8월 15일 대한민국 정부가 성립되었습니다.,,,,,,,,, +3082,DEV,IT/과학,북두칠성은 어느 별자리의 일부에요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%ED%81%B0%EA%B3%B0%EC%9E%90%EB%A6%AC,큰곰자리,북두칠성은 큰곰자리의 일부입니다.,북두칠성은 큰곰자리에 포함된 7개의 밝은 별입니다.,,,,,,,, +3083,DEV,날씨,2022년 강남 폭우 사태로 남매가 맨홀에 추락사한 사건이 일어난 날짜를 알려줘.,2022,n/a,FALSE,one-hop,never-changing,"https://www.sisajournal.com/news/articleView.html?idxno=244268 +https://news.sbs.co.kr/news/endPage.do?news_id=N1006884256",서울에 내린 폭우로 남매가 맨홀에 빠져 사망한 사건은 2022년에 발생했습니다.,서울의 폭우로 남매가 맨홀에 추락사한 사건은 2022년에 일어났습니다. ,2022년도에 폭우로 인해 남매가 맨홀에서 추락사했습니다. ,,,,,,,, +3084,DEV,경제,2024년 MBK·영풍이 고려아연에 대한 공개매수 가격으로 제시한 금액은 얼마인가요?,2024,n/a,FALSE,one-hop,never-changing,https://n.news.naver.com/mnews/article/008/0005093731,66만원,MBK·영풍은 고려아연 주식을 66만원에 공개매수하겠다 제시했습니다.,,,,,,,,, +3085,DEV,사회,한국의 2022년 인구는 몇 명이었나요?,2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD%EC%9D%98_%EC%9D%B8%EA%B5%AC,"약 5,160만 명입니다.","2022년 대한민국의 인구는 약 5,160만 명입니다.",,,,,,,,, +3086,DEV,생활/문화,2016년의 소설 채식주의자를 쓴 작가가 누구였지?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%ED%95%9C%EA%B0%95_(%EC%86%8C%EC%84%A4%EA%B0%80),한강,소설 채식주의자를 집필한 작가는 한강입니다.,,,,,,,,, +3087,DEV,생활/문화,한국 최초의 라면은 무엇인가요?,before 2022,n/a,FALSE,one-hop,never-changing,https://terms.naver.com/entry.naver?docId=3331494&cid=62011&categoryId=62018,삼양라면,"한국 최초의 라면은 삼양라면으로, 1963년 9월에 출시되었습니다.",,,,,,,,, +3088,DEV,경제,경기도 내 농협이 가장 최근에 쌀 소비 촉진 캠페인을 시작한 날짜를 알려줘.,2025,n/a,FALSE,one-hop,never-changing,https://www.nongmin.com/article/20250825500078,2025년 8월 22일,2025년 8월 22일입니다.,,,,,,,,, +3089,DEV,사회,고령화사회는 65세 이상 인구가 총인구를 차지하는 비율이 몇% 이상일 때를 의미하나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EA%B3%A0%EB%A0%B9%ED%99%94,7% 이상,65세 이상 인구가 총인구를 차지하는 비율이 7% 이상을 고령화사회라고 합니다.,7%이상 입니다.,,,,,,,, +3090,DEV,날씨,2024년에 태풍은 언제 처음으로 발생했어?,2024,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/2024%EB%85%84_%ED%83%9C%ED%92%8D#%EC%A0%9C1%ED%98%B8_%ED%83%9C%ED%92%8D_%EC%97%90%EC%9C%84%EB%8B%88%EC%95%84,5월 26일,2024년 5월 26일,2024년 5월 26일 제1호 태풍 에위니아가 발생했습니다.,,,,,,,, +3091,DEV,생활/문화,이데아를 주장한 철학자는 누구지?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%ED%94%8C%EB%9D%BC%ED%86%A4,플라톤,이데아를 주장한 철학자는 플라톤입니다.,이데아라는 개념을 제안한 철학자는 플라톤입니다.,,,,,,,, +3092,DEV,경제,2024년 1인가구 중위소득 100%는 얼마야?,2024,"n/a +",FALSE,one-hop,never-changing,https://www.index.go.kr/unity/potal/main/EachDtlPageDetail.do?idx_cd=2762,"2,228,445원","2,228,445원입니다.","2024년 1인 가구 중위소득 100%는 2,228,445원입니다.",,,,,,,, +3093,DEV,세계,영국은 언제 EU 탈퇴를 선언하였나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://terms.naver.com/entry.naver?docId=2080222&cid=50305&categoryId=50305,2017년 1월 17일,영국은 2017년 1월 17일에 EU관세동맹과 EU단일시장에서 동시 탈퇴하겠다고 선언하였습니다.,브렉시트 선언은 2017년도에 이루어졌습니다.,,,,,,,, +3094,DEV,사회,국군의 날은 언제야?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EA%B5%AD%EA%B5%B0%EC%9D%98_%EB%82%A0,10월 1일,국군의 날은 매년 10월 1일입니다.,,,,,,,,, +3095,DEV,사회,카카오와 다음커뮤니케이션의 합병을 발표한 날은 언제인가요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%8B%A4%EC%9D%8C,2014년 5월 26일입니다.,카카오와 다음커뮤니케이션의 합병 발표일은 2014년 5월 26일입니다.,,,,,,,,, +3096,DEV,세계,대한민국의 세계문화유산 1호는 무엇인가요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD%EC%9D%98_%EC%84%B8%EA%B3%84%EC%9C%A0%EC%82%B0,석굴암과 불국사,대한민국은 1995년 석굴암과 불국사가 문화유산으로 등록되었습니다.,,,,,,,,, +3097,DEV,연예,스크린 쿼터 제도는 몇 년도에 최초로 시행되었나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://terms.naver.com/entry.naver?docId=349527&cid=42617&categoryId=42617,스크린쿼터는 특정 영화를 정한 비율만큼 상영하도록 하는 제도로 1927년 영국에서 처음 시작되었습니다.,1927년,,,,,,,,, +3098,DEV,사회,대한민국 최초로 범죄 수사에 최면술사가 동원된 사건은 무엇인가?,before 2022,n/a,FALSE,one-hop,never-changing,https://www.joongboo.com/news/articleView.html?idxno=1376532,정효주 유괴사건,대한민국 최초로 범죄 수사에 최면술사가 동원된 사건은 정효주 유괴사건입니다.,,,,,,,,, +3099,DEV,사회,이육사가 의열단에 가입한 년도는 언제인가요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%9D%B4%EC%9C%A1%EC%82%AC,이육사는 1925년 형제들과 함께 의열단에 가입했습니다.,1925년입니다.,,,,,,,,, +3100,DEV,사회,최초의 사회주의 혁명이 발발한 해는 언제지?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%A4%EB%A0%88%ED%83%80%EB%A6%AC%EC%95%84_%ED%98%81%EB%AA%85,1917년,1917년 블라디미르 레닌이 최초의 사회주의 혁명을 이룩했습니다.,,,,,,,,, +3101,DEV,정치,선거일 당일의 투표 가능 시간을 알려줘.,before 2022,n/a,FALSE,one-hop,never-changing,https://casenote.kr/%EB%B2%95%EB%A0%B9/%EA%B3%B5%EC%A7%81%EC%84%A0%EA%B1%B0%EB%B2%95/%EC%A0%9C155%EC%A1%B0,공직선거법 제155조에 따라 투표소는 선거일 오전 6시에 열고 오후 6시(보궐선거등에 있어서는 오후 8시)에 닫습니다. ,오전 6시부터 오후 6시(보궐선거등에 있어서는 오후 8시),,,,,,,,, +3102,DEV,사회,날씨와 기후의 차이를 알려줘.,before 2022,n/a,FALSE,multi-hop,never-changing,http://www.nims.go.kr/?sub_num=827,일반적으로 짧은 시간 시시각각으로 변화하는 날씨 현상을 “기상현상”이라고 부르고 이와 같은 기상현상들의 긴 시간 동안의 평균적인 상태를 “기후”라 합니다.,"일반적으로 기상학자들은 “기후란 당신이 생각하는 것이고, 날씨란 당신이 보는 것이다.”, “날씨는 기분이고 기후는 성품이다.”라고 말하며 차이를 설명합니다.",,,,,,,,, +3103,DEV,경제,2024년 비자가 인수하려다 법무부 제동으로 포기한 결제지원 플랫폼 스타트업은 무엇인가요?,2024,n/a,FALSE,one-hop,never-changing,https://n.news.naver.com/mnews/article/009/0005370189,플레이드,비자는 2024년 플레이드를 인수하려다 법무부 제동으로 포기했습니다.,,,,,,,,, +3104,DEV,생활/문화,롯데백화점 본점은 2024년 추석에 영업 하나요?,2024,n/a,FALSE,one-hop,never-changing,https://n.news.naver.com/mnews/article/215/0001179723,추석 전날인 16일과 추석 당일인 17일 이틀간은 영업하지 않습니다.,롯데백화점 본점은 추석 전날인 16일과 추석 당일인 17일 이틀간 문을 닫습니다.,"롯데 백화점 본점은 추석 연휴에 16,17일 이틀간 영업하지 않습니다.",,,,,,,, +3105,DEV,IT/과학,미국 연방항공국에 사전 신고를 하지 않아도 미국 영공의 민간 공로를 비행할 수 있도록 인증받은 최초의 무인 항공기는 무엇인가요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/RQ-4_%EA%B8%80%EB%A1%9C%EB%B2%8C_%ED%98%B8%ED%81%AC,글로벌 호크,글로벌 호크는 미 공군에서 정찰기로 사용되는 무인 항공기입니다.,,,,,,,,, +3106,DEV,사회,대한민국 최남단에 위치한 섬의 이름은 무엇인가요?,before 2022,n/a,FALSE,one-hop,never-changing,https://terms.naver.com/entry.naver?docId=4294820&cid=43737&categoryId=59599,마라도,마라도는 대한민국의 끝이자 시작인 최남단에 위치하고 있습니다.,마라도는 한국 최남단에 위치한 섬입니다.,,,,,,,, +3107,DEV,생활/문화,"<총, 균, 쇠>의 저자가 누군지 알려줘.",before 2022,n/a,FALSE,one-hop,never-changing,"https://ko.wikipedia.org/wiki/%EC%B4%9D,_%EA%B7%A0,_%EC%87%A0",재러드 다이아몬드,"《총, 균, 쇠》의 작가는 재러드 다이아몬드입니다.",,,,,,,,, +3108,DEV,경제,최초의 암호화폐는 언제 발행되었지?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%95%94%ED%98%B8%ED%99%94%ED%8F%90,2009년,"최초의 암호화폐는 비트코인으로, 2009년 발행되었습니다.",2009년 1월 3일 첫 암호화폐가 발행되었습니다.,,,,,,,, +3109,DEV,생활/문화,아모레퍼시픽의 화장품 브랜드 중 한국 전통에서 영감을 받은 브랜드가 뭔지 알려줘.,before 2022,n/a,FALSE,multi-hop,never-changing,https://www.sulwhasoo.com/kr/ko/about-sulwhasoo/brand-story/brand-story.html,설화수,설화수입니다.,한국 전통에 영감을 받은 아모레퍼시픽의 화장품 브랜드는 설화수입니다.,,,,,,,, +3110,DEV,연예,처음으로 캐릭터 '하츄핑'이 등장하는 극장용 애니메이션 영화의 제목을 알려줘.,2024,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%82%AC%EB%9E%91%EC%9D%98_%ED%95%98%EC%B8%84%ED%95%91,사랑의 하츄핑,사랑의 하츄핑'입니다.,,,,,,,,, +3111,DEV,세계,시베리아 횡단열차는 모스크바에서 블라디보스토크까지 며칠동안 운행하나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%8B%9C%EB%B2%A0%EB%A6%AC%EC%95%84_%ED%9A%A1%EB%8B%A8_%EC%B2%A0%EB%8F%84,6일 4시간,시베리아 횡단열차를 모스크바에서 블라디보스토크까지 6일 4시간 동안 운행해야 도착합니다.,,,,,,,,, +3112,DEV,경제,한국에 부가가치세 제도는 언제 도입되었나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://terms.naver.com/entry.naver?docId=68631&cid=43667&categoryId=43667,1977년 7월 1일,1977년에 부가가치세가 한국에 최초 도입되었습니다.,한국에 부가가치세는 1977년에 도입되었습니다.,,,,,,,, +3113,DEV,IT/과학,챗GPT가 처음으로 공개된 날은 언제인가요?,2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%B1%97GPT,2022년 11월 30일,챗GPT는 2022년 11월 30일에 처음으로 공개되었습니다.,,,,,,,,, +3114,DEV,연예,아이브의 'ELEVEN'은 가요 프로그램에서 1위를 몇 번 차지했나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/IVE%EC%9D%98_%EC%88%98%EC%83%81_%EB%B0%8F_%ED%9B%84%EB%B3%B4_%EB%AA%A9%EB%A1%9D,5번,총 5번의 가요 프로그램 1위를 기록했습니다.,아이브는 ELEVEN 노래로 1위를 다섯 번 차지했습니다.,,,,,,,, +3115,DEV,사회,병자호란이 일어난 년도는 언제인가요?,before 2022,n/a,FALSE,one-hop,never-changing,https://terms.naver.com/entry.naver?docId=576441&cid=46622&categoryId=46622,1636년 입니다.,병자호란은 1636년에 발생했습니다.,1636년에 병자호란이 일어났습니다.,,,,,,,, +3116,DEV,사회,인천광역시의 국립 대학교는 어디야?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%9D%B8%EC%B2%9C%EB%8C%80%ED%95%99%EA%B5%90,인천대학교,인천대학교가 인천광역시의 국립 대학교입니다.,,,,,,,,, +3117,DEV,연예,드라마 도깨비는 어떤 방송사에서 방영되었나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://tvn.cjenm.com/ko/dokebi/,tvN,드라마 도깨비는 tvN에서 방영되었습니다.,도깨비는 케이블 채널 tvN을 통해 방송되었습니다.,,,,,,,, +3118,DEV,스포츠,2020년 도쿄 올림픽에서 한국이 획득한 금메달 수는 몇 개인가요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/2020%EB%85%84_%ED%95%98%EA%B3%84_%EC%98%AC%EB%A6%BC%ED%94%BD_%EB%A9%94%EB%8B%AC_%EC%A7%91%EA%B3%84,"6개입니다. ",2020년 도쿄 올림픽에서 대한민국은 총 6개의 금메달을 획득했습니다.,,,,,,,,, +3119,DEV,스포츠,2002년 FIFA 월드컵 당시 대한민국 선수단의 주장은 누구였어?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/2002%EB%85%84_FIFA_%EC%9B%94%EB%93%9C%EC%BB%B5_%EC%84%A0%EC%88%98_%EB%AA%85%EB%8B%A8#%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD,홍명보,2002년 월드컵에서 대한민국의 주장은 홍명보였습니다.,,,,,,,,, +3120,DEV,세계,현재 복지 삭감 및 선물 스캔들로 지지율의 하락을 겪고 있는 영국의 집권당명이 뭐지?,2025,n/a,FALSE,one-hop,never-changing,https://www.chosun.com/international/international_general/2025/07/11/SG6ZFS55MBA5ZPEEMBNPVPPDFE/,영국 노동당,노동당입니다.,,,,,,,,, +3121,DEV,연예,1979년 칸 영화제 황금종려상 수상작의 감독은 누구인가요? ,before 2022,n/a,FALSE,multi-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%A7%80%EC%98%A5%EC%9D%98_%EB%AC%B5%EC%8B%9C%EB%A1%9D,프랜시스 포드 코폴라,<지옥의 묵시록>의 감독은 프랜시스 포드 코폴라입니다.,<지옥의 묵시록>은 프랜시스 포드 코폴라 감독의 작품입니다.,,,,,,,, +3122,DEV,연예,임재범의 3집 타이틀곡이 뭐지?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%9E%84%EC%9E%AC%EB%B2%94,고해,임재범의 3집 타이틀곡은 1997년에 발표된 '고해'입니다.,,,,,,,,, +3123,DEV,세계,체르노빌 원전사고는 어느 나라에서 일어난 사건인가요?,before 2022,n/a,FALSE,one-hop,never-changing,https://terms.naver.com/entry.naver?docId=800318&cid=43082&categoryId=43082,우크라이나,우크라이나 소비에트 사회주의 공화국입니다.,체르노빌 원전사고는 우크라이나에서 일어났습니다.,,,,,,,, +3124,DEV,세계,미국 노동절은 언제지?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%85%B8%EB%8F%99%EC%A0%88_(%EB%AF%B8%EA%B5%AD),9월 첫째 주 월요일,미국 노동절은 매년 9월 첫째 주 월요일입니다.,,,,,,,,, +3125,DEV,IT/과학,"트랜스포머 모델의 인코더 부분을 활용한 모델로, 마스킹된 언어를 예측하는 방식으로 학습되어 다양한 자연어 이해 작업에서 최첨단 성능을 달성한 모델은 무엇인가요?",before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/BERT_(%EC%96%B8%EC%96%B4_%EB%AA%A8%EB%8D%B8),BERT,버트(BERT) 모델입니다,언어 모델 중 하나인 버트 입니다.,,,,,,,, +3126,DEV,생활/문화,<범죄와의 전쟁> 국내 개봉일이 언제인지 알려줘.,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%B2%94%EC%A3%84%EC%99%80%EC%9D%98_%EC%A0%84%EC%9F%81:_%EB%82%98%EC%81%9C%EB%86%88%EB%93%A4_%EC%A0%84%EC%84%B1%EC%8B%9C%EB%8C%80,2012년 2월 2일,《범죄와의 전쟁: 나쁜놈들 전성시대》의 개봉일 2012년 2월 2일입니다.,《범죄와의 전쟁: 나쁜놈들 전성시대》는 2012년 2월 2일 개봉했습니다.,,,,,,,, +3127,DEV,세계,동양인 여성 최초로 샌프란시스코 오페라 음악감독에 임명된 사람은 누구인가요?,before 2022,n/a,FALSE,one-hop,never-changing,https://www.hankyung.com/article/2024052418931,김은선,유럽과 미국 등에서 격찬을 받아온 한국인 여성지휘자 김은선은 미 샌프란시스코 오페라 역사상 여성 음악감독이 탄생하였습니다.,,,,,,,,, +3128,DEV,사회,대한민국에서 그레고리력은 언제부터 시행되었나요? ,before 2022,n/a,FALSE,one-hop,never-changing,https://w.wiki/BCq$,1896년,그레고리력은 대한민국에서 1896년 시행되었습니다.,,,,,,,,, +3129,DEV,IT/과학,해미래호는 세계에서 몇 번째로 만들어진 6천미터급 무인잠수정인가요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%ED%95%B4%EB%AF%B8%EB%9E%98,4번째,4번째로 건조된 심해무인잠수정입니다.,4번째입니다.,,,,,,,, +3130,DEV,IT/과학,카카오톡은 언제 출시했어?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%B9%B4%EC%B9%B4%EC%98%A4%ED%86%A1,2010년 3월 18일,카카오톡은 2010년 3월 18일에 서비스를 시작했습니다.,2010년 3월 18일입니다.,,,,,,,, +3131,DEV,날씨,2023년 한국의 온실가스 배출량은 전 세계적으로 몇 위였나요?,2023,n/a,FALSE,one-hop,never-changing,https://www.yna.co.kr/view/AKR20231202047800009,13위,2023년 한국의 온실가스 배출량은 전 세계에서 13위를 차지했습니다.,,,,,,,,, +3132,DEV,스포츠,23-24 시즌 라리가 득점왕 누구야?,2024,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%9D%BC%EB%A6%AC%EA%B0%80_2023-24,아르템 도우비크,2023-24 시즌 라리가의 득점왕은 24득점을 한 지로나의 아르템 도우비크입니다.,2023-24 시즌 라리가의 득점왕은 아르템 도우비크입니다.,,,,,,,, +3133,DEV,경제,리먼 브라더스는 언제 파산했나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%A6%AC%EB%A8%BC_%EB%B8%8C%EB%9D%BC%EB%8D%94%EC%8A%A4 https://ko.wikipedia.org/wiki/%EB%A6%AC%EB%A8%BC_%EB%B8%8C%EB%9D%BC%EB%8D%94%EC%8A%A4%EC%9D%98_%ED%8C%8C%EC%82%B0,2008년 9월 15일,리먼 브라더스는 2008년 9월 15일에 파산했습니다.,리만 브라더스가 파산한 날짜는 2008년 9월 15일입니다.,,,,,,,, +3134,DEV,날씨,시간당 어느 정도 비가 내려야 국지성 집중호우라고 부를 수 있어?,before 2022,n/a,FALSE,one-hop,never-changing,https://www.ddm.go.kr/www/contents.do?key=815,시간당 최고 80mm 이상,국지성 집중호우는 시간당 최고 80mm 이상의 비가 순식간에 퍼붓듯이 쏟아지는 폭우를 말합니다.,,,,,,,,, +3135,DEV,사회,지역가입자의 건강보험료는 어떻게 산정돼?,2025,n/a,FALSE,one-hop,never-changing,https://www.nhis.or.kr/nhis/policy/wbhada02000m01.do,"지역가입자의 건강보험료는 가입자의 소득, 재산(전월세 포함)을 기준으로 각 부과요소별로 산정한 후 합산한 보험료에 경감률 등을 적용하여 세대 단위로 부과합니다.","지역가입자의 건강보험료는 가입자의 소득, 재산(전월세 포함)을 기준으로 각 부과요소별로 산정하여 합산한 보험료에 경감률 등을 적용하여 세대 단위로 징수합니다.",,,,,,,,, +3136,DEV,사회,"고구려, 백제, 신라로 구성된 삼국시대를 통일한 나라는 누구인가요?",before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%ED%86%B5%EC%9D%BC%EC%8B%A0%EB%9D%BC,신라,통일신라입니다.,,,,,,,,, +3137,DEV,정치,대한민국의 초대 대통령의 임기기간이 언제부터 언제까지였는지 알려줘.,before 2022,n/a,FALSE,multi-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD%EC%9D%98_%EB%8C%80%ED%86%B5%EB%A0%B9_%EB%AA%A9%EB%A1%9D,1948년 7월 24일~1960년 4월 27일,대한민국 초대 대통령의 임기기간은 1948년 7월 24일~1960년 4월 27일입니다.,대한민국 초대 대통령인 이승만의 임기기간은 1948년 7월 24일~1960년 4월 27일입니다.,,,,,,,, +3138,DEV,생활/문화,광동에서 출시한 옥수수 수염차 칼로리는 얼마나 돼?,before 2022,n/a,FALSE,one-hop,never-changing,https://www.fatsecret.kr/%EC%B9%BC%EB%A1%9C%EB%A6%AC-%EC%98%81%EC%96%91%EC%86%8C/search?q=%EC%98%A5%EC%88%98%EC%88%98+%EC%88%98%EC%97%BC%EC%B0%A8,옥수수 수염차 500ml 병 하나당 열량은 5kcal입니다,5kcal / 500ml 입니다.,,,,,,,,, +3139,DEV,경제,리엔지니어링 기법은 누가 처음으로 도입하였나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://economychosun.com/site/data/html_dir/2010/08/04/2010080400033.html,"마이클 해머, 제임스 챔피",리엔지니어링(re-engineering)은 1990년 마이클 해머와 제임스 챔피가 처음으로 제시한 개념입니다.,,,,,,,,, +3140,DEV,경제,모건스탠리는 어디서 창립되었어?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%AA%A8%EA%B1%B4_%EC%8A%A4%ED%83%A0%EB%A6%AC,뉴욕 시입니다.,모건스탠리는 뉴욕 시에서 창립되었습니다.,,,,,,,,, +3141,DEV,연예,트와이스 지효의 출생지가 어디야?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%ED%8A%B8%EC%99%80%EC%9D%B4%EC%8A%A4,경기도입니다.,트와이스 멤버 지효의 출생지는 대한민국 경기도 구리시입니다.,트와이스 멤버 지효는 경기도 구리시에서 태어났습니다.,,,,,,,, +3142,DEV,경제,"대한민국에서 2017년 10월에 출시되어, 대규모 암호화폐 거래소 중 하나로 자리 잡은 플랫폼의 이름을 알려줘.",before 2022,n/a,FALSE,multi-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%97%85%EB%B9%84%ED%8A%B8,업비트,업비트는 2017년 10월에 출시되어 현재 국내에서 가장 큰 거래소 중 하나로 자리 잡았습니다.,2017년 10월에 출범한 업비트는 현재 대한민국에서 가장 큰 암호화폐 거래소 중 하나입니다.,,,,,,,, +3143,DEV,정치,김일성의 집권 기간은 얼마나 되나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EA%B9%80%EC%9D%BC%EC%84%B1,46년,1948년 9월 9일부터 1994년 7월 8일까지 총 46년 동안 집권하였습니다.,"김일성은 46년간 북한을 통치했으며, 북한 제1대 최고지도자입니다.",,,,,,,, +3144,DEV,사회,목화 씨를 처음 우리나라에 가져온 사람이 누구야?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%AC%B8%EC%9D%B5%EC%A0%90,문익점,문익점이 우리나라에 처음 목화 씨를 가져왔습니다.,,,,,,,,, +3145,DEV,사회,임진왜란은 몇년도에 일어났나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://terms.naver.com/entry.naver?docId=795412&cid=46622&categoryId=46622,1592년 입니다.,임진왜란은 1592년에 일어났습니다.,1592년에 임진왜란이 발생했습니다.,,,,,,,, +3146,DEV,세계,크림전쟁이 시작된 년도는?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%ED%81%AC%EB%A6%BC_%EC%A0%84%EC%9F%81,1853년,크림 전쟁은 1853년 10월에 시작됐습니다.,,,,,,,,, +3147,DEV,경제,매출액과 그 매출을 위해 소요된 총비용이 일치되는 시점을 무엇이라고 하나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%86%90%EC%9D%B5%EB%B6%84%EA%B8%B0%EC%A0%90,손익분기점,손익분기점입니다.,일정기간의 매출액이 당해 기간의 총비용과 일치하는 시점을 손익분기점이라 합니다.,,,,,,,, +3148,DEV,스포츠,세리에 A의 22-23 시즌 우승팀은 어디인가요?,2023,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%84%B8%EB%A6%AC%EC%97%90_A_2022-23 https://ko.wikipedia.org/wiki/SSC_%EB%82%98%ED%8F%B4%EB%A6%AC,SSC 나폴리,22-23 시즌 세리에 A의 우승팀은 SSC 나폴리입니다.,,,,,,,,, +3149,DEV,IT/과학,캐리어 코퍼레이션을 창립한 인물이 누군지 알려줘.,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%BA%90%EB%A6%AC%EC%96%B4_(%EA%B8%B0%EC%97%85),윌리스 캐리어,캐리어 코퍼레이션은 1925년 윌리스 캐리어가 설립하였습니다.,,,,,,,,, +3150,DEV,정치,1947년에 제정한 미국의 노사관계법은 무엇인가요?,before 2022,n/a,FALSE,one-hop,never-changing,https://terms.naver.com/entry.naver?docId=73169&cid=43667&categoryId=43667,태프트-하틀리 법,태프트-하틀리 법은 1935년 와그너법의 폐단을 시정하기 위해 미국의 현행 노동 기본법으로 1947년에 제정되었습니다.,,,,,,,,, +3151,DEV,스포츠,김연아가 2010년 밴쿠버 올림픽에서 금메달을 따며 기록한 최고 점수는?,before 2022,n/a,FALSE,multi-hop,never-changing,https://ko.wikipedia.org/wiki/%EA%B9%80%EC%97%B0%EC%95%84,228.56점,김연아는 2010년 밴쿠버 올림픽에서 228.56점을 기록하며 금메달을 획득했습니다.,김연아가 밴쿠버 올림픽에서 금메달을 따면서 세운 최고 점수는 228.56점이었습니다.,,,,,,,, +3152,DEV,정치,2020년 자유한국당이 불교계 스님에게도 발송하여 곤욕을 치뤘던 설 선물이 무엇이였나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://imnews.imbc.com/replay/2020/nwdesk/article/5652736_32524.html,육포,"2022년 보수정당인 자유한국당은 설을 맞이하여 각계 인사들에게 전달한 육포가 조계종 스님에게도 전달되는 실수로 사과 후, 회수한 일이 발생했습니다.",,,,,,,,, +3153,DEV,IT/과학,양자리는 어느 계절의 별자리야?,before 2022,n/a,FALSE,one-hop,never-changing,https://astro.kasi.re.kr/learning/pageView/5270,가을,양자리는 가을철 별자리 입니다.,,,,,,,,, +3154,DEV,정치,대한민국의 UN 가입연도는 언제인가요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%9C%A0%EC%97%94_%ED%9A%8C%EC%9B%90%EA%B5%AD,1991년,1991년 9월 17일 UN에 대한민국이 가입했습니다.,,,,,,,,, +3155,DEV,세계,세계에서 가장 오래된 대학 박물관은 어디야?,before 2022,n/a,FALSE,one-hop,never-changing,https://w.wiki/BFjJ,애슈몰린 박물관,세계에서 가장 오래된 대학 박물관은 애슈몰린 박물관입니다.,,,,,,,,, +3156,DEV,경제,대한민국에서 최초로 이더리움 거래 서비스를 시작한 암호화폐 거래소는?,before 2022,n/a,FALSE,one-hop,never-changing,https://www.etnews.com/20250807000193,코빗,코빗입니다.,,,,,,,,, +3157,DEV,스포츠,오상욱이 2024 파리 올림픽에서 딴 금메달은 몇 개야?,2024,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%98%A4%EC%83%81%EC%9A%B1,2개,오상욱이 2024 파리 올림픽에서 딴 금메달의 갯수는 2개입니다.,,,,,,,,, +3158,DEV,사회,2023년 기준 1인 가구의 비율은 어떻게 돼?,2023,"n/a +",FALSE,one-hop,never-changing,https://www.index.go.kr/unify/idx-info.do?idxCd=5065,35.5%,35.5%입니다. ,2023년 기준 1인 가구의 비율은 35.5%입니다.,,,,,,,, +3159,DEV,사회,대한민국 최초의 노벨상 수상자는?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD%EC%9D%98_%EB%85%B8%EB%B2%A8%EC%83%81_%EC%88%98%EC%83%81%EC%9E%90_%EB%AA%A9%EB%A1%9D,김대중,김대중 전 대통령입니다.,,,,,,,,, +3160,DEV,사회,국회의사당은 언제 준공되었어?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EA%B5%AD%ED%9A%8C%EC%9D%98%EC%82%AC%EB%8B%B9_(%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD),1975년,국회의사당은 1975년에 준공되었습니다.,,,,,,,,, +3161,DEV,경제,세계 최초 비트코인을 법정화폐로 채택한 나라는?,before 2022,n/a,FALSE,one-hop,never-changing,https://www.chosun.com/international/international_general/2024/03/07/HN2QKRMSG5DMLE55WXXYI6BHPI/,엘살바도르,엘살바도르입니다.,,,,,,,,, +3162,DEV,스포츠,디에고 아르만도 마라도나는 몇 년도에 데뷔했어?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%94%94%EC%97%90%EA%B3%A0_%EB%A7%88%EB%9D%BC%EB%8F%84%EB%82%98,1976년,디에고 아르만도 마라도나는 1976년도에 데뷔했습니다.,,,,,,,,, +3163,DEV,생활/문화,영화 '박물관이 살아있다!'에서 살아 움직이는 공룡 화석은 어떤 공룡이야?,before 2022,n/a,FALSE,one-hop,never-changing,https://w.wiki/BFb2,티라노사우르스,영화 '박물관이 살아있다!'에서 살아 움직이는 공룡 화석은 티라노사우르스입니다.,,,,,,,,, +3164,DEV,생활/문화,넷플릭스 경성크리쳐 시즌2 공개 일자는 며칠이야?,2024,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EA%B2%BD%EC%84%B1%ED%81%AC%EB%A6%AC%EC%B2%98_%EC%8B%9C%EC%A6%8C2,2024년 09월 27일입니다.,넷플릭스 경성크리쳐 시즌2 공개 일자는 2024년 09월 27일입니다.,,,,,,,,, +3165,DEV,경제,싱글족 중 두 곳 이상의 거처를 두고 자주 여행이나 출장을 다녀와 집을 오랫동안 비우는 사람들을 뭐라고 해?,2024,n/a,FALSE,multi-hop,never-changing,https://dic.hankyung.com/economy/view/?seq=11152,0.5인가구,0.5인가구란 싱글족 가운데 여러 곳에 거처를 두거나 자주 여행과 출장으로 집을 비우는 사람들을 의미합니다.,싱글족 중에서 2곳 이상에 거주하거나 빈번한 출장과 여행으로 집을 오랫동안 비우는 사람들을 0.5인가구라고 부릅니다.,,,,,,,, +3166,DEV,세계,엘리자베스 2세는 언제 왕위에 올랐나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%97%98%EB%A6%AC%EC%9E%90%EB%B2%A0%EC%8A%A4_2%EC%84%B8,1952년,엘리자베스 2세는 1952년 왕위에 올랐습니다.,엘리자베스 2세의 재위기간은 1952년부터 2022년입니다.,,,,,,,, +3167,DEV,사회,오하이오 징크스를 최초로 깬 사람을 암살한 사람은 누구인가요?,before 2022,n/a,FALSE,multi-hop,never-changing,"https://ko.wikipedia.org/wiki/%EC%98%A4%ED%95%98%EC%9D%B4%EC%98%A4%EC%A3%BC +https://ko.wikipedia.org/wiki/%EC%A1%B4_F._%EC%BC%80%EB%84%A4%EB%94%94_%EC%95%94%EC%82%B4_%EC%82%AC%EA%B1%B4 +https://ko.wikipedia.org/wiki/%EB%A6%AC_%ED%95%98%EB%B9%84_%EC%98%A4%EC%8A%A4%EC%9B%94%EB%93%9C",리 하비 오스월드,존 F. 케네디를 암살한 사람은 리 하비 오스월드입니다.,"오하이오 징크스를 최초로 깬 사람은 존 F. 케네디로, 그를 암살한 사람은 리 하비 오스월드입니다.",,,,,,,, +3168,DEV,스포츠,맨유는 어느 시즌에 처음 트레블을 달성했어?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%A7%A8%EC%B2%B4%EC%8A%A4%ED%84%B0_%EC%9C%A0%EB%82%98%EC%9D%B4%ED%8B%B0%EB%93%9C_FC%EC%9D%98_%EC%97%AD%EC%82%AC_(1986-2013),1998-99 시즌,맨체스터 유나이티드의 첫 트레블 달성 시즌은 1998/99시즌입니다.,맨체스터 유나이티드의 트레블 달성 시즌은 1998/99시즌입니다.,,,,,,,, +3169,DEV,연예,방탄소년단은 언제 처음 빌보드 뮤직 어워드에서 수상했나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%B0%A9%ED%83%84%EC%86%8C%EB%85%84%EB%8B%A8,2017년,방탄소년단은 2017년 빌보드 뮤직 어워드에서 톱 소셜 아티스트를 수상한것을 시작으로 연이어 수상기록을 작성하고 있습니다.,,,,,,,,, +3170,DEV,세계,테러단체인 탈레반의 주된 근거지는 어디인가요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%ED%83%88%EB%A0%88%EB%B0%98,아프가니스탄,탈레반은 아프가니스탄 남부를 중심으로 거주하는 단체입니다.,,,,,,,,, +3171,DEV,연예,<크레이머 대 크레이머>를 만든 감독의 감독 데뷔작은 무엇인가요?,before 2022,n/a,FALSE,multi-hop,never-changing,https://ko.wikipedia.org/wiki/%ED%81%AC%EB%A0%88%EC%9D%B4%EB%A8%B8_%EB%8C%80_%ED%81%AC%EB%A0%88%EC%9D%B4%EB%A8%B8 https://ko.wikipedia.org/wiki/%EB%A1%9C%EB%B2%84%ED%8A%B8_%EB%B2%A4%ED%84%B4,<배드 컴패니>,로버트 벤턴 감독의 첫 작품은 <배드 컴패니>입니다.,로버트 벤턴의 감독 데뷔작은 <배드 컴패니>입니다.,,,,,,,, +3172,DEV,세계,소련이 공식적으로 해체된 날이 언제인지 알려줘.,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%86%8C%EB%A0%A8%EC%9D%98_%EB%B6%95%EA%B4%B44,1991년 12월 26일,소련의 붕괴는 1991년 12월 26일에 발생했습니다.,,,,,,,,, +3173,DEV,경제,플리토 창립일이 언제야?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%ED%94%8C%EB%A6%AC%ED%86%A0,2012년 9월 1일,플리토의 창립일은 2012년 9월 1일입니다.,,,,,,,,, +3174,DEV,스포츠,2024년 올림픽은 어디에서 개최되었나요?,2024,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/2024%EB%85%84_%ED%95%98%EA%B3%84_%EC%98%AC%EB%A6%BC%ED%94%BD,파리입니다.,2024년 하계 올림픽은 프랑스 파리에서 개최되었습니다.,,,,,,,,, +3175,DEV,연예,정지영 아나운서의 SBS 입사 년도가 언제야?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%A0%95%EC%A7%80%EC%98%81_(%EB%B0%A9%EC%86%A1%EC%9D%B8),1998년 11월 16일 ,정지영은 1998년 11월 16일에 입사했습니다.,아나운서 정지영 입사 년도는 1998년도입니다.,,,,,,,, +3176,DEV,경제,대한민국의 주식 시장은 언제 개설되었나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://theme.archives.go.kr/next/koreaOfRecord/stockMarket.do,1956년 3월 3일,대한민국 주식 시장은 1956년 3월 3일 개설됐습니다.,,,,,,,,, +3177,DEV,사회,주5일근무제는 언제부터 시작되었는지 알려줘.,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%A3%BC5%EC%9D%BC%EA%B7%BC%EB%AC%B4%EC%A0%9C,2004년 7월,주5일근문제는 2004년 7월부터 단계적으로 실시하고 있습니다.,,,,,,,,, +3178,DEV,연예,아이유는 언제 가수로 데뷔했어?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%95%84%EC%9D%B4%EC%9C%A0,2008년 9월 18일,"아이유는 2008년 9월 18일 엠넷 M! Countdown에서 데뷔 싱글 ""미아""로 데뷔하였습니다.",아이유의 데뷔일은 2008년 9월 18일입니다.,,,,,,,, +3179,DEV,정치,3권분립은 제일 먼저 누가 주장하였나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EA%B6%8C%EB%A0%A5_%EB%B6%84%EB%A6%BD,로크,3권분립은 로크가 제일 먼저 주장하였고 몽테스키외가 완성하였습니다.,로크가 제일 먼저 주장하였습니다.,,,,,,,, +3180,DEV,연예,"SBS 드라마 ""굿파트너""는 무슨 요일에 해?",2024,n/a,FALSE,one-hop,never-changing,https://programs.sbs.co.kr/drama/goodpartner/about/81353,금요일과 토요일,SBS 드라마 굿파트너는 금요일과 토요일에 방송됩니다.,굿파트너는 매주 금요일과 토요일에 볼 수 있습니다.,,,,,,,, +3181,DEV,정치,토지 공개념 3법을 도입하여 부동산 투기를 억제하고자 했던 대통령이 누구였지?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%85%B8%ED%83%9C%EC%9A%B0,노태우,노태우 대통령이 토지 공개념 3법을 도입하여 부동산 투기를 억제하고자 했습니다.,,,,,,,,, +3182,DEV,IT/과학,텔레그램을 개발한 사람은 누구야?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%ED%85%94%EB%A0%88%EA%B7%B8%EB%9E%A8,니콜라이 두로프와 파벨 두로프 형제,텔레그램은 형제인 니콜라이 두로프와 파벨 두로프가 개발한 것입니다.,텔레그램은 형제인 니콜라이 두로프와 파벨 두로프가 함께 개발했습니다,,,,,,,, +3183,DEV,연예,제 9회 MBC 강변가요제 우승자가 누구야?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%A0%9C9%ED%9A%8C_MBC_%EA%B0%95%EB%B3%80%EA%B0%80%EC%9A%94%EC%A0%9C,이상은,담다디를 부른 이상은입니다.,,,,,,,,, +3184,DEV,정치,중대재해처벌법은 언제 제정되었니?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%A4%91%EB%8C%80%EC%9E%AC%ED%95%B4_%EC%B2%98%EB%B2%8C_%EB%93%B1%EC%97%90_%EA%B4%80%ED%95%9C_%EB%B2%95%EB%A5%A0,2021년 1월 26일,중대재해처벌법은 2021년 1월 26일에 제정되었습니다.,중대재해처벌법이 제정된 시기는 2021년 1월 26일입니다.,,,,,,,, +3185,DEV,경제,한국은행이 설립된 연도는 언제인가?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%ED%95%9C%EA%B5%AD%EC%9D%80%ED%96%89,1950년 6월 12일,한국은행은 1950년 6월 12일에 설립되었습니다.,,,,,,,,, +3186,DEV,정치,문재인 전 대통령의 출생지를 알려줘.,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%AC%B8%EC%9E%AC%EC%9D%B8,경상남도 거제군,문재인 전 대통령은 경상남도 거제군에서 태어났습니다.,문재인 전 대통령의 출생지는 경상남도 거제군입니다.,,,,,,,, +3187,DEV,IT/과학,대한민국 최초의 인공위성의 이름은 무엇인가요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%9A%B0%EB%A6%AC%EB%B3%84_1%ED%98%B8,우리별 1호,우리별 1호입니다.,우리별 1호는 대한민국 최초의 인공위성입니다.,,,,,,,, +3188,DEV,사회,조선시대에 외적과의 전투가 발생하면 봉화를 몇 개 올렸나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%B4%89%EC%88%98_(%ED%86%B5%EC%8B%A0),5개,"과거에 봉화는 하나의 통신 수단으로서 작용했는데, 적과 싸우고 있는 것과 같이 긴급한 상황에서는 봉화 5개를 올렸습니다.",,,,,,,,, +3189,DEV,세계,494년에 멸망한 국가의 수도는 어디야?,before 2022,n/a,FALSE,multi-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%B6%80%EC%97%AC https://ko.wikipedia.org/wiki/494%EB%85%84,부여성,부여의 수도는 부여성입니다.,494년에 멸망한 부여의 수도는 부여성입니다.,,,,,,,, +3190,DEV,경제,EU공용화폐인 유로가 도입된 게 언제야?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%9C%A0%EB%A1%9C,2002년 1월 1일,EU의 공용화폐인 유로가 도입된 것은 2002년 1월 1일입니다.,유럽 연합의 공용화폐인 유로가 도입된 것은 2002년 1월 1일입니다.,,,,,,,, +3191,DEV,사회,태극기의 흰색 바탕은 무엇을 상징하나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://w.wiki/BD7B,"밝음, 순수, 한국의 민족성","태극기의 흰색 바탕은 밝음과 순수, 그리고 전통적으로 평화를 사랑하는 한국의 민족성을 상징합니다.",,,,,,,,, +3192,DEV,경제,동아제약과 미국 존슨앤드존슨이 합작하여 설립한 회사는 어떤 제품을 한국에 런칭했나요?,before 2022,n/a,FALSE,multi-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%A1%B4%EC%8A%A8%EC%95%A4%EB%93%9C%EC%A1%B4%EC%8A%A8,피부미용제품,㈜한국존슨앤드존슨은 1983년에 존슨앤드존슨의 피부미용 제품을 한국에 런칭했습니다.,㈜한국존슨앤드존슨은 1983년에 존슨앤드존슨의 피부미용 제품을 한국에 처음으로 소개했습니다.,,,,,,,, +3193,DEV,날씨,구름은 주로 어떤 물질으로 구성되어 있나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://terms.naver.com/entry.naver?docId=5701923&cid=64656&categoryId=64656,수증기,대부분 수증기로 구성되어있습니다.,,,,,,,,, +3194,DEV,경제,삼성그룹의 설립일이 언제인지 알려줘.,before 2022,n/a,FALSE,one-hop,never-changing,https://terms.naver.com/entry.naver?docId=649960&cid=43167&categoryId=43167,1938년 3월 22일,1938년 3월 22일입니다.,,,,,,,,, +3195,DEV,IT/과학,도선에 흐르는 전류의 세기는 전압에 비례하고 저항에 반비례하는 법칙의 이름은 무엇인가요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%98%B4%EC%9D%98_%EB%B2%95%EC%B9%99,옴의 법칙,옴의법칙은 도체의 두 지점사이에 나타나는 전압에 의해 흐르는 전류가 일정한 법칙에 따르는 것을 말합니다.,옴의 법칙입니다.,,,,,,,, +3196,DEV,IT/과학,처녀자리는 어떤 별자리 사이에 놓여 있어?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%B2%98%EB%85%80%EC%9E%90%EB%A6%AC,사자자리와 천칭자리,처녀자리는 사자자리와 천칭자리 사이에 놓여있습니다.,,,,,,,,, +3197,DEV,연예,한국 영화 중에 최초로 천만을 돌파한 영화는 뭐야?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%B2%9C%EB%A7%8C_%EA%B4%80%EA%B0%9D_%EB%8F%8C%ED%8C%8C_%EC%98%81%ED%99%94,실미도,영화 실미도가 처음으로 천만 관객을 돌파했습니다.,,,,,,,,, +3198,DEV,생활/문화,호텔신라는 언제 개관했나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://www.shillahotels.com/membership/inquires/aboutShilla/memOverView.do,1979년 3월,호텔신라는 1979년 3월 처음 개관했습니다. ,,,,,,,,, +3199,DEV,세계,한국전쟁 때 휴전 협상이 시작된 시기가 궁금해.,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/6.25_%EC%A0%84%EC%9F%81,1951년 6월 23일,한국전쟁에서 휴전 협상이 시작된 정확한 시기는 1951년 6월 23일 입니다.,,,,,,,,, +3200,DEV,경제,마이크로칩의 밀도가 24개월마다 2배로 늘어난다는 법칙의 용어는 무엇인가요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%AC%B4%EC%96%B4%EC%9D%98_%EB%B2%95%EC%B9%99,무어의 법칙,무어의 법칙은 마이크로칩 밀도가 24개월마다 2배로 늘어난다는 법칙입니다.,,,,,,,,, +3201,DEV,날씨,태풍 '루사'의 발생 날짜가 언제인지 알려줘. ,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%ED%83%9C%ED%92%8D_%EB%A3%A8%EC%82%AC,2002년 8월 23일,2002년 8월 23일에 발생했습니다.,,,,,,,,, +3202,DEV,경제,세계 최초의 주식회사가 어디인지 알려줘.,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%84%A4%EB%8D%9C%EB%9E%80%EB%93%9C_%EB%8F%99%EC%9D%B8%EB%8F%84_%ED%9A%8C%EC%82%AC,네덜란드 동인도 회사,세계 최초의 주식회사는 네덜란드 동인도 회사입니다.,,,,,,,,, +3203,DEV,스포츠,야구선수 이정후의 데뷔 팀은 어디인가요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%9D%B4%EC%A0%95%ED%9B%84,넥센 히어로즈,이정후는 2017 KBO 신인드래프트 1차지명으로 키움(전 넥센) 히어로즈에 입단했습니다.,키움 히어로즈(전 넥센 히어로즈),,,,,,,, +3204,DEV,사회,근대 올림픽 경기의 창시자 이름은 무엇인가요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%ED%94%BC%EC%97%90%EB%A5%B4_%EB%93%9C_%EC%BF%A0%EB%B2%A0%EB%A5%B4%ED%83%B1,쿠베르탱,쿠베르탱은 프랑스 교육가이자 국제 올림픽 경기회의 창시자입니다.,,,,,,,,, +3205,DEV,연예,김찬우가 컬투쇼를 하차한 게 언제였지?,before 2022,n/a,TRUE,one-hop,never-changing,https://www.salgoonews.com/news/articleView.html?idxno=21414#google_vignette,김찬우'는 컬투쇼를 하차한 적이 없습니다. ,컬투쇼를 하차한 사람은 정찬우입니다.,,,,,,,,, +3206,DEV,생활/문화,아시아인 최초로 맨부커 인터내셔널상을 수상한 사람이 누구야?,before 2022,n/a,FALSE,one-hop,never-changing,https://www.khan.co.kr/culture/book/article/201605172303005,한강,"2016년 소설가 한강은 연작소설 <채식주의자(The Vegetarian)>를 2016년 맨부커상 인터내셔널 부문 수상작으로 선정, 발표했습니다. ",,,,,,,,, +3207,DEV,스포츠,배구선수 김연경이 처음 입단한 곳이 어디야?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EA%B9%80%EC%97%B0%EA%B2%BD,흥국생명,김연경 선수는 2005년에 흥국생명에 입단하였습니다.,,,,,,,,, +3208,DEV,스포츠,야구선수 박찬호가 처음으로 프로 구단에 입단한 연도를 알려줘.,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%B0%95%EC%B0%AC%ED%98%B8,1994년,야구선수 박찬호는 1994년에 프로에 입단했습니다.,,,,,,,,, +3209,DEV,사회,조선시대에 세자를 뒤주에 가둔 왕은 몇 번째 왕인가요?,before 2022,n/a,FALSE,multi-hop,never-changing,https://w.wiki/BF57,21번째,영조는 21번째 왕입니다.,,,,,,,,, +3210,DEV,경제,산업혁명이 처음으로 시작된 나라가 어디야?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%82%B0%EC%97%85_%ED%98%81%EB%AA%85,영국,산업혁명이 처음으로 시작된 국가는 영국입니다.,산업혁명은 약 1760년부터 영국에서 시작되었습니다.,,,,,,,, +3211,DEV,IT/과학,바코드는 언제 처음으로 실사용되었나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://m.dongascience.com/news.php?idx=47359,1974년 6월 26일,바코드는 1974년 6월 26일에 처음 사용되었습니다.,,,,,,,,, +3212,DEV,UNK,영어의 알파벳은 어떤 민족이 처음 만들었나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%9D%8C%EC%86%8C%EB%AC%B8%EC%9E%90%EC%9D%98_%EC%97%AD%EC%82%AC,페니키아 인,알파벳은 페니키아 인에 의해 만들어졌다고 추정하고 있습니다.,,,,,,,,, +3213,DEV,정치,대한민국 대통령 직선제를 최초로 채택한 연도는?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD%EC%9D%98_%EB%8C%80%ED%86%B5%EB%A0%B9_%EC%84%A0%EA%B1%B0, 1952년, 1952년입니다.,대한민국 대통령 직선제를 최초로 채택한 연도는 1952년입니다.,,,,,,,, +3214,DEV,연예,배우 한가인의 배우자는 누구야?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%ED%95%9C%EA%B0%80%EC%9D%B8,배우 연정훈,연정훈입니다.,배우 한가인의 배우자는 연정훈입니다.,,,,,,,, +3215,DEV,연예,영화 '치악산'의 극장 누적 관객 수는 얼마야?,2023,n/a,FALSE,one-hop,never-changing,https://www.kobis.or.kr/kobis/business/mast/mvie/searchMovieList.do,"21,028명","영화 '치악산'의 누적 관객수는 2025년 9월 15일 기준 21,028명입니다​",,,,,,,,, +3216,DEV,세계,캐나다의 건국기념일은 언제야?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%BA%90%EB%82%98%EB%8B%A4%EC%9D%98_%EB%82%A0,7월 1일,매년 7월 1일은 캐나다의 날로 캐나다의 건국 기념일입니다.,,,,,,,,, +3217,DEV,연예,오아시스는 언제 재결합하였나요?,2024,n/a,FALSE,one-hop,never-changing,https://www.hankookilbo.com/News/Read/A2024082718570004888?did=NA,2024년 8월 27일,영국의 록밴드인 오아시스(Oasis)는 해체 15년만에 2024년 8월 27일 재결합을 발표하였습니다.,,,,,,,,, +3218,DEV,연예,영화 <서울의 봄>의 감독은 누구야?,2023,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%84%9C%EC%9A%B8%EC%9D%98_%EB%B4%84_(%EC%98%81%ED%99%94),김성수,김성수 감독,영화 서울의 봄의 감독은 김성수입니다.,,,,,,,, +3219,DEV,세계,누가크래커는 어느 나라에서 만드는 과자니?,before 2022,n/a,FALSE,one-hop,never-changing,https://www.asiae.co.kr/article/2017031015035440425,대만,누가크래커는 대만의 과자입니다.,누가크래커는 대만의 대표적인 간식으로 알려져 있습니다.,,,,,,,, +3220,DEV,IT/과학,윈도우 11의 출시연도는 몇 년이야?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%9C%88%EB%8F%84%EC%9A%B0_11,2021년 10월 5일,윈도우 11의 최초 출시일은 2021년 10월 5일입니다.,윈도우 11은 마이크로소프트가 2021년 6월 24일에 최초 발표 후 같은 해 10월 5일에 출시되었습니다.,,,,,,,, +3221,DEV,사회,노벨 평화상은 매년 어떤 도시에서 시상되나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%85%B8%EB%B2%A8_%ED%8F%89%ED%99%94%EC%83%81,노르웨이 오슬로,노벨 평화상은 매년 노르웨이 오슬로에서 시상됩니다. ,노벨 평화상 시상식은 매년 노르웨이의 오슬로에서 개최됩니다.,,,,,,,, +3222,DEV,정치,드와이트 D. 아이젠하워 대통령의 임기 기간을 알려줘.,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%93%9C%EC%99%80%EC%9D%B4%ED%8A%B8_D._%EC%95%84%EC%9D%B4%EC%A0%A0%ED%95%98%EC%9B%8C,1953년 1월 20일~1961년 1월 20일,드와이트 데이비드 아이젠하워의 미국 대통령 임기 기간은 1953년 1월 20일~1961년 1월 20일입니다.,아이젠하우어는 미국의 제 34대 대통령이었으며 임기 기간은 1953년 1월 20일~1961년 1월 20일입니다.,,,,,,,, +3223,DEV,날씨,세계에서 최초로 눈결정의 사진을 찍은 사람은 누구야?,before 2022,n/a,FALSE,one-hop,never-changing,https://m.dongascience.com/news.php?idx=9818,미국 버몬트주 제리코의 농부 윌슨 벤틀리,최초로 눈결정 사진을 찍은 사람은 미국 버몬트주 제리코의 농부 윌슨 벤틀리 입니다.,,,,,,,,, +3224,DEV,정치,대한민국의 초대 대통령은 누구야?,before 2022,n/a,FALSE,one-hop,never-changing,https://www.pa.go.kr/online_contents/inauguration/president01.jsp,이승만,대한민국의 초대 대통령은 이승만입니다.,대한민국의 첫 대통령은 이승만입니다.,대한민국의 최초 대통령은 이승만입니다.,한국의 초대 대통령은 이승만 대통령입니다.,,,,,, +3225,DEV,IT/과학,1분은 몇 초를 말하는거야?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%B6%84#%EB%8B%A8%EC%9C%84,60초,1분은 60초를 말합니다.,1분은 60초에 해당한다고 말할 수 있습니다.,,,,,,,, +3226,DEV,정치,국민의힘 제4차 전당대회에서 한동훈이 받은 득표율이 궁금해.,2024,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EA%B5%AD%EB%AF%BC%EC%9D%98%ED%9E%98_%EC%A0%9C4%EC%B0%A8_%EC%A0%84%EB%8B%B9%EB%8C%80%ED%9A%8C,62.84퍼센트,한동훈은 국민의힘 제4차 전당대회에서 62.84퍼센트의 득표율을 받았습니다.,,,,,,,,, +3227,DEV,사회,조선 마지막 국왕의 탄생 년도는?,before 2022,n/a,FALSE,multi-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%88%9C%EC%A2%85_(%EB%8C%80%ED%95%9C%EC%A0%9C%EA%B5%AD),1874년 2월 8일,조선 왕조 마지막 국왕인 순종은 1874년(고종 11년) 2월 8일 출생하였습니다.,,,,,,,,, +3228,DEV,연예,배우 한가인은 언제 데뷔하였나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%ED%95%9C%EA%B0%80%EC%9D%B8,2002년,한가인은 2002년 데뷔하였습니다.,한가인은 2002년 아시아나항공 광고모델로 데뷔하였습니다.,,,,,,,, +3229,DEV,정치,발트 3국은 언제 동맹을 체결했나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://terms.naver.com/entry.naver?docId=68364&cid=43667&categoryId=43667,1934년,1934년에 발트3국 동맹을 체결하였습니다.,1934년입니다.,,,,,,,, +3230,DEV,생활/문화,애니메이션 영화 <라이언 킹>은 아카데미상에서 어떤 상을 수상했나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://w.wiki/BCqM,"음악상, 주제가상","라이언킹은 아카데미상에서 음악상, 주제가상을 받았습니다.",,,,,,,,, +3231,DEV,생활/문화,지천명은 몇 살을 의미하나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%82%98%EC%9D%B4,50세,50세를 의미합니다.,지천명은 논어에 나온 표현으로 나이 50세를 의미합니다.,,,,,,,, +3232,DEV,세계,미국의 9/11 테러가 발생한 해는 언제야?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/9%C2%B711_%ED%85%8C%EB%9F%AC,2001년,미국의 9/11 테러는 2001년 9월 11일에 일어났습니다.,9/11 테러 사건은 2001년 9월 11일에 발생했습니다.,2001년 9월 11일에 미국에 9/11 테러가 발생했습니다.,,,,,,, +3233,DEV,세계,이탈리아의 의사이자 교육가인 몬테소리가 고안한 교육법은 무엇인가요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%AA%AC%ED%85%8C%EC%86%8C%EB%A6%AC_%EA%B5%90%EC%9C%A1%EB%B2%95,몬테소리 교육법,몬테소리 교육법입니다.,,,,,,,,, +3234,DEV,연예,쇼미더머니 11 우승자가 누구야?,2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/Show_Me_The_Money_11,이영지,쇼미더머니 시즌 11의 우승자는 이영지입니다.,,,,,,,,, +3235,DEV,IT/과학,2022년에 출시된 아이패드 중 가장 최근에 출시된 아이패드는 몇세대야?,2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%95%84%EC%9D%B4%ED%8C%A8%EB%93%9C_%ED%94%84%EB%A1%9C_(6%EC%84%B8%EB%8C%80),아이패드 프로 6세대,아이패드는 프로 6세대까지 출시되었습니다.,2022년에 출시된 아이패드 중 가장 최근에 출시된 아이패드는 아이패드 프로 6세대입니다.,,,,,,,, +3236,DEV,연예,제시카가 탈퇴하기 전 소녀시대는 멤버가 몇 명이었지?,before 2022,n/a,FALSE,multi-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%86%8C%EB%85%80%EC%8B%9C%EB%8C%80,9명,제시카가 탈퇴하기 전 소녀시대는 9명의 멤버로 이루어져 있었습니다.,"제시카가 그룹에서 활동하던 시기, 소녀시대는 총 9명의 멤버로 구성되어 있었습니다.",,,,,,,, +3237,DEV,정치,입법 기관에 의해 제정·공포되어 문서화된 법을 무엇이라고 하나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%84%B1%EB%AC%B8%EB%B2%95,성문법,성문법이라고 합니다.,성문법입니다.,,,,,,,, +3238,DEV,사회,노벨상을 창설한 사람의 이름을 알려줘.,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%85%B8%EB%B2%A8%EC%83%81,알프레드 노벨,노벨상을 창설한 사람은 알프레드 노벨입니다.,알프레드 노벨은 노벨상을 창설한 인물입니다.,,,,,,,, +3239,DEV,연예,우리나라에서 가장 오래된 영화상인 대종상은 언제 처음 개최되었나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%8C%80%EC%A2%85%EC%83%81,1962년,국내에서 시행되고 있는 영화상 중 가장 오래된 것으로 1962년 상의 명칭을 대종상으로 바꾸고 제1회 시상식을 가지게 되었습니다.,,,,,,,,, +3240,DEV,사회,국민연금공단의 설립일은 언제인가요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EA%B5%AD%EB%AF%BC%EC%97%B0%EA%B8%88%EA%B3%B5%EB%8B%A8,1987년 9월 18일입니다.,국민연금공단은 1987년 9월 18일 국민연금법에 의거하여 설립되었습니다.,,,,,,,,, +3241,DEV,스포츠,2024 세계 믹스더블컬링 선수권대회에서 우승한 국가는 어디인가요?,2024,n/a,FALSE,one-hop,never-changing,https://en.wikipedia.org/wiki/World_Mixed_Doubles_Curling_Championship,스웨덴,우승팀은 스웨덴입니다.,2024 세계 믹스더블컬링 선수권대회의 우승팀은 스웨덴입니다.,,,,,,,, +3242,DEV,세계,세계 환경의 날은 언제지?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%ED%99%98%EA%B2%BD%EC%9D%98_%EB%82%A0,6월 5일,세계 환경의 날은 매년 6월 5일입니다.,,,,,,,,, +3243,DEV,스포츠,대한민국에 최초로 건설된 골프장이 무엇인지 알려줘.,before 2022,n/a,FALSE,one-hop,never-changing,https://www.golfdigest.co.kr/news/articleView.html?idxno=39843,효창원 코스,효창원 코스입니다.,1921년 6월 1일에 개장한 효창원 코스입니다.,,,,,,,, +3244,DEV,세계,백년전쟁에서 활약한 '오를레앙의 처녀'라는 별명을 가진 사람은 누구인가요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%9E%94_%EB%8B%A4%EB%A5%B4%ED%81%AC,잔다르크,백년전쟁에서 잔다르크의 활약으로 프랑스가 승리하였습니다.,,,,,,,,, +3245,DEV,생활/문화,2023년에 대한민국에서 가장 많이 팔린 책이 뭐야?,2023,n/a,FALSE,one-hop,never-changing,https://economist.co.kr/article/view/ecn202408130001,2023년도에 가장 많이 팔린 책은 '세이노의 가르침'입니다.,세이노의 가르침,,,,,,,,, +3246,DEV,IT/과학,내부구조가 없어 더 작은 그 무엇으로 분리될수 없는 궁극적인 기본 입자를 무엇이라고 하나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%BF%BC%ED%81%AC,쿼크,쿼크는 경입자와 더불어 물질을 이루는 가장 근본적인 입자입니다.,,,,,,,,, +3247,DEV,사회,과거 제도가 처음 시작된 해는 언제인가요?,before 2022,n/a,FALSE,one-hop,never-changing,https://terms.naver.com/entry.naver?docId=657646&cid=46621&categoryId=46621,958년,958년 광종 9년입니다.,,,,,,,,, +3248,DEV,연예,비틀즈가 결성된 도시가 어디지?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%B9%84%ED%8B%80%EC%A6%88,리버풀,비틀즈가 처음 결성된 곳은 리버풀입니다.,비틀즈는 리버풀에서 결성되었습니다.,,,,,,,, +3249,DEV,경제,청약통장의 소득공제 한도는 2024년부터 얼마로 상향되었나요?,2024,n/a,FALSE,one-hop,never-changing,https://n.news.naver.com/mnews/article/215/0001181043,300만원,청약통장의 소득공제 한도는 2024년 300만원으로 상향됐습니다.,,,,,,,,, +3250,DEV,UNK,고려 성종 때 주조된 한국 최초의 화폐는 무엇인가요?,before 2022,n/a,FALSE,one-hop,never-changing,https://encykorea.aks.ac.kr/Article/E0002015,고려 성종 때 주조된 한국 최초의 화폐는 건원중보(建元重寶)입니다.,건원중보입니다.,,,,,,,,, +3251,DEV,연예,박보검은 언제 데뷔했어?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%B0%95%EB%B3%B4%EA%B2%80,2011년,박보검은 영화 블라인드로 2011년에 연예계에 데뷔했습니다.,,,,,,,,, +3252,DEV,스포츠,2024년 9월 23일에 있었던 아스날과 맨시티의 경기는 누가 승리했나요?,2024,n/a,FALSE,one-hop,never-changing,https://m.sports.naver.com/game/2024092310050850059/preview,무승부,두 팀의 대결은 무승부로 종료되었습니다.,두 팀의 대결은 2:2의 스코어로 종료되었습니다.,2:2 무승부,,,,,,, +3253,DEV,사회,삼일절 노래는 누가 작곡했나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/3%C2%B71%EC%A0%88,박태현,삼일절 노래는 박태현씨가 작곡했습니다.,삼일절 노래의 작곡가는 박태현입니다.,,,,,,,, +3254,DEV,스포츠,한국인 최초로 월드컵에서 골을 기록한 선수는 누구야?,before 2022,n/a,FALSE,one-hop,never-changing,https://www.newstown.co.kr/news/articleView.html?idxno=28832,박창선,한국인 최초로 월드컵에서 골을 넣은 사람은 박창선 선수 입니다.,1986년 멕시코 월드컵에서 박창선 선수가 한국인 최초로 골을 기록했습니다.,,,,,,,, +3255,DEV,IT/과학,지구의 자전 속도를 알려줘.,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%A7%80%EA%B5%AC,465.11m/s,465.11m/s입니다.,지구의 자전속도는 465.11m/s입니다.,,,,,,,, +3256,DEV,경제,달러화를 발행하는 미국의 중앙은행은 무엇인가?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%97%B0%EB%B0%A9%EC%A4%80%EB%B9%84%EC%A0%9C%EB%8F%84,연방준비제도,미국의 중앙은행인 연방준비제도가 달러화를 발행합니다.,달러화를 발행하는 미국의 중앙은행은 연방준비제도입니다. ,,,,,,,, +3257,DEV,UNK,가장 오래된 목판 인쇄본을 만든 나라는 어디인가요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%9D%B8%EC%87%84,통일신라입니다.,"세계에서 가장 오래 된 목판 인쇄물은 우리 나라의 불국사 석가탑에서 발견한 '무구정광대다라니경'으로, 751년 통일 신라 경덕왕 때 만들어졌습니다.",,,,,,,,, +3258,DEV,IT/과학,한국 최초의 우주발사체 이름은 무엇일까요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%82%98%EB%A1%9C%ED%98%B8,나로호,"한국 최초의 우주발사체는 나로호로, 2009년 처음 발사되었습니다.",,,,,,,,, +3259,DEV,생활/문화,초콜릿은 어떤 나무의 열매로 만들어지나요?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%B4%88%EC%BD%9C%EB%A6%BF,카카오 나무,카카오나무입니다.,카카오 나무의 열매인 카카오콩이 초콜릿의 원재료입니다.,,,,,,,, +3260,DEV,사회,람보르기니가 2024년 분당에 신규 전시장을 열면서 전시한 차량 모델은 무엇인가요?,2024,n/a,FALSE,one-hop,never-changing,https://www.topdaily.kr/articles/98333,우루스SE,우루스 SE입니다.,,,,,,,,, +3261,DEV,생활/문화, 전 시즌을 통틀어 고득점 무대 2위를 한 가수는?,before 2022,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/K%ED%8C%9D%EC%8A%A4%ED%83%80,"박지민, 버나드 박, 샘 김","시즌 1에 출연한 박지민, 시즌 3에 출연한 버나드 박, 샘 김이 기록한 299점입니다.",,,,,,,,, +3262,DEV,연예,드라마 <굿파트너> 최신화의 최고 시청률 알려줄래?,2024,n/a,FALSE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EA%B5%BF%ED%8C%8C%ED%8A%B8%EB%84%88,15.2%,16화 기준 최고 시청률은 15.2% 입니다.,,,,,,,,, +3263,DEV,사회,2024년 추석에 서울에 주차장을 무료로 개방해 주는 곳은 몆 개 인가요?,2024,n/a,FALSE,one-hop,never-changing,https://www.seoul.go.kr/news/news_report.do#view/419011?tr_code=snews,서울시는 2024년 추석 연휴 동안 공영주차장 59곳을 무료로 개방합니다.,2024.9.14.(토)~9.18.(수) 5일간 공영주차장 59곳을 무료로 개방합니다.,,,,,,,,, +3264,DEV,경제,2021년에 대우건설을 인수한 회사인 디에스네트웍스의 산업 분야를 알려줘.,before 2022,n/a,TRUE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%8C%80%EC%9A%B0%EA%B1%B4%EC%84%A4,2021년에 대우건설을 인수한 회사는 중흥건설입니다.,중흥건설이 2021년에 대우건설을 인수하였습니다.,,,,,,,,, +3265,DEV,정치,윤석열 전 대통령의 친부 윤계상의 서거일은 언제인가요?,before 2022,n/a,TRUE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%9C%A4%EA%B8%B0%EC%A4%91,윤석열 대통령의 부친은 윤기중입니다.,윤석열 대통령의 아버지는 윤기중입니다.,,,,,,,,, +3266,DEV,생활/문화,<아담과 이브>를 그린 영국 국적의 화가는 누구인가요?,before 2022,n/a,TRUE,one-hop,never-changing,"https://terms.naver.com/entry.naver?docId=1544441&cid=46720&categoryId=46804 +https://ko.wikipedia.org/wiki/%EC%95%8C%EB%B8%8C%EB%A0%88%ED%9E%88%ED%8A%B8_%EB%92%A4%EB%9F%AC","""아담과 이브""를 그린 영국 국적의 화가는 없습니다.","""아담과 이브""를 그린 화가는 독일국적의 알브레히트 뒤러입니다.",,,,,,,,, +3267,DEV,세계,2023년에 한국이 가입한 유럽연합(EU) 회원국으로서의 의무는 무엇인가요?,2023,n/a,TRUE,one-hop,never-changing,https://overseas.mofa.go.kr/www/wpge/m_3854/contents.do,한국은 EU 회원국이 아닙니다.,한국은 유럽연합 회원국에 속하지 않습니다. ,,,,,,,,, +3268,DEV,IT/과학,2024년에 LG가 발매한 스마트폰 모델을 알려줘.,2024,n/a,TRUE,one-hop,never-changing,https://ko.wikipedia.org/wiki/LG%EC%A0%84%EC%9E%90%EC%9D%98_%EC%97%AD%EC%82%AC,2024년에 LG전자에서 출시한 스마트폰은 없습니다.,2021년 LG전자가 모바일 사업을 철수함에 따라 2024년에 LG전자에서 출시한 스마트폰은 없습니다.,,,,,,,,, +3269,DEV,연예,소녀시대의 일본인 멤버 이름을 알려줘.,2025,n/a,TRUE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%86%8C%EB%85%80%EC%8B%9C%EB%8C%80,소녀시대에는 일본인 멤버가 없습니다.,소녀시대에는 일본 국적을 가진 멤버가 포함되어 있지 않습니다.,,,,,,,,, +3270,DEV,UNK,사하라 사막에 사는 북극곰은 주로 무엇을 먹어?,2025,n/a,TRUE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%B6%81%EA%B7%B9%EA%B3%B0,"북극곰은 사하라 사막에 살지 않습니다. 북극 지역의 차가운 환경에 적응해 있으며, 주로 바다표범을 사냥해서 먹습니다.","사하라 사막은 북극곰의 서식지가 아닙니다. 북극곰은 북극의 추운 기후에서 살아가며, 주로 바다표범과 같은 해양 포유류를 먹습니다.",,,,,,,,, +3271,DEV,경제,2000년에 발생했으며 범국민 금모으기 운동으로 위기를 벗어난 외환 위기를 뭐라고 부르지? ,before 2022,n/a,TRUE,multi-hop,never-changing,https://ko.wikipedia.org/wiki/%EA%B5%AD%EC%A0%9C_%ED%86%B5%ED%99%94_%EA%B8%B0%EA%B8%88,"범국민 금모으기 운동으로 위기를 벗어난 외환 위기는 IMF 사태라고 부르며, 1997년에 일어났습니다. ","범국민 금모으기 운동으로 부채를 상환한 외환 위기는 IMF 사태이며, 1997년에 발생했습니다. ",,,,,,,,, +3272,DEV,사회,넬슨 만델라가 숨을 거둔 감옥의 이름은 무엇인가요?,before 2022,n/a,TRUE,multi-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%84%AC%EC%8A%A8_%EB%A7%8C%EB%8D%B8%EB%9D%BC,넬슨 만델라는 자택에서 가족들의 품에서 숨을 거두었습니다.,넬슨 만델라는 옥사하지 않았습니다.,,,,,,,,, +3273,DEV,IT/과학,지구라는 행성은 언제부터 직육면체 모양이었나요?,before 2022,n/a,TRUE,one-hop,never-changing,"https://if-blog.tistory.com/5525 +https://ko.wikipedia.org/wiki/%EC%A7%80%EA%B5%AC#%ED%91%9C%EB%A9%B4","지구는 타원체에 가까운 형태이며, 직육면체 모양이 아닙니다.",지구는 타원체에 가까운 형태를 하고 있습니다.,,,,,,,,, +3274,DEV,정치,2024년 9월 25일 더불어 힘 정당이 지역민생 예산정책협의회의 대상으로 정한 지역은 어디인가요?,2024,n/a,TRUE,one-hop,never-changing,"https://www.newdaily.co.kr/site/data/html/2024/09/25/2024092500285.html +https://www.nec.go.kr/site/nec/ex/bbs/List.do?cbIdx=1239",더불어 힘이라는 정당은 존재하지 않습니다.,국민의힘은 지역민생 예산정책협의회를 개최했으나 '더불어 힘'이라는 정당은 존재하지 않습니다.,,,,,,,,, +3275,DEV,IT/과학,포유류과에 속하는 펭귄과 비슷하게 무리생활을 하는 동물을 알려줘.,2025,n/a,TRUE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%ED%8E%AD%EA%B7%84,펭귄은 포유류가 아니라 수조류에 속합니다.,펭귄은 포유류가 아닌 수조류에 속하는 동물입니다.,,,,,,,,, +3276,DEV,생활/문화,삼성에서 만든 브랜드 나이키가 처음 출시한 운동화는 뭐예요?,before 2022,n/a,TRUE,one-hop,never-changing,https://www.sedaily.com/NewsView/1OOYE4QPL0,"나이키는 삼성과 관계없는 미국 브랜드이며, 처음으로 출시한 운동화는 코르테즈입니다.","삼성은 나이키와 관련이 없습니다. 나이키는 미국의 스포츠 브랜드로, 코르테즈라는 이름의 운동화가 1970년대 초에 처음 출시되었습니다.",,,,,,,,, +3277,DEV,IT/과학,2022년 공개된 아이폰 15은 전작 대비 배터리가 얼마나 향상됐나요?,2023,n/a,TRUE,one-hop,never-changing,https://www.e4ds.com/sub_view.asp?ch=4&t=0&idx=17549,아이폰 15는 2023년에 공개되었습니다.,아이폰 15는 2023년에 출시되었습니다.,,,,,,,,, +3278,DEV,IT/과학,현재 시가총액이 가장 높은 알트코인인 비트코인을 만든 사람을 알려줘.,2025,n/a,TRUE,one-hop,never-changing,"https://www.tossbank.com/articles/altcoin +https://coinmarketcap.com/ko/",시가 총액이 가장 높은 알트코인은 비트코인이 아닌 이더리움입니다.,비트코인은 알트코인이 아닙니다. 이더리움이 시가 총액이 가장 높은 알트 코인입니다.,,,,,,,,, +3279,DEV,사회,제주도는 몇 년 동안 조선의 수도로 유지되었나요?,before 2022,n/a,TRUE,one-hop,never-changing,"https://w.wiki/AJyA +https://ko.wikipedia.org/wiki/%EC%A1%B0%EC%84%A0",제주도는 조선의 수도였던 적이 없습니다.,제주도는 조선의 수도가 아니었습니다.,,,,,,,,, +3280,DEV,스포츠,김예지 선수는 언제 양궁 국가대표가 되었나요?,2025,n/a,TRUE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EA%B9%80%EC%98%88%EC%A7%80_(%EC%82%AC%EA%B2%A9_%EC%84%A0%EC%88%98),김예지는 양궁 국가대표가 아닙니다.,김예지는 사격 선수입니다.,,,,,,,,, +3281,DEV,정치,2024년 기준 국민의힘 당대표인 이준석의 추석 인사 핵심 내용은 무엇인가요?,2024,n/a,TRUE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EA%B5%AD%EB%AF%BC%EC%9D%98%ED%9E%98#%EC%97%AD%EB%8C%80_%EC%A7%80%EB%8F%84%EB%B6%80,2024년 국민의힘 당대표는 한동훈입니다.,"2024년 국민의힘의 당대표는 한동훈이며, 이준석은 2021년과 2022년에 당대표를 역임했습니다.",,,,,,,,, +3282,DEV,정치,2024년 9월 동안 한국 대통령이 유엔에서 발표한 경제 제재 철회안은 무엇인가요?,2024,n/a,TRUE,one-hop,never-changing,https://www.president.go.kr/president/calendar,한국 대통령이 경제 제재 철회안을 유엔에서 발표했다는 사실이 없습니다.,한국 대통령이 유엔에서 경제 제재 철회안을 발표한 사실이 없습니다.,,,,,,,,, +3283,DEV,사회,이재용이 LG그룹의 회장으로 취임한 연도를 알려줘.,before 2022,n/a,TRUE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%9D%B4%EC%9E%AC%EC%9A%A9,이재용은 삼성그룹의 제 3대 총수로서 LG그룹의 회장이 아닙니다.,"이재용은 삼성그룹의 3대 총수이며, LG그룹의 회장이 아닙니다.",,,,,,,,, +3284,DEV,정치,2024년 9월에 열린 한국-우크라이나 외교장관회담에 참석한 장관은 누구야?,2024,n/a,TRUE,one-hop,never-changing,"https://www.yna.co.kr/view/AKR20240925074351504?section=international/all +https://down.mofa.go.kr/www/brd/m_24806/view.do?seq=329&page=31",2024년 9월에 있던 외교장관회담은 쿠바와의 회담이었습니다. 또한 우크라이나와의 정상회담은 2023년이 마지막입니다. ,"2024년 9월에 열린 장관급 회담은 브루노 로드리게스 파리야 쿠바 외교 장관과의 회담이며, 조태열 외교부 장관이 참석했습니다. ",,,,,,,,, +3285,DEV,IT/과학,난자에 있는 Y 염색체의 돌연변이가 발생하면 생기는 질병을 알려줘.,2025,n/a,TRUE,one-hop,never-changing,"https://ko.wikipedia.org/wiki/%EB%82%9C%EC%9E%90 +https://www.joongang.co.kr/article/25203049",난자에는 X 염색체만 존재할 수 있습니다.,난자에는 X 염색체만 있습니다. ,,,,,,,,, +3286,DEV,경제,CJ그룹이 KT 그룹에서 분리독립된 연도를 알려줘.,before 2022,n/a,TRUE,one-hop,never-changing,"https://ko.wikipedia.org/wiki/CJ%EA%B7%B8%EB%A3%B9 +https://ko.wikipedia.org/wiki/KT",CJ그룹은 본래 삼성그룹의 일부였습니다.,CJ그룹은 KT가 아닌 삼성그룹의 일부였습니다.,,,,,,,,, +3287,DEV,스포츠,2023년에 김연아가 참여한 피겨 대회 성적을 알려줘.,2023,n/a,TRUE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EA%B9%80%EC%97%B0%EC%95%84,김연아는 2014년에 현역에서 은퇴하였기에 2023년 피겨 기록이 없습니다. ,김연아는 은퇴하였으므로 2023년에 경기에 출전하지 않았습니다. ,,,,,,,,, +3288,DEV,연예,뉴진스가 도쿄돔에서 처음 공연한 건 언제인가요?,2024,n/a,FALSE,one-hop,never-changing,https://www.hankyung.com/article/202407041075i,2024년 6월 26일,2024년 6월 26일에 도쿄돔에서 일본 공식 데뷔 무대를 가졌습니다.,,,,,,,,, +3289,DEV,IT/과학,화성의 해수면은 지구의 해수면보다 높은가요?,2025,n/a,TRUE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%ED%99%94%EC%84%B1,화성에는 해수면이 존재하지 않습니다.,화성에 해수면은 없습니다.,,,,,,,,, +3290,DEV,사회,소수림왕이 고국원왕을 전사시킨 년도는 언제인가요?,before 2022,n/a,TRUE,one-hop,never-changing,"https://ko.wikipedia.org/wiki/%EC%86%8C%EC%88%98%EB%A6%BC%EC%99%95 +https://ko.wikipedia.org/wiki/%EA%B3%A0%EA%B5%AD%EC%9B%90%EC%99%95","소수림왕은 고국원왕의 후임 왕이며, 고국원앙을 전사시킨 인물은 근초고왕입니다.",소수림왕은 고국원왕을 전사시키지 않았습니다.,,,,,,,,, +3291,DEV,스포츠,2004년 FIFA 월드컵의 우승 팀은 어디인가요?,before 2022,n/a,TRUE,one-hop,never-changing,https://ko.wikipedia.org/wiki/FIFA_%EC%9B%94%EB%93%9C%EC%BB%B5%EC%9D%98_%EC%97%AD%EC%82%AC,2004년에는 월드컵이 개최되지 않았습니다.,2004년에는 월드컵이 개최된 적이 없습니다.,,,,,,,,, +3292,DEV,연예,1980년에 개봉한 영화 '아바타’의 감독은 누구였지?,before 2022,n/a,TRUE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%95%84%EB%B0%94%ED%83%80_(2009%EB%85%84_%EC%98%81%ED%99%94),"아바타는 1980년에 개봉하지 않았습니다. 2009년에 개봉되었으며, 감독은 제임스 카메론입니다. ","아바타는 1980년에 개봉된 영화가 아닙니다. 정확한 개봉 연도는 2009년이며, 감독은 제임스 카메론입니다.",,,,,,,,, +3293,DEV,세계,워싱턴에 있는 자유의 여신상 주소를 알고싶어.,before 2022,n/a,TRUE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%9E%90%EC%9C%A0%EC%9D%98_%EC%97%AC%EC%8B%A0%EC%83%81,자유의 여신상은 뉴욕에 있습니다.,자유의 여신상은 미국 뉴욕주 뉴욕 리버티섬에 있습니다.,,,,,,,,, +3294,DEV,연예,김혜숙이 2024년 9월에 찍은 아르마니 뷰티 화보가 뭐야?,2024,n/a,TRUE,one-hop,never-changing,https://www.edaily.co.kr/News/Read?newsId=02843766639023072&mediaCodeNo=257&OutLnkChk=Y,2024년 9월에 김혜숙은 아르마니 뷰티 화보를 찍지 않았습니다.,2024년 9월에 아르마니 뷰티 화보를 찍은 사람은 김혜숙이 아니라 모델 김성희입니다.,,,,,,,,, +3295,DEV,생활/문화,2018년에 출간된 '해리 포터와 마법사의 돌’의 저자는 누구야?,before 2022,n/a,TRUE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%ED%95%B4%EB%A6%AC_%ED%8F%AC%ED%84%B0%EC%99%80_%EB%A7%88%EB%B2%95%EC%82%AC%EC%9D%98_%EB%8F%8C,해리 포터와 마법사의 돌은 2018년에 출간된 것이 아니라 1997년에 처음 출간되었습니다.,"해리 포터와 마법사의 돌은 1997년에 출간된 책이며, 저자는 J.K. 롤링입니다. ",,,,,,,,, +3296,DEV,스포츠,"2022년 월드컵에서 한국이 우승했을 때, 결승전 상대는 누구였지?",2022,n/a,TRUE,multi-hop,never-changing,https://ko.wikipedia.org/wiki/2022%EB%85%84_FIFA_%EC%9B%94%EB%93%9C%EC%BB%B5,2022년 월드컵에서 한국은 우승하지 않았습니다. 실제로 한국은 16강에서 브라질에게 패했습니다.,"2022년 월드컵에서 한국은 우승하지 못했으며, 16강에서 브라질에 패했습니다.",,,,,,,,, +3297,DEV,연예,빅뱅의 노래인 '블랙 맘바'의 음악방송 첫 1위 날짜는 언제야?,2025,n/a,TRUE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%B9%85%EB%B1%85%EC%9D%98_%EC%9D%8C%EB%B0%98_%EB%AA%A9%EB%A1%9D,가수 빅뱅은 '블랙 맘바'라는 노래를 발매한 적이 없습니다.,가수 빅뱅은 '블랙 맘바'라는 노래를 발매하지 않았습니다.,,,,,,,,, +3298,DEV,생활/문화,"파리 오르세미술관에 소장된 그림 ""파리와 오렌지""를 제작한 작가는 누구인가요?",2025,n/a,TRUE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%B6%84%EB%A5%98:%EC%98%A4%EB%A5%B4%EC%84%B8_%EB%AF%B8%EC%88%A0%EA%B4%80_%EC%86%8C%EC%9E%A5%ED%92%88,오르세 미술관은 <파리와 오렌지>라는 작품을 소장하고 있지 않습니다.,현재 오르세 미술관에는 <파리와 오렌지>라는 작품이 소장되어 있지 않습니다.,,,,,,,,, +3299,DEV,정치,2024년 기준 자유한국당의 당대표는 누구입니까?,before 2022,n/a,TRUE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%9E%90%EC%9C%A0%ED%95%9C%EA%B5%AD%EB%8B%B9#%EB%8C%80%ED%86%B5%EB%A0%B9_%EC%84%A0%EA%B1%B0,자유한국당은 2020년 2월 17일 여러 정당들과 미래통합당으로 통합되어 소멸되었습니다..,자유한국당은 2024년에 존재하지 않습니다.,,,,,,,,, +3300,DEV,IT/과학,컴퓨터용 키보드의 자판 중 ♥ 버튼의 위치를 알려줘.,2025,n/a,TRUE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%BB%B4%ED%93%A8%ED%84%B0_%EC%9E%90%ED%8C%90#%ED%82%A4_%EC%A2%85%EB%A5%98,키보드 자판에는 ♥가 존재하지 않습니다.,키보드에는 ♥가 없습니다.,,,,,,,,, +3301,DEV,정치,2024년 9월 25일 국무총리실로 걸려온 전화에서 언급한 대통령 서거의 날짜는 언제인가요?,2024,n/a,TRUE,one-hop,never-changing,https://www.yna.co.kr/view/AKR20240925153800004?section=society/all&site=hot_news_view,대통령 서거를 언급한 전화는 2024년 9월 25일에 인요한 국회의원 사무실로 걸려왔습니다.,2024년 9월 25일에 대통령 서거를 언급한 전화는 국무총리 사무실이 아닌 인요한 국회의원 사무실입니다. ,,,,,,,,, +3302,DEV,스포츠,이영표가 리버풀 FC 소속 선수로서 가장 많은 골을 기록한 시즌은 언제인가요?,before 2022,n/a,TRUE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%9D%B4%EC%98%81%ED%91%9C,이영표 선수가 리버풀 FC 소속으로 뛴 기록이 없습니다.,이영표는 리버풀 FC 소속의 선수였던 적이 없습니다.,,,,,,,,, +3303,DEV,경제,1990년에 구글을 설립한 창립자가 누구인지 알려줘.,before 2022,n/a,TRUE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EA%B5%AC%EA%B8%80%EC%9D%98_%EC%97%AD%EC%82%AC,구글은 1990년에 설립된 것이 아니라 1998년에 설립되었습니다. ,구글은 1990년이 아닌 1998년에 설립되었습니다.,,,,,,,,, +3304,DEV,생활/문화,2024년에 나온 스마트폰 애니콜 4의 출시일은?,2024,n/a,TRUE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%82%BC%EC%84%B1_%EC%95%A0%EB%8B%88%EC%BD%9C,2024년에 애니콜4가 나온적이 없습니다.,2014년 이후로 삼성애니콜은 서비스를 종료하였습니다.,,,,,,,,, +3305,DEV,스포츠,김연아가 축구 해설위원을 맡기 시작한 해는 언제인가요?,2025,n/a,TRUE,one-hop,never-changing,https://w.wiki/BD7z,김연아는 축구 해설위원을 맡지 않았습니다.,김연아는 축구 해설위원을 맡은 적이 없습니다.,,,,,,,,, +3306,DEV,스포츠,메시는 페루의 어떤 도시에서 태어났어?,before 2022,n/a,TRUE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%A6%AC%EC%98%A4%EB%84%AC_%EB%A9%94%EC%8B%9C,메시는 페루가 아닌 아르헨티나 로사리오 지역에서 태어났습니다.,메시의 고향은 페루가 아닙니다. 아르헨티나에서 태어난 것으로 확인됩니다.,,,,,,,,, +3307,DEV,연예,<삼시세끼> 시즌1에서 차승원은 총 몇 번의 요리를 했나요?,before 2022,n/a,TRUE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%82%BC%EC%8B%9C%EC%84%B8%EB%81%BC,삼시세끼 시즌 1에 차승원은 출연하지 않았습니다.,차승원은 삼시세끼 시즌 1에 출연하지 않았습니다.,,,,,,,,, +3308,DEV,스포츠,2020년 뉴욕 올림픽에서 가장 종목 수가 많은 스포츠는 무엇이었나요?,before 2022,n/a,TRUE,multi-hop,never-changing,https://ko.wikipedia.org/wiki/2020%EB%85%84_%ED%95%98%EA%B3%84_%EC%98%AC%EB%A6%BC%ED%94%BD,2020년 하계 올림픽의 개최지는 도쿄입니다.,"2020년 하계 올림픽의 개최지는 도쿄고, 코로나의 여파로 2021년에 개최됐습니다.",,,,,,,,, +3309,DEV,경제,삼성그룹이 기아차를 인수한 건 언제야?,2025,n/a,TRUE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EA%B8%B0%EC%95%84_(%EA%B8%B0%EC%97%85),기아차를 인수한 건 삼성그룹이 아니라 현대그룹입니다.,기아차 인수는 삼성그룹이 아닌 현대그룹이 진행하였습니다.,,,,,,,,, +3310,DEV,스포츠,제33회 파리올림픽에서 박태환이 딴 메달의 개수는 몆 개인가요?,2024,n/a,TRUE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%B0%95%ED%83%9C%ED%99%98,제33회 파리올림픽에 박태환선수는 출전하지 않았습니다.,박태환 선수는 2012년 하계 런던올림픽 이후로 올림픽에 출전하지 않았습니다.,,,,,,,,, +3311,DEV,스포츠,마이클 조던은 언제 축구선수를 처음 시작했어?,before 2022,n/a,TRUE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EB%A7%88%EC%9D%B4%ED%81%B4_%EC%A1%B0%EB%8D%98,마이클 조던은 축구선수를 한 적이 없습니다.,"마이클 조던은 일생을 농구선수, 야구선수로 지내온 바 있지만 축구선수로는 활동을 한 적이 없습니다.",,,,,,,,, +3312,DEV,세계,2000년에 창립된 유로스타의 당시 CEO가 누구인지 알려줘.,before 2022,n/a,TRUE,one-hop,never-changing,"https://ko.wikipedia.org/wiki/%EC%9C%A0%EB%A1%9C%EC%8A%A4%ED%83%80 +https://www.news1.kr/world/europe/5809497",유로스타는 1994년에 창립되었습니다.,유로스타는 1994년 11월에 창립되었습니다.,,,,,,,,, +3313,DEV,사회,한국전쟁은 1980년 몇 월에 발발했나요?,before 2022,n/a,TRUE,one-hop,never-changing,https://w.wiki/85nR,한국전쟁은 1980년대에 발발하지 않았습니다.,한국전쟁은 1950년에 발발했습니다.,,,,,,,,, +3314,DEV,IT/과학,얼음의 끓는점은 어떻게 되나요?,2025,n/a,TRUE,one-hop,never-changing,"https://ko.wikipedia.org/wiki/%EC%96%BC%EC%9D%8C +https://ko.wikipedia.org/wiki/%EB%81%93%EB%8A%94%EC%A0%90",얼음은 끓는점이 없습니다., 액체가 기체로 상태가 변하면서 온도가 일정하게 유지되는 온도를 끓는점이라고 합니다. 얼음은 고체상태로 끓는점이 존재하지 않습니다.,,,,,,,,, +3315,DEV,사회,세종은 조선을 언제 건국했나요?,before 2022,n/a,TRUE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%A1%B0%EC%84%A0,세종은 조선을 건국하지 않았습니다.,세종대왕은 조선을 건국한 인물이 아닙니다. 조선은 1392년에 이성계에 의해 건국되었습니다.,,,,,,,,, +3316,DEV,스포츠,이정후는 2022 FIFA 월드컵에서 몇 골을 넣었어?,2022,n/a,TRUE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%9D%B4%EC%A0%95%ED%9B%84,이정후는 카타르 월드컵에 출전한 적이 없습니다.,이정후는 야구선수로 카타르 월드컵에 출전한 적이 없습니다.,,,,,,,,, +3317,DEV,사회,을미사변 때 흥선대원군을 암살한 사람이 누구인지 알려줘.,before 2022,n/a,TRUE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%9D%84%EB%AF%B8%EC%82%AC%EB%B3%80,흥선대원군은 을미사변 때 암살당하지 않았습니다.,을미사변 때 암살 당한 사람은 명성황후입니다.,,,,,,,,, +3318,DEV,IT/과학,목성의 위성 타이탄은 언제 최초로 발견되었나요?,2025,n/a,TRUE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%ED%83%80%EC%9D%B4%ED%83%84_(%EC%9C%84%EC%84%B1),타이탄은 목성이 아닌 토성의 위성입니다.,타이탄은 목성이 아니라 토성의 위성에 속합니다. ,,,,,,,,, +3319,DEV,생활/문화,<메이플스토리>를 제작한 회사가 처음으로 만든 FPS 게임은 무엇인가요?,before 2022,n/a,TRUE,multi-hop,never-changing,"https://ko.wikipedia.org/wiki/%EB%A9%94%EC%9D%B4%ED%94%8C%EC%8A%A4%ED%86%A0%EB%A6%AC +https://ko.wikipedia.org/wiki/%EB%84%A5%EC%8A%A8_%EC%BD%94%EB%A6%AC%EC%95%84 +https://www.gamemeca.com/view.php?gid=54032#:~:text=%EB%84%A5%EC%8A%A8%EC%9D%98%20%EC%B2%AB%20FPS%20%EC%98%A8%EB%9D%BC%EC%9D%B8%EA%B2%8C%EC%9E%84%EC%9D%B8%20'%EC%9B%8C%EB%9D%BD'%EC%9D%98%20%EC%98%A4%ED%94%88%EB%B2%A0%ED%83%80%ED%85%8C%EC%8A%A4%ED%8A%B8%EA%B0%80%20%EB%82%B4%EB%8B%AC,%EC%9B%8C%EB%9D%BD%EC%9D%98%20%EC%98%A4%ED%94%88%EB%B2%A0%ED%83%80%ED%85%8C%EC%8A%A4%ED%8A%B8%EB%A5%BC%20%EC%96%B4%EB%A6%B0%EC%9D%B4%EB%82%A0%EC%9D%B8%205%EC%9B%94%205%EC%9D%BC%EB%B6%80%ED%84%B0%20%EC%8B%9C%EC%9E%91%ED%95%9C%EB%8B%A4%EA%B3%A0%20%EB%B0%9D%ED%98%94%EB%8B%A4.",워락,2005년에 오픈베타 출시된 워락입니다.,,,,,,,,, +3320,DEV,세계,북극에 위치해 있는 아프리카 대륙은 어떤 기후와 환경을 가지고 있어?,2025,n/a,TRUE,one-hop,never-changing,https://ko.wikipedia.org/wiki/%EC%95%84%ED%94%84%EB%A6%AC%EC%B9%B4,"아프리카 대륙은 북극에 위치한 것이 아니라, 대서양과 인도양 사이에 자리 잡고 있습니다.",아프리카 대륙은 북극에 위치하지 않습니다. 아프리카는 적도에 가까운 지역에 있습니다.,,,,,,,,, +3321,DEV,IT/과학,양자리를 구성하는 별들 중 8등성인 별의 이름이 뭐야?,2025,n/a,TRUE,one-hop,never-changing,https://astro.kasi.re.kr/learning/pageView/5270,양자리는 8등성이 아닙니다.,양자리의 별 중에 8등성은 없습니다.,,,,,,,,, +3322,DEV,세계,원자폭탄 '팻 맨'이 히로시마에 투하된 건 몇 년도인가요?,before 2022,n/a,TRUE,one-hop,never-changing,https://w.wiki/BJ8s,히로시마에 투하된 원자폭탄은 '리틀 보이'입니다.,팻 맨'은 나가사키에 투하 된 핵폭탄입니다.,,,,,,,,, +3323,DEV,스포츠,박지성이 프랑스 리그 1에서 데뷔한 해는 언제인가요?,before 2022,n/a,TRUE,one-hop,never-changing,https://w.wiki/9aG6,박지성은 프랑스 리그 1에서 데뷔한 적이 없습니다.,박지성은 프랑스 리그 1에서 데뷔하지 않았습니다.,,,,,,,,, +3324,DEV,세계,이번 미국 대선에서 공화당 대통령 후보로 출마한 후보는?,2024,occasionally,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EB%AF%B8%EA%B5%AD_%EB%8C%80%ED%86%B5%EB%A0%B9_%EC%84%A0%EA%B1%B0,도널드 트럼프,트럼프입니다.,,,,,,,,, +3325,DEV,경제,3년 평균 매출액이 15억 원인 식당은 중소기업이야?,2022,occasionally,FALSE,multi-hop,slow-changing,https://www.mss.go.kr/site/smba/contents/view.do?menuCd=20103040000002024122824&siteCd=smba,숙박 및 음식점업의 경우 3년 평균 매출액이 10억 원 초과 및 400억 원 이하인 경우 중소기업으로 분류하므로 해당 식당은 중소기업에 속합니다.,해당 업종은 3년 평균 매출액이 10억 원 초과 ~ 400억 원 이하 구간인 경우 중소기업으로 분류하고 있으므로 해당 식당은 중소기업입니다.,,,,,,,,, +3326,DEV,생활/문화,한국인이 마지막으로 노벨상을 받은 게 언제야?,2024,occasionally,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD%EC%9D%98_%EB%85%B8%EB%B2%A8%EC%83%81_%EC%88%98%EC%83%81%EC%9E%90_%EB%AA%A9%EB%A1%9D,2024년입니다.,2024년 작가 한강이 노벨문학상을 받은 것이 마지막입니다.,,,,,,,,, +3327,DEV,경제,대구에서 현재 가장 비싼 아파트는 어디야?,2025,occasionally,FALSE,one-hop,slow-changing,https://m.news.nate.com/view/20250909n04513?mid=m02&list=recent&cpcd=,두산위브더제니스,두산위브더제니스입니다.,,,,,,,,, +3328,DEV,경제,서울에서 평균 월세가 가장 비싼 자치구는 어디야?,2025, every_month,FALSE,one-hop,slow-changing,https://biz.chosun.com/real_estate/real_estate_general/2025/08/26/Z2JVSDIEZ5C7HJPS5BAIV2Z2P4/,94만원을 기록한 강남구입니다.,서울에서 평균 월세가 가장 비싼 자치구는 강남구입니다.,,,,,,,,, +3329,DEV,생활/문화,에어팟 맥스는 몇 가지 색상이 있어?,before 2022,occasionally,FALSE,one-hop,slow-changing,"https://ko.wikipedia.org/wiki/%EC%97%90%EC%96%B4%ED%8C%9F_%EB%A7%A5%EC%8A%A4 +https://www.apple.com/kr/shop/buy-airpods/airpods-max/%EB%B8%94%EB%A3%A8",5가지,에어팟 맥스의 색상은 5가지 입니다.,5가지 색상이 있습니다. ,,,,,,,, +3330,DEV,정치,김영란법의 선물상한액은 얼마나 되나요?,2024,occasionally ,FALSE,one-hop,slow-changing,https://news.kbs.co.kr/news/pc/view/view.do?ncd=8038190,2024년 기준 추석 기간 농수산물과 농수산가공품 선물 가액 범위를 기존 15만 원에서 30만 원으로 상향 조정했습니다.,농·축·수산물(가공품 포함) 선물 가액은 30만원입니다.,,,,,,,,, +3331,DEV,생활/문화,플라이 투 더 스카이가 마지막으로 찍은 뮤직 비디오는?,before 2022,occasionally,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%ED%94%8C%EB%9D%BC%EC%9D%B4_%ED%88%AC_%EB%8D%94_%EC%8A%A4%EC%B9%B4%EC%9D%B4,추억이 돼줘 고마워,플라이 투 더 스카이가 마지막으로 찍은 뮤직비디오는 '추억이 돼줘 고마워'입니다.,,,,,,,,, +3332,DEV,경제,현재 한국의 5대 은행장들 중 연임에 성공한 은행장은 몇 명이야?,2025,occasionally,FALSE,one-hop,slow-changing,https://www.newsis.com/view/NISX20250404_0003127482,현재 5대 은행장 중 연임에 성공한 은행장은 이재근 KB은행장 뿐입니다.,5대 은행장 중 4명이 연임에 실패했습니다.,,,,,,,,, +3333,DEV,IT/과학,현재 인류가 우주에서 가장 멀리 탐사한 지역이 어디인지 알려줘.,before 2022,every_time,FALSE,one-hop,slow-changing,"https://w.wiki/BJ8R +https://www.newsspace.kr/news/article.html?no=6122","현재 보이저 1호가 있는 곳이지만, 전력 감소로 인해 더 이상 신호를 보내지 못해 더 이상 탐사 데이터를 발신하지 못하게 됩니다.",현재 인류가 가장 멀리 탐사한 우주는 보이저 1호가 있는 곳입니다.,,,,,,,,, +3334,DEV,IT/과학,가장 최근에 삼성디스플레이의 투자로 공장이 건설되기로 결정된 지역은 어디인가요?,2024,occasionally,FALSE,one-hop,slow-changing,https://www.yna.co.kr/view/AKR20240923095400084?section=international/all,베트남 북부 박닌성,베트남 박닌성입니다.,,,,,,,,, +3335,DEV,IT/과학,LG CNS와 인도네시아 시나르마스의 합작 법인 LG 시나르마스 테크놀로지 솔루션의 본사가 있는 지역은?,2024,occasionally,FALSE,one-hop,slow-changing,https://www.yna.co.kr/view/AKR20240911037700017?section=search,자카르타,자카르타 입니다.,,,,,,,,, +3336,DEV,IT/과학,볼보 자동차의 자동차 중 엔비디아 아키텍처가 적용되는 최신 모델은?,2025,every_year,FALSE,one-hop,slow-changing,https://www.digitaltoday.co.kr/news/articleView.html?idxno=554346,전기 세단인 ES90입니다.,ES90입니다.,,,,,,,,, +3337,DEV,경제,카카오의 대표이사는 현재 누구야?,2024,occasionally,FALSE,one-hop,slow-changing,https://www.kakaocorp.com/ir/managementInformation/boardOfDirectors/configuration,정신아,현재 카카오의 대표는 정신아입니다.,,,,,,,,, +3338,DEV,사회,지금까지 폐점한 홈플러스 매장은 몇 군데인가요?,2025,occasionally,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%ED%99%88%ED%94%8C%EB%9F%AC%EC%8A%A4,28군데,2025년 기준 총 28군데 매장이 폐점했습니다.,,,,,,,,, +3339,DEV,스포츠,KBO 리그에 소속된 구단 중 제주를 연고지로 하는 구단이 있어? ,before 2022,occasionally ,FALSE,one-hop,slow-changing,"https://ko.wikipedia.org/wiki/KBO_%EB%A6%AC%EA%B7%B8#:~:text=%EC%8B%9C%EC%A6%8C-,%EC%B2%B4%EC%A0%9C,%EC%B4%9D%20720%EA%B2%BD%EA%B8%B0%EB%A5%BC%20%EA%B0%80%EC%A7%84%EB%8B%A4.",없습니다. ,아직까지 제주도를 연고지로 하는 KBO 구단은 없습니다. ,,,,,,,,, +3340,DEV,IT/과학,가장 최근에 임기를 끝마친 IOC 위원장은 누구인가요?,2025,occasionally,FALSE,one-hop,slow-changing,https://www.olympics.com/ko/news/coventry-elected-10th-ioc-president-at-144th-ioc-session-in-greece,토마스 바흐 위원장,토마스 바흐입니다.,,,,,,,,, +3341,DEV,생활/문화,문화누리카드는 1인당 연간 얼마를 지급하나요?,2025,every_year,FALSE,one-hop,slow-changing,https://www.mnuri.kr/munhwa/introduceNuri.do,14만원,2025년 기준으로 문화누리카드는 1인당 연간 14만원을 지급합니다.,,,,,,,,, +3342,DEV,IT/과학,다음 윤년이 언제인지 알려줘.,2024,2028. 1. 1,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/2028%EB%85%84,2028년,다음 윤년은 2028년입니다.,,,,,,,,, +3343,DEV,사회,최근 5년 동안의 출생아 수 증감 추세를 알려줘.,2024,occasionally,FALSE,multi-hop,slow-changing,https://www.index.go.kr/unity/potal/indicator/IndexInfo.do?clasCd=10&idxCd=F0008,최근 5년 동안 출생아 수가 점차 감소하다 2024년에 전년도 대비 증가했습니다.,2023년까지 감소하는 추세였다가 2024년에 전년도 대비 증가했습니다.,,,,,,,,, +3344,DEV,연예,이승기가 마지막으로 발매한 앨범 이름이 궁금해.,before 2022,occasionally,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EC%9D%B4%EC%8A%B9%EA%B8%B0,The Project,2020년에 발매한 'The Project'입니다.,,,,,,,,, +3345,DEV,경제,현재 네이버의 CEO는 누구야?,2022,occasionally ,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EB%84%A4%EC%9D%B4%EB%B2%84_(%EA%B8%B0%EC%97%85),최수연,현재 네이버의 CEO는 최수연 대표이사입니다.,,,,,,,,, +3346,DEV,IT/과학,가장 최근에 발표된 인텔의 AI 칩의 이름은?,2024,occasionally,FALSE,one-hop,slow-changing,https://www.yna.co.kr/view/AKR20240925005400091?section=international/all,가우디3,가우디 3입니다.,,,,,,,,, +3347,DEV,연예,배우 이민호가 가장 최근에 출연한 영화 제목을 알려줘.,2024,occasionally,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EC%9D%B4%EB%AF%BC%ED%98%B8%EC%9D%98_%EC%9E%91%ED%92%88_%EB%AA%A9%EB%A1%9D,<전지적 독자 시점>,2024년 개봉작인 <전지적 독자 시점>입니다.,<전지적 독자 시점>입니다.,,,,,,,, +3348,DEV,IT/과학,밀레니엄 문제들 중 아직까지 해결되지 않은 문제의 수는 몇 개야?,before 2022,occasionally,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EB%B0%80%EB%A0%88%EB%8B%88%EC%97%84_%EB%AC%B8%EC%A0%9C,6개,밀레니엄 문제들 중 현재까지 해결되지 않은 문제는 6개입니다.,,,,,,,,, +3349,DEV,정치,현재 조국혁신당의 당 대표는 누구인가요?,2025,occasionally,FALSE,one-hop,slow-changing,"https://rebuildingkoreaparty.kr/news/press-release/4001 +https://ko.wikipedia.org/wiki/%EC%A1%B0%EA%B5%AD%ED%98%81%EC%8B%A0%EB%8B%B9",조국혁신당은 현재 당대표가 없습니다.,현재 조국혁신당의 당대표는 공석이며 조국이 비대위원장을 맡고 있습니다.,,,,,,,,, +3350,DEV,스포츠,현재 대한축구협회의 회장은 누구인가요?,before 2022,occasionally ,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EB%8C%80%ED%95%9C%EC%B6%95%EA%B5%AC%ED%98%91%ED%9A%8C,정몽규,대한축구협회의 회장은 정몽규입니다.,정몽규 회장이 2013년부터 재직 중입니다.,,,,,,,, +3351,DEV,세계,현재 동남아시아 국가 연합의 가입국을 알려줘.,before 2022,occasionally,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EB%8F%99%EB%82%A8%EC%95%84%EC%8B%9C%EC%95%84_%EA%B5%AD%EA%B0%80_%EC%97%B0%ED%95%A9#%EA%B0%80%EC%9E%85%EA%B5%AD,"인도네시아, 말레이시아, 필리핀, 싱가포르, 태국, 브루나이, 베트남, 라오스, 미얀마, 캄보디아","동남아시아 국가 연합 가입국에는 인도네시아, 말레이시아, 필리핀, 싱가포르, 태국, 브루나이, 베트남, 라오스, 미얀마, 캄보디아가 있습니다.","동남아시아 국가 연합에 가입해 있는 나라에는 인도네시아, 말레이시아, 필리핀, 싱가포르, 태국, 브루나이, 베트남, 라오스, 미얀마, 캄보디아가 있습니다.",,,,,,,, +3352,DEV,세계,현재 유럽연합의 회원국은 총 몇 개국이니?,before 2022,occasionally,FALSE,one-hop,slow-changing,https://www.mofa.go.kr/www/wpge/m_3854/contents.do,27개국,유럽연합의 회원국은 총 27개국입니다.,,,,,,,,, +3353,DEV,경제,여의도 금융특정개발진흥지구에서 허가되는 최대 용적률은 얼마인가요?,2024,occasionally,FALSE,one-hop,slow-changing,https://marketin.edaily.co.kr/News/Read?newsId=04903606639085720,최대 1200%,1200%의 최대용적율을 갖습니다.,,,,,,,,, +3354,DEV,스포츠,현재 FIFA 회장이 누구인지 알려줘.,before 2022,occasionally ,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/FIFA_%ED%9A%8C%EC%9E%A5_%EB%AA%A9%EB%A1%9D,잔니 인판티노,현재 피파 회장은 잔니 인판티노로 2016년부터 해당 직을 맡고 있습니다.,,,,,,,,, +3355,DEV,IT/과학,현재까지 달 착륙에 성공한 나라 수와 가장 마지막으로 달 착륙에 성공한 나라는?,2024,occasionally,FALSE,multi-hop,slow-changing,https://www.bbc.com/korean/articles/ckkv75y47r9o,"현재까지 달 착륙에 성공한 나라는 5개국이며, 가장 최근에 새로이 달 착륙에 성공한 나라는 일본입니다.","현재까지 달 착륙에 성공한 나라는 총 5개국이며, 그중 다섯 번째로 달 착륙에 성공한 나라는 일본입니다.",,,,,,,,, +3356,DEV,세계,현재 유엔 사무총장의 이름을 알려줘.,before 2022,occasionally,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EC%9C%A0%EC%97%94_%EC%82%AC%EB%AC%B4%EC%B4%9D%EC%9E%A5,안토니우 구테흐스,이번 유앤 사무총장의 이름은 안토니우 구테흐스입니다.,,,,,,,,, +3357,DEV,사회,마지막으로 대한민국 국민이 금강산을 관광할 수 있었던 시기를 알려줘.,before 2022,occasionally ,FALSE,one-hop,slow-changing,"https://ko.wikipedia.org/wiki/%EA%B8%88%EA%B0%95%EC%82%B0 +https://www.tongilnews.com/news/articleView.html?idxno=213956",2008년 7월 11일까지입니다. ,금강산 관광은 2008년 7월 11일까지 가능했습니다. ,,,,,,,,, +3358,DEV,세계,이탈리아의 역대 총리 중 여성 총리는 누구인가요?,2024,occasionally,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EC%9D%B4%ED%83%88%EB%A6%AC%EC%95%84%EC%9D%98_%EC%B4%9D%EB%A6%AC_%EB%AA%A9%EB%A1%9D,조르자 멜로니,조르자 멜로니 총리가 유일합니다.,조르자 멜로니 총리,,,,,,,, +3359,DEV,정치,현재 이탈리아의 대통령이 누구인지 알려줘.,before 2022,occasionally,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EC%9D%B4%ED%83%88%EB%A6%AC%EC%95%84%EC%9D%98_%EB%8C%80%ED%86%B5%EB%A0%B9,세르조 마타렐라,이탈리아의 대통령은 세르조 마타렐라입니다.,,,,,,,,, +3360,DEV,사회,가장 최근 학생 수 부족으로 폐교를 결정한 초등학교는 어디야?,2025,every_year,FALSE,multi-hop,slow-changing,https://www.hani.co.kr/arti/area/capital/1176949.html,포천 중리초등학교,경기도 포천에 위치한 중리초등학교입니다.,,,,,,,,, +3361,DEV,생활/문화,아웃백스테이크하우스가 추구하는 브랜드 콘셉트는 뭘까?,2024,occasionally ,FALSE,one-hop,slow-changing,https://news.heraldcorp.com/view.php?ud=20240509050586&pos=naver,젊은 세대가 중심인 캐주얼 다이닝,아웃백스테이크하우스는 기존 가족 단위 고객 위주인 ‘패밀리 레스토랑’ 이미지에서 젊은 세대가 중심인 ‘캐주얼 다이닝’으로 탈바꿈 시도를 하고 있습니다.,,,,,,,,, +3362,DEV,경제,경기도 성남시의 첫째 출산 장려금은 얼마야?,2025,occasionally,FALSE,one-hop,slow-changing,https://www.gov.kr/portal/rcvfvrSvc/dtlEx/378000000143,30만원입니다.,경기도 성남시의 첫째 출산 장려금은 30만 원입니다.,,,,,,,,, +3363,DEV,연예,1박 2일은 현재 어떤 PD가 담당하고 있어?,2025,occasionally,FALSE,one-hop,slow-changing,https://program.kbs.co.kr/2tv/enter/1n2d/pc/detail.html?smenu=c8e571,"박석형, 유정아","박석형이 책임프로듀서를, 유정아가 프로듀서를 담당하고 있습니다.",,,,,,,,, +3364,DEV,사회,현재 기아 로고는 언제 바뀐거지?,before 2022,occasionally,FALSE,one-hop,slow-changing,https://www.donga.com/news/Economy/article/all/20210106/104803727/1,2021년,기아 로고는 2021년에 새롭게 바뀌었습니다.,,,,,,,,, +3365,DEV,연예,박명수가 가장 최근에 받은 상은 어떤 상인가요?,2025,occasionally ,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EB%B0%95%EB%AA%85%EC%88%98#%EC%88%98%EC%83%81_%EA%B2%BD%EB%A0%A5,KBS 라디오 골든페이스상,2025년에 KBS 라디오 골든페이스상을 수상했습니다.,,,,,,,,, +3366,DEV,스포츠,NBA에서 3회 연속 우승을 의미하는 쓰리핏을 달성한 팀은 총 몇 팀이야?,before 2022,occasionally ,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/NBA_%ED%8C%8C%EC%9D%B4%EB%84%90,NBA에서 쓰리핏을 달성한 팀은 총 세 팀입니다.,"LA 레이커스(전신 미니애폴리스 레이커스 포함), 보스턴 셀틱스, 시카고 불스 총 3팀입니다.",,,,,,,,, +3367,DEV,경제,현대차는 2030년까지 인도에서 몇 개의 전기차 모델을 생산할 계획인가요?,2025,occasionally,FALSE,one-hop,slow-changing,https://www.press9.kr/news/articleView.html?idxno=65982,6종,6종입니다.,,,,,,,,, +3368,DEV,사회,전동킥보드 탑승 시 헬멧을 착용하지 않을 경우 부과될 수 있는 범칙금은 얼마야?,2025,occasionally ,FALSE,one-hop,slow-changing,https://easylaw.go.kr/CSP/CnpClsMainBtr.laf?popMenu=ov&csmSeq=1506&ccfNo=2&cciNo=1&cnpClsNo=1&menuType=onhunqna,2만원,현재 전동킥보드 헬멧 착용하지 않을 경우 범칙금은 2만원입니다.,,,,,,,,, +3369,DEV,경제,삼성바이오 로직스가 창립 이래 달성한 최고 반기 매출은 얼마인가?,2025,occasionally,FALSE,one-hop,slow-changing,https://www.chosun.com/economy/science/2025/07/24/L3VBOE6LJFHYHIRSS6YVXFA2HM/,매출 2조5882억원,2조5882억원입니다.,,,,,,,,, +3370,DEV,정치,미국 항공모함 시어도어 루즈벨트함이 부산에 입항한 날짜는 언제입니까?,2024,occasionally,FALSE,one-hop,slow-changing,https://news.kbs.co.kr/news/pc/view/view.do?ncd=8020455&ref=A,6월 22일,2024년 6월 22일입니다.,,,,,,,,, +3371,DEV,생활/문화,H.O.T의 캔디는 몇 번 리메이크 된지 알아?,2022,occasionally,FALSE,one-hop,slow-changing,https://star.ohmynews.com/NWS_Web/OhmyStar/at_pg.aspx?CNTN_CD=A0002891594,1번,H.O.T의 캔디는 총 1번 리메이크 했습니다.,,,,,,,,, +3372,DEV,UNK,가장 최근에 크리스마스가 토요일이었던 적은 언제인가요?,before 2022,occasionally,FALSE,one-hop,slow-changing,https://www.yna.co.kr/view/MYH20211223016300640,2021년입니다. ,최근에 크리스마스가 토요일이었던 해는 2021년입니다. ,2021년의 크리스마스는 토요일이었습니다. ,,,,,,,, +3373,DEV,연예,오마이걸에서 가장 최근에 탈퇴한 멤버 이름이 뭐야?,2022,occasionally ,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EC%98%A4%EB%A7%88%EC%9D%B4%EA%B1%B8,지호,오마이걸 멤버 중 가장 최근에 탈퇴한 멤버 이름은 지호입니다.,,,,,,,,, +3374,DEV,세계,캄보디아 현직 국왕이 누군지 알려줘.,before 2022,occasionally ,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EC%BA%84%EB%B3%B4%EB%94%94%EC%95%84,노로돔 시하모니,현직 캄보디아 국왕은 노로돔 시하모니입니다.,노로돔 시하모니가 캄보디아 현직 국왕입니다.,,,,,,,, +3375,DEV,IT/과학,배달의민족 내 서비스인 B마트의 무료배달 기준 금액은?,2023,occasionally,FALSE,one-hop,slow-changing,https://it.chosun.com/news/articleView.html?idxno=2023060301824,4만원,배달의민족 B마트의 무료배달 최소 기준금액은 4만 원입니다.,,,,,,,,, +3376,DEV,IT/과학,엔비디아의 최신 그래픽 카드는 무엇인가요?,2025,every_year,FALSE,one-hop,slow-changing,https://www.mk.co.kr/news/it/11212171,RTX 50 시리즈,RTX 50 시리즈입니다.,,,,,,,,, +3377,DEV,스포츠,현재 대한배드민턴 협회의 협회장은 누구야?,2025,occasionally ,FALSE,one-hop,slow-changing,http://www.koreabadminton.org/Info/Introduction/executives.asp,현재 배드민턴 협회장은 김동문입니다.,김동문입니다.,김동문,,,,,,,, +3378,DEV,세계,가장 최근에 범유행한 질병의 명칭을 알려줘.,2023,occasionally,FALSE,one-hop,slow-changing,"https://w.wiki/BJ8C +https://www.sciencetimes.co.kr/nscvrg/view/menu/251?searchCategory=223&nscvrgSn=260334 +https://www.kdca.go.kr/board/board.es?mid=a20501010000&bid=0015&list_no=722478&cg_code=&act=view&nPage=1",코로나19,코로나바이러스감염증-19,COVID-19,최근 범유행한 질병은 코로나바이러스감염증-19입니다.,,,,,,, +3379,DEV,날씨,폼페이를 멸망시킨 화산은 마지막으로 언제 분화했나요?,before 2022,occasionally,FALSE,multi-hop,slow-changing,https://ko.wikipedia.org/wiki/%EB%B2%A0%EC%88%98%EB%B9%84%EC%98%A4%EC%82%B0,1944년입니다.,베수비오산은 1944년에 마지막으로 분화했습니다.,,,,,,,,, +3380,DEV,세계,현재 재위 중인 영국 국왕의 자제는 몇 명이야?,before 2022,occasionally ,FALSE,one-hop,slow-changing,"https://ko.wikipedia.org/wiki/%EC%98%81%EA%B5%AD_%EA%B5%B0%EC%A3%BC +https://ko.wikipedia.org/wiki/%EC%B0%B0%EC%8A%A4_3%EC%84%B8",2명,2022년에 즉위 한 찰스 3세의 자제는 2명입니다.,,,,,,,,, +3381,DEV,IT/과학,내년에 가동 계획인 TSMC 공장의 생산 공정은 몇 나노미터야?,2025,occasionally,FALSE,one-hop,slow-changing,https://www.chosun.com/economy/tech_it/2025/02/04/3ZT7XHM7P5EN5KBNWOAO7KIC4Q/,1.6나노 공정입니다.,1.6나노미터,,,,,,,,, +3382,DEV,생활/문화,쿵푸팬더 시리즈는 현재 몇 번째 시리즈까지 나왔어?,2024,occasionally,FALSE,one-hop,slow-changing,"https://ko.wikipedia.org/wiki/%EC%BF%B5%ED%91%B8_%ED%8C%AC%EB%8D%94_(%EC%98%81%ED%99%94_%EC%8B%9C%EB%A6%AC%EC%A6%88) +https://ko.wikipedia.org/wiki/%EC%BF%B5%ED%91%B8_%ED%8C%AC%EB%8D%94_4",4번째 작품까지 개봉했습니다.,쿵푸팬더 시리즈는 현재 4번째 시리즈까지 나왔습니다.,,,,,,,,, +3383,DEV,생활/문화,우리나라에서 태어난 자이언트 판다는 총 몇 마리야?,2023,occasionally,FALSE,one-hop,slow-changing,https://www.newsis.com/view/?id=NISX20230711_0002371412&cID=10803&pID=14000,3마리입니다.,우리나라에서 태어난 자이언트 판다는 총 3마리입니다.,,,,,,,,, +3384,DEV,생활/문화,JYP 엔터테인먼트 대표는 누구야?,before 2022,occasionally,FALSE,one-hop,slow-changing,"https://ko.wikipedia.org/wiki/JYP_%EC%97%94%ED%84%B0%ED%85%8C%EC%9D%B8%EB%A8%BC%ED%8A%B8 +https://biz.chosun.com/industry/business-venture/2025/07/24/2OL2H7IPXZCATNBH5AGLTQEVSY/",JYP 엔터테인먼트의 대표이사는 정욱입니다.,정욱 대표이사입니다.,정욱,,,,,,,, +3385,DEV,경제,청년도약계좌의 최대 금리는 몇%인가요?,2025,occasionally,FALSE,one-hop,slow-changing,https://www.chosun.com/economy/stock-finance/2025/01/06/CRJTV4GH6JBLLKUCDGQDSXG4OU/,9.54%,최대 9.54% 입니다.,,,,,,,,, +3386,DEV,IT/과학,오픈AI가 출시한 벤치마크 데이터셋의 지원 언어는 몇 개국어야?,2024,occasionally,FALSE,one-hop,slow-changing,https://www.aitimes.com/news/articleView.html?idxno=163677,14개국어,14개 언어입니다.,,,,,,,,, +3387,DEV,사회,가장 최신화된 도로교통법 변경사항을 알려줘.,2025,occasionally,FALSE,one-hop,slow-changing,https://www.korea.kr/multi/visualNewsView.do?newsId=148938732,신설 조항인 음주측정방해행위 처벌법입니다.,2025년 6월 4일부터 시행된 음주측정방해행위 처벌법입니다.,,,,,,,,, +3388,DEV,생활/문화,현재 유튜브 프리미엄 가격은 얼마야?,2023,occasionally ,FALSE,one-hop,slow-changing,"https://news.mt.co.kr/mtview.php?no=2023120813423688003 +https://www.youtube.com/premium?ybp=Sg0IBhIJdW5saW1pdGVk4AEB","14,900원입니다.","2023년 12월 인상 후 14,900원(VAT포함)입니다.",,,,,,,,, +3389,DEV,정치,올해 국회의원 선거는 몇 번째 선거지?,2025,1905. 7. 20,TRUE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD%EC%9D%98_%EA%B5%AD%ED%9A%8C%EC%9D%98%EC%9B%90_%EC%84%A0%EA%B1%B0,2025년에는 국회의원 선거가 없었습니다.,2025년에는 국회의원 선거를 하지 않았습니다.,,,,,,,,, +3390,DEV,연예,라미란이 마지막으로 수상한 시상식 이름은 무엇인가요?,2025,occasionally ,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EB%9D%BC%EB%AF%B8%EB%9E%80,대한민국 퍼스트 브랜드 대상,멀티테이너 여자 부문에서 수상한 대한민국 퍼스트 브랜드 대상입니다.,2025년에 수상한 대한민국 퍼스트 브랜드 대상입니다.,,,,,,,, +3391,DEV,경제,가장 최근에 포스코퓨처엠이 받은 신용평가 등급을 알려줘.,2025,frequently,FALSE,one-hop,slow-changing,https://www.sedaily.com/NewsView/2GU83L12R7#:~:text=%ED%8F%AC%EC%8A%A4%EC%BD%94%ED%93%A8%EC%B2%98%EC%97%A0(003670)%EC%9D%B4%20%EC%98%AC%ED%95%B4%20%EA%B5%AD%EB%82%B4%203%EB%8C%80%20%EC%8B%A0%EC%9A%A9%ED%8F%89%EA%B0%80%EC%82%AC%EB%A1%9C%EB%B6%80%ED%84%B0%20AA%2D(%EC%95%88%EC%A0%95%EC%A0%81)%20%EC%8B%A0%EC%9A%A9%EB%93%B1%EA%B8%89%EC%9D%84%20%EC%9C%A0%EC%A7%80%ED%95%9C%20%EA%B2%83%EC%9C%BC%EB%A1%9C%20%EB%82%98%ED%83%80%EB%82%AC%EB%8B%A4.,AA-,AA-등급입니다.,,,,,,,,, +3392,DEV,생활/문화,가장 최근에 나온 마리오 시리즈 게임의 장르를 알려줘.,2025,occasionally,FALSE,multi-hop,slow-changing,"https://www.nintendo.com/kr/games/switch2/a7hla/index.html +https://ko.wikipedia.org/wiki/%EC%8A%88%ED%8D%BC_%EB%A7%88%EB%A6%AC%EC%98%A4_%ED%8C%8C%ED%8B%B0_%EC%9E%BC%EB%B2%84%EB%A6%AC",파티,<슈퍼 마리오 파티 잼버리 닌텐도 스위치 2 에디션>은 파티 장르의 게임입니다.,,,,,,,,, +3393,DEV,정치,영국의 총리는 누구인가요?,2024,occasionally ,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EC%98%81%EA%B5%AD%EC%9D%98_%EC%B4%9D%EB%A6%AC,현재 영국의 총리는 키어 스타머입니다. 2024년 7월 5일 노동당의 영국의 총리에 취임하였습니다.,현재 영국의 총리는 키어 스타머입니다. ,,,,,,,,, +3394,DEV,날씨,목측 관측을 시작한 후로 서울 지역에서 연 황사 일수가 총 20일을 초과한 해는 언제야?,before 2022,occasionally,FALSE,one-hop,slow-changing,https://data.kma.go.kr/climate/yellowDust/selectYellowDustChart.do?pgmNo=112,2001년,27일을 기록한 2001년입니다.,,,,,,,,, +3395,DEV,세계,가장 최근에 남극조약에 가입한 나라는 어디야?,2024,occasionally,FALSE,one-hop,slow-changing,https://w.wiki/BHSR,사우디아라비아,2024년에 가입한 사우디아라비아입니다.,,,,,,,,, +3396,DEV,생활/문화,농심 신라면의 현재 광고 카피는 뭐지?,2024,occasionally ,FALSE,one-hop,slow-changing,"https://economist.co.kr/article/view/ecn202401190017 +https://brand.nongshim.com/shinramyun/main/index",인생을 울리는 신라면,농심 신라면의 광고 카피는 '인생을 울리는 신라면' 입니다.,,,,,,,,, +3397,DEV,정치,여객선 안전 운항을 위한 관계기관 합동 특별점검은 언제 마지막으로 실시되었나요?,2025,occasionally,FALSE,one-hop,slow-changing,http://www.maritimepress.co.kr/news/articleView.html?idxno=327807,2025년 9월 8일 ~ 2025년 9월 19일,2025년 9월 8일부터 9월 19일까지 진행되었습니다.,,,,,,,,, +3398,DEV,정치,대한민국 대통령의 임기는 몇 년이지?,before 2022,occasionally ,FALSE,one-hop,slow-changing,"https://www.law.go.kr/lsEfInfoP.do?lsiSeq=61603# +https://ko.wikipedia.org/wiki/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD_%EB%8C%80%ED%86%B5%EB%A0%B9",5년,대한민국 대통령 임기는 5년입니다.,,,,,,,,, +3399,DEV,연예,현재 참이슬의 광고 모델은 누구야?,before 2022,occasionally,FALSE,one-hop,slow-changing,https://www.yna.co.kr/view/AKR20240326041900030,현재 참이슬의 광고 모델은 아이유입니다.,아이유,,,,,,,,, +3400,DEV,정치,대한민국의 노벨상 수상자는 몇 명인가요?,2024,occasionally,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD%EC%9D%98_%EB%85%B8%EB%B2%A8%EC%83%81_%EC%88%98%EC%83%81%EC%9E%90_%EB%AA%A9%EB%A1%9D,2명,총 2명입니다.,,,,,,,,, +3401,DEV,스포츠,한국에서 마지막으로 열린 올림픽은 언제인가요?,before 2022,occasionally,FALSE,one-hop,slow-changing,https://w.wiki/BDvo,2018년 평창 동계 올림픽입니다.,"한국에서 마지막으로 열린 올림픽은 평창 동계 올림픽으로, 2018년에 개최되었습니다.",,,,,,,,, +3402,DEV,세계,중국에는 행정구역으로 몇 개의 성이 있나요?,before 2022,occasionally,FALSE,one-hop,slow-changing,https://w.wiki/BCjH,22개입니다.,중국에는 22개의 성(省)이 있습니다.,,,,,,,,, +3403,DEV,세계,멕시코 역대 대통령 중 여자가 몇 명이었는지 알려줘.,2024,occasionally,FALSE,multi-hop,slow-changing,https://ko.wikipedia.org/wiki/%EB%A9%95%EC%8B%9C%EC%BD%94%EC%9D%98_%EA%B5%AD%EA%B0%80%EC%9B%90%EC%88%98_%EB%AA%A9%EB%A1%9D,1명,1명입니다.,멕시코의 여성 대통령은 총 1명입니다.,,,,,,,, +3404,DEV,정치,현재 대한민국의 대구광역시장은 누구야?,2025,occasionally,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%ED%99%8D%EC%A4%80%ED%91%9C,김정기 권한대행,"대구시장은 없으며, 김정기가 권한대행 중입니다.",,,,,,,,, +3405,DEV,정치,감비아의 국가명이 마지막으로 바뀐 것은 언제인가요?,before 2022,occasionally,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EA%B0%90%EB%B9%84%EC%95%84,2017년,2017년 감비아는 국가명을 감비아 이슬람 공화국에서 감비아 공화국으로 변경했습니다.,2017년에 국가명이 마지막으로 변경되었습니다.,,,,,,,, +3406,DEV,생활/문화,전략적 팀 전투의 현재 세트를 알려줘.,2025,occasionally,FALSE,one-hop,slow-changing,https://teamfighttactics.leagueoflegends.com/ko-kr/news/,세트 15,현재 전략적 팀 전투는 세트 15를 진행 중입니다.,,,,,,,,, +3407,DEV,스포츠,지금까지 FIFA 월드컵은 총 몇 회 개최됐나요?,2022,2026. 6. 11,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/FIFA_%EC%9B%94%EB%93%9C%EC%BB%B5,총 22회,가장 최근 카타르에서 개최된 월드컵을 포함해 총 22회 개최됐습니다.,,,,,,,,, +3408,DEV,경제,현재 대한민국에 인터넷전문은행은 몇 군데가 있나요?,before 2022,occasionally ,FALSE,one-hop,slow-changing,"https://www.sisajournal-e.com/news/articleView.html?idxno=413443 +https://eiec.kdi.re.kr/material/pageoneView.do?idx=1850",3곳,현재 인터넷은행은 3곳입니다.,"인터넷전문은행은 카카오뱅크, 토스뱅크, 케이뱅크로 3곳입니다.",,,,,,,, +3409,DEV,연예,아역배우 박소이의 소속사는 어디야?,before 2022,occasionally,FALSE,one-hop,slow-changing,"https://ko.wikipedia.org/wiki/%EB%B0%95%EC%86%8C%EC%9D%B4 +https://www.news1.kr/entertain/celebrity-topic/4279031",YG 엔터테인먼트입니다.,아역배우 박소이의 소속사는 YG 엔터테인먼트입니다.,,,,,,,,, +3410,DEV,IT/과학,현재 DGIST 총장은 누구야?,2023,occasionally,FALSE,one-hop,slow-changing,https://www.dgist.ac.kr/kor/sub01_01_02.do,이건우,이건우 총장입니다.,,,,,,,,, +3411,DEV,경제,ISA의 비과세 한도는 얼마인가요?,before 2022,occasionally,FALSE,one-hop,slow-changing,https://www.fsc.go.kr/po020201/27339?srchCtgry=&curPage=&srchKey=&srchText=&srchBeginDt=&srchEndDt=,200만원,ISA 일반형 계좌는 200만원까지 비과세가 적용됩니다.,,,,,,,,, +3412,DEV,날씨,공식적으로 지구에서 가장 높은 공기 중 기온을 측정한 지역은 어디인가요?,before 2022,occasionally,FALSE,one-hop,slow-changing,"https://ko.wikipedia.org/wiki/%EC%A7%80%EA%B5%AC_%EC%B5%9C%EA%B3%A0_%EA%B8%B0%EC%98%A8_%EA%B8%B0%EB%A1%9D +https://www.yna.co.kr/view/AKR20240802052500009",미국 캘리포니아 주 데스 밸리,56.7도를 관측한 미국 캘리포니아 주의 데스 밸리입니다.,1913년 7월 10일 56.7 °C를 관측한 미국 캘리포니아주 데스 밸리입니다.,,,,,,,, +3413,DEV,연예,서현이 처음으로 구입한 그랜드피아노의 브랜드는 무엇인가요?,2024,occasionally,FALSE,multi-hop,slow-changing,https://news.nate.com/view/20240721n09104,스타인웨이,스타인웨이 피아노입니다.,,,,,,,,, +3414,DEV,날씨,2010년 이후 대한민국에서 관측된 태풍 중 최대 풍속을 기록한 태풍 이름이 뭐야?,before 2022,occasionally,FALSE,multi-hop,slow-changing,https://ko.wikipedia.org/wiki/%ED%95%9C%EB%B0%98%EB%8F%84%EC%9D%98_%ED%83%9C%ED%92%8D,차바,2016년의 태풍 차바입니다.,,,,,,,,, +3415,DEV,IT/과학,현재 세계에서 스마트폰 점유율 1위를 차지하고 있는 제조사가 어디야?,2025,occasionally ,FALSE,multi-hop,slow-changing,https://www.yna.co.kr/view/AKR20250715022600017,삼성전자,현재 세계에서 점유율이 가장 높은 스마트폰 제조사는 삼성전자입니다.,,,,,,,,, +3416,DEV,경제,현재 서울의 택시 기본 요금은? ,2023,occasionally,FALSE,one-hop,slow-changing,https://www.sedaily.com/NewsView/2DGR47AG5O,"4,800원입니다.","주간 기준 1.6km까지 4,800원입니다.",,,,,,,,, +3417,DEV,IT/과학,가장 최근에 소니에서 만든 게임기가 뭐야?,2024,occasionally ,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EC%86%8C%EB%8B%88%EA%B7%B8%EB%A3%B9#%EA%B2%8C%EC%9E%84%EA%B8%B0 https://ko.wikipedia.org/wiki/%ED%94%8C%EB%A0%88%EC%9D%B4%EC%8A%A4%ED%85%8C%EC%9D%B4%EC%85%98_5 ,플레이스테이션5 Pro,2024년에 출시한 플레이스테이션5 Pro입니다.,,,,,,,,, +3418,DEV,세계,지금 인텔의 CEO는 누구야?,2025,occasionally,FALSE,one-hop,slow-changing,https://newsroom.intel.com/ko/%EA%B8%B0%EC%97%85/%EC%9D%B8%ED%85%94-%EC%83%88-ceo%EC%97%90-%EB%A6%BD%EB%B6%80-%ED%83%84-%EC%84%A0%EC%9E%84,립부 탄,립부 탄(Lip-Bu Tan)입니다.,,,,,,,,, +3419,DEV,연예,장윤정의 현재 소속사는 어디야?,before 2022,occasionally ,FALSE,one-hop,slow-changing,http://chorokbaemenm.com/sub/artist_view.php?wr_id=58,티엔엔터테인먼트,장윤정의 현재 소속사는 티엔엔터테인먼트입니다.,,,,,,,,, +3420,DEV,경제,현재 SK하이닉스의 CEO는 누구야?,2024,occasionally,FALSE,one-hop,slow-changing,https://www.businesspost.co.kr/BP?command=article_view&num=408836,곽노정,곽노정입니다.,,,,,,,,, +3421,DEV,사회,대한민국에 광역시는 총 몇 개야?,before 2022,occasionally,FALSE,one-hop,slow-changing,https://w.wiki/9KAr,6곳,대한민국의 광역시는 6곳입니다.,,,,,,,,, +3422,DEV,연예,가수 윤하가 가장 최근에 출연한 영화 제목을 알려줘.,before 2022,occasionally,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EC%9C%A4%ED%95%98,<수상한 고객들>,가수 윤하가 최근 출연한 영화 제목은 <수상한 고객들>입니다.,영화 <수상한 고객들>,,,,,,,, +3423,DEV,연예,현재 <동상이몽2 너는 내 운명>의 담당 CP는 누구인가요?,2025,occasionally ,FALSE,one-hop,slow-changing,https://programs.sbs.co.kr/enter/dongsang2/about/87354,조문주 ,현재 <동상이몽2 너는 내 운명>의 담당 CP는 조문주 CP입니다.,,,,,,,,, +3424,DEV,정치,현재 대한민국의 국토교통부 장관은 누구야?,2025,occasionally,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD%EC%9D%98_%EA%B5%AD%ED%86%A0%EA%B5%90%ED%86%B5%EB%B6%80_%EC%9E%A5%EA%B4%80,김윤덕,현재 국토교통부 장관은 2025년 7월 31일에 취임한 김윤덕입니다.,현재 국토교통부 장관은 김윤덕입니다.,,,,,,,, +3425,DEV,경제,성인 기준 서울 지하철 요금은 얼마야?,2025,occasionally,FALSE,multi-hop,slow-changing,https://news.seoul.go.kr/traffic/archives/345,"1,550원이며 거리에 따라 10~50㎞ : 100원/5km, 50㎞초과 : 100원/8km의 요금이 추가로 붙습니다.","서울 지하철 요금은 성인 기준으로 1,550원입니다.",,,,,,,,, +3426,DEV,경제,한국의 시총 1위 기업은 어디인가요?,2025,every_time,FALSE,one-hop,slow-changing,https://data.krx.co.kr/contents/MMC/RANK/rank/MMCRANK001.cmd,삼성전자,2025년 9월 23일 기준 한국 시총 1위 기업은 삼성전자입니다.,,,,,,,,, +3427,DEV,사회,현재 대한민국에서 운전자가 정지선을 위반했을 시 범칙금이 얼마인지 알려줘.,2025,occasionally,FALSE,one-hop,slow-changing,https://kixxman.com/a-stationary-line,범칙금은 6만 원입니다.,"정지선 위반 시 범칙금은 6만 원 이며, 벌점 또한 15점입니다.",,,,,,,,, +3428,DEV,IT/과학,역사상 최연소 우주비행사가 누구인지 알려줘.,before 2022,occasionally,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EC%9A%B0%EC%A3%BC%EB%B9%84%ED%96%89%EC%82%AC,게르만 티토프,역사상 최연소 우주비행사는 게르만 티토프입니다.,26살에 보스토크 2호에 탑승한 게르만 티토프입니다.,,,,,,,, +3429,DEV,경제,청년 주택청약 가입 대상이 어떻게 돼?,2025,occasionally,FALSE,one-hop,slow-changing,https://oland.kbstar.com/quics?page=C066786&cc=b030657:b029684&isNew=N&prcode=DP01000935,대한민국에 거주하는 19세 이상 34세 이하인 사람입니다.,한국에 살고 있는 19세 이상 34세 이하인 청년입니다.,,,,,,,,, +3430,DEV,정치,최근 5년 동안 정부 재정 대비 국방부 예산 비율이 가장 높았던 년도는?,before 2022,every_year,FALSE,one-hop,slow-changing,https://www.index.go.kr/unity/potal/main/EachDtlPageDetail.do?idx_cd=1699,2021년입니다.,최근 5년 동안 정부 재정 대비 국방부 예산 비율이 가장 높았던 년도는 2021년입니다.,,,,,,,,, +3431,DEV,스포츠,KBO리그 통산 최다 홈런 2위를 기록 중인 선수는 누구인가요?,before 2022,occasionally,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/KBO_%EB%A6%AC%EA%B7%B8_%EA%B0%9C%EC%9D%B8_%ED%86%B5%EC%82%B0_%EC%B5%9C%EB%8B%A4_%ED%99%88%EB%9F%B0,이승엽,1982년에 출범한 KBO리그에서 통산 최다 홈런 2위를 기록중인 선수는 이승엽입니다.,,,,,,,,, +3432,DEV,경제,나이키키즈는 몇 개의 매장을 운영 중에 있나요?,2025,occasionally,FALSE,one-hop,slow-changing,https://www.playkiz.co.kr/bbs/board.php?bo_table=4stores_location&stx=%EB%82%98%EC%9D%B4%ED%82%A4%ED%82%A4%EC%A6%88&page=1,22개,총 22개 매장을 운영하고 있습니다.,,,,,,,,, +3433,DEV,경제,현재 엔비디아의 CEO는 누구인가요?,before 2022,occasionally,FALSE,one-hop,slow-changing,"https://ko.wikipedia.org/wiki/%EC%97%94%EB%B9%84%EB%94%94%EC%95%84 +https://ko.wikipedia.org/wiki/%EC%A0%A0%EC%8A%A8_%ED%99%A9",젠슨 황,엔비디아의 CEO는 젠슨 황입니다.,,,,,,,,, +3434,DEV,사회,가장 최근 열린 경기도자비엔날레의 후원/협력사를 알려줘.,2024,occasionally,FALSE,one-hop,slow-changing,"http://www.kocef.org/html/history_list.html?cate=histroy +https://www.kocef.org/html/history_view.html?cate=histroy&gubun=1&div=1&shenddate=&search=&str=&orderbyf=&orderby=&gotopage=1&bun=&b_idx=137","문화체육관광부,행정안전부,외교부,산업통상자원부,고용노동부,한국관광공사,여주시,이천시,광주시, NH농협은행,IAC,여주도자기사업협동조합, 이천도자공예사업협동조합, 광주왕실도예사업협동조합","제12회 경기도자비엔날레의 후원/협력사는 문화체육관광부,행정안전부,외교부,산업통상자원부,고용노동부,한국관광공사,여주시,이천시,광주시, NH농협은행,IAC,여주도자기사업협동조합, 이천도자공예사업협동조합, 광주왕실도예사업협동조합입니다.",,,,,,,,, +3435,DEV,IT/과학,기네스 세계 기록에 등재된 최연소 프로그래머는 누구야?,before 2022,occasionally,FALSE,one-hop,slow-changing,https://zdnet.co.kr/view/?no=20210129113244,영국 노샘프턴 출신의 카우틸랴 카마리야입니다.,영국 노샘프턴 출신의 카우틸랴 카마리야는 IBM의 전문 인증을 5개 취득하면서 최연소 프로그래머로 기네스북에 이름을 올렸습니다.,,,,,,,,, +3436,DEV,스포츠,가장 최근에 열린 하계 아시안 게임에서 한국은 몇 개의 금메달을 획득했어? ,2023,2026. 10. 4,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/2022%EB%85%84_%EC%95%84%EC%8B%9C%EC%95%88_%EA%B2%8C%EC%9E%84#%EB%A9%94%EB%8B%AC_%EC%A7%91%EA%B3%84,42개,가장 최근에 열린 아시안 게임인 2022년 아시안 게임에서 대한민국은 총 42개의 금메달을 획득했습니다.,,,,,,,,, +3437,DEV,사회,대한민국 육·해·공군 중 병사 병역의무 기간이 가장 긴 군종의 복무 기간은 얼마야?,before 2022,occasionally,FALSE,multi-hop,slow-changing,https://m.easylaw.go.kr/MOB/CsmInfoRetrieve.laf?csmSeq=1461&ccfNo=2&cciNo=2&cnpClsNo=1,1년 9개월,1년 9개월로 공군이 가장 깁니다.,,,,,,,,, +3438,DEV,연예,KBS 연예대상 대상의 역대 최다 수상자는 누구야?,2023,occasionally,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/KBS_%EC%97%B0%EC%98%88%EB%8C%80%EC%83%81,"신동엽, 김종민",총 3회를 수상한 신동엽과 김종민입니다.,,,,,,,,, +3439,DEV,날씨,2000년 이후 태풍이 가장 많이 발생한 해는 언제인가요?,before 2022,occasionally,FALSE,one-hop,slow-changing,https://www.weather.go.kr/w/typhoon/typ-stat.do,2013년,2000년 이후 태풍이 가장 많이 발생한 년도는 2013년 입니다.,,,,,,,,, +3440,DEV,사회,현재 대한민국 교육과정은 몇 차 교육과정이야?,before 2022,occasionally,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD%EC%9D%98_%EA%B5%90%EC%9C%A1%EA%B3%BC%EC%A0%95,"7차 교육과정으로, 1997년 12월 30일에 교육부 고시 제1997-15호로 고시된 교육과정입니다.",7차 교육과정입니다.,1997년 12월 30일에 고시된 7차 교육과정입니다. ,,,,,,,, +3441,DEV,생활/문화,태국의 현 왕조 이름을 알려줘.,before 2022,occasionally,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%ED%83%9C%EA%B5%AD%EC%9D%98_%EA%B5%B0%EC%A3%BC_%EB%AA%A9%EB%A1%9D,태국의 현 왕조는 짜끄리 왕조입니다. ,1782년부터 현재까지 짜끄리 왕조가 유지되고 있습니다.,,,,,,,,, +3442,DEV,세계,현재 스리랑카의 대통령은 누구야?,2024,occasionally,FALSE,one-hop,slow-changing,https://www.joongang.co.kr/article/25279468,아누라 디사나야케,2024년 9월 23일 취임한 아누라 디사나야케입니다.,아누라 디사나야케,,,,,,,, +3443,DEV,연예,배우 문채원의 현재 소속사는 어디야?,2025,occasionally ,FALSE,one-hop,slow-changing,https://news.jtbc.co.kr/article/NB12239000,블리츠웨이스튜디오,배우 문채원의 소속사는 블리츠웨이스튜디오입니다.,배우 문채원은 2025년 블리츠웨이스튜디오와 전속 계을 체결했습니다.,,,,,,,, +3444,DEV,사회,대한민국에서 구직급여의 수급대상이 되기 위한 조건을 알려줘.,2025,occasionally,FALSE,one-hop,slow-changing,https://www.easylaw.go.kr/CSP/CnpClsMainBtr.laf?popMenu=ov&csmSeq=722&ccfNo=2&cciNo=1&cnpClsNo=1,"구직급여 대상은 고용보험 적용 사업장에서 경영상 해고 등 비자발적으로 이직한 피보험자로서, 이직일 이전 18개월간 피보험 단위기간 180일 이상 근무하고, 근로의 의사와 능력이 있음에도 불구하고 실업한 상태에서 적극적으로 재취업 활동을 하는 사람입니다. +","구직급여는 비자발적 퇴사를 한 피보험자로, 이직일 이전 18개월간 180일이상 근무하였으며 적극적으로 재취업을 활동을 하는 사람이 받을 수 있습니다.",,,,,,,,, +3445,DEV,생활/문화,나이키닷컴에서 판매되고 있는 줌 보메로 5 운동화의 가격을 알려줘.,2025,occasionally,FALSE,one-hop,slow-changing,https://www.nike.com/kr/w?q=%EC%A4%8C%20%EB%B3%B4%EB%A9%94%EB%A1%9C%205&vst=%EC%A4%8C%20%EB%B3%B4%EB%A9%94%EB%A1%9C%205,"모델에 따라 89,000원 ~ 200,900원 등 다양하게 책정되어 있습니다.","89,000원 ~ 200,900원",,,,,,,,, +3446,DEV,사회,현재 SM엔터테인먼트의 대표이사가 누구인지 알려줘.,2024,occasionally,FALSE,one-hop,slow-changing,https://www.smentertainment.com/sustainability/governance/,장철혁·탁영준,SM엔터테인먼트의 대표이사는 장철혁·탁영준입니다.,,,,,,,,, +3447,DEV,세계,올해 유엔 총회에서 이재명 대통령은 몇 번째로 연설에 나서게 되나요?,2025,occasionally,FALSE,one-hop,slow-changing,https://www.msn.com/ko-kr/news/other/%EC%9D%B4-%EB%8C%80%ED%86%B5%EB%A0%B9-%EC%9C%A0%EC%97%94%EC%B4%9D%ED%9A%8C-%EC%B0%B8%EC%84%9D%EC%B0%A8-%EB%89%B4%EC%9A%95-%EB%B0%A9%EB%AC%B8-%ED%95%9C%EA%B5%AD-%EC%A0%95%EC%83%81-%EC%B2%AB-%EC%95%88%EB%B3%B4%EB%A6%AC-%EC%A3%BC%EC%9E%AC/ar-AA1MSbHS,7번째,196개국 중 7번째로 연설을 합니다.,,,,,,,,, +3448,DEV,스포츠,KBO 리그는 현재 몇 개 구단으로 운영 중인가요?,before 2022,occasionally ,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/KBO_%EB%A6%AC%EA%B7%B8,10개,"현재 KBO리그 소속 구단은 SSG랜더스, 키움히어로즈, LG트윈스, KTWIZ, 기아타이거즈, 한화이글스, 두산베어스, 롯데자이언츠, 삼성라이온즈, NC다이노스로 총 10개 구단이 있습니다.",,,,,,,,, +3449,DEV,스포츠,가장 최근에 열린 FIFA 월드컵의 개최지가 어디야?,2022,occasionally,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/2022%EB%85%84_FIFA_%EC%9B%94%EB%93%9C%EC%BB%B5,카타르,카타르입니다.,,,,,,,,, +3450,DEV,IT/과학,세계스마트시티기구(WeGO)가 가장 최근에 개소한 중앙아시아 지역사무소가 위치한 곳은 어디인가?,2024,occasionally,FALSE,one-hop,slow-changing,https://www.yna.co.kr/view/AKR20240920123800371?section=industry/technology-science,카자흐스탄 알마티,알마티,,,,,,,,, +3451,DEV,IT/과학,포티투마루의 대표가 누구인지 알려줘.,before 2022,occasionally,FALSE,one-hop,slow-changing,https://www.newstheai.com/news/articleView.html?idxno=7941,김동환,김동환 대표입니다.,,,,,,,,, +3452,DEV,정치,현직 인천광역시 시장이 누구인지 알려줘.,2022,occasionally,FALSE,one-hop,slow-changing,https://www.incheon.go.kr/IC040117,유정복,인천광역시의 시장은 유정복입니다.,유정복입니다.,,,,,,,, +3453,DEV,날씨,가장 최근에 필리핀 마닐라에 대한 비상사태를 선포하게 만든 태풍의 이름을 알려줘.,2024,occasionally,FALSE,one-hop,slow-changing,https://www.joongang.co.kr/article/25265845/,개미,태풍 '개미'입니다.,,,,,,,,, +3454,DEV,경제,전세계 기준 역사상 가장 높았던 복권 당첨금은 얼마인가요?,2022,occasionally ,FALSE,one-hop,slow-changing,https://www.opinionnews.co.kr/news/articleView.html?idxno=92237,"지금까지 미국을 비롯 전 세계에서 당첨된 복권 최고액은 22년 11월 미국의 ""파워볼(Powerball)""에서 나온 20억 4000만 달러입니다.",20억 4000만 달러입니다.,,,,,,,,, +3455,DEV,경제,최근 5년 기준 미국에서 가장 물가상승률이 높았던 때가 언제야?,2022,every_year,FALSE,one-hop,slow-changing,https://ko.tradingeconomics.com/united-states/inflation-cpi,2022년 6월,"최근 5년 기준 미국에서 가장 물가상승률이 높았던 때는 2022년 6월이며, 9.1퍼센트의 높은 물가상승률을 기록했습니다.",,,,,,,,, +3456,DEV,IT/과학,지금까지 관측된 가장 큰 규모의 블랙홀 제트는 무엇인가요?,2024,occasionally ,FALSE,one-hop,slow-changing,https://www.dongascience.com/news.php?idx=67499,마르테인 우이 미국 캘리포니아공대(칼텍) 관측천문학과 연구원팀이 규모가 6.8Mpc 이상인 관측 사상 가장 큰 규모의 블랙홀 제트 '포르피리온'을 발견하였습니다., '포르피리온'입니다.,,,,,,,,, +3457,DEV,날씨,가장 최근에 슈퍼블루문이 뜬 건 언제인가요?,2025,occasionally,FALSE,one-hop,slow-changing,https://www.newstnt.com/news/articleView.html?idxno=10670,2025년 1월 31일,2025년 1월 31일입니다.,,,,,,,,, +3458,DEV,사회,대한민국에는 총 몇 개의 국립박물관이 있나요? ,2024,occasionally,FALSE,one-hop,slow-changing,https://www.mcst.go.kr/attachFiles/viewer/skin/doc.html?fn=TCS_SCHMNG20250703111155190462&rs=/attachFiles/viewer/result/202509/,14개,총 14개입니다.,,,,,,,,, +3459,DEV,날씨,관측 이래 사상자 수가 가장 많은 지진은 무엇이지?,before 2022,occasionally,FALSE,one-hop,slow-changing,"https://ko.wikipedia.org/wiki/2008%EB%85%84_%EC%93%B0%EC%B4%A8_%EB%8C%80%EC%A7%80%EC%A7%84 +https://www.joongang.co.kr/article/20592721",쓰촨 대지진,쓰촨성 대지진입니다.,,,,,,,,, +3460,DEV,정치,전직 한국 대통령 중 몇 명이 부패 혐의로 유죄 판결을 받았나요?,before 2022,occasionally,FALSE,one-hop,slow-changing,https://www.bbc.com/korean/articles/cj68z706re3o,"전두환 전 대통령, 노태우 전 대통령, 박근혜 전 대통령, 이명박 전 대통령이 유죄 판결을 받았으므로 총 4명입니다. ",4명입니다. ,4명,총 4명입니다. ,부패혐의로 무죄 판결을 받은 전직 대통령은 4명입니다. ,,,,,, +3461,DEV,정치,"학교 선생님이 5만 7천원짜리 선물을 받았어. 김영란법에 의하면, 처벌 대상이야?",before 2022,occasionally,FALSE,multi-hop,slow-changing,"https://ko.wikipedia.org/wiki/%EB%B6%80%EC%A0%95%EC%B2%AD%ED%83%81_%EB%B0%8F_%EA%B8%88%ED%92%88%EB%93%B1_%EC%88%98%EC%88%98%EC%9D%98_%EA%B8%88%EC%A7%80%EC%97%90_%EA%B4%80%ED%95%9C_%EB%B2%95%EB%A5%A0 +https://www.law.go.kr/%EB%B2%95%EB%A0%B9/%EB%B6%80%EC%A0%95%EC%B2%AD%ED%83%81%EB%B0%8F%EA%B8%88%ED%92%88%EB%93%B1%EC%88%98%EC%88%98%EC%9D%98%EA%B8%88%EC%A7%80%EC%97%90%EA%B4%80%ED%95%9C%EB%B2%95%EB%A5%A0",처벌 대상입니다.,"5만원 이상의 선물을 할 경우, 김영란 법에 의해 처벌될 수 있습니다.",,,,,,,,, +3462,DEV,정치,현재 대한민국의 대통령 부인이 누구야?,2025,occasionally,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD%EC%9D%98_%EB%8C%80%ED%86%B5%EB%A0%B9_%EB%B0%B0%EC%9A%B0%EC%9E%90,김혜경,김혜경입니다.,현직 대통령의 부인은 김혜경입니다.,이재명 현직 대통령의 부인은 김혜경입니다.,,,,,,, +3463,DEV,UNK,가장 최근에 한국이 해외에 파병한 부대를 알려줘.,2024,occasionally,FALSE,multi-hop,slow-changing,https://www.asiae.co.kr/article/2024121608422515167,아크부대 23진,아랍에미리트로 파병된 아크부대 23진입니다.,UAE로 파병된 아크부대 23진입니다.,,,,,,,, +3464,DEV,날씨,서울에 가장 빨리 첫눈이 온 건 언제야?,before 2022,every_year,FALSE,one-hop,slow-changing,https://www.etoday.co.kr/news/view/2303253,서울에 가장 빠른 첫눈이 내렸던 때는 1981년으로 10월 23일에 첫눈을 관측했습니다.,1981년,,,,,,,,, +3465,DEV,세계,세계에서 가장 오래 서비스 중인 MMORPG 게임의 이름이 뭐야?,before 2022,occasionally,FALSE,one-hop,slow-changing,"https://ko.wikipedia.org/wiki/%EB%B0%94%EB%9E%8C%EC%9D%98_%EB%82%98%EB%9D%BC_(%EC%98%A8%EB%9D%BC%EC%9D%B8_%EA%B2%8C%EC%9E%84) +https://www.yna.co.kr/view/AKR20241101153600017",바람의 나라,온라인게임 바람의 나라입니다.,,,,,,,,, +3466,DEV,생활/문화,가장 최근에 오픈한 이마트는 어디인가요?,2025,occasionally,FALSE,one-hop,slow-changing,"https://company.emart.com/ko/company/history.do +https://realty.chosun.com/site/data/html_dir/2025/09/17/2025091703320.html",이마트 트레이더스 구월점,가장 최근에 오픈한 이마트는 트레이더스 구월점입니다.,가장 최근에 오픈한 이마트는 2025년 9월에 오픈한 트레이더스 구월점입니다.,,,,,,,, +3467,DEV,세계,가장 최근에 한국에서 개최된 국제 회의는 뭐야?,2025,occasionally,FALSE,one-hop,slow-changing,https://www.mofa.go.kr/www/brd/m_4076/view.do?seq=371617&page=1,「세계기록유산의 미래 국제회의」,"2025년 9월 8,9일에 양일에 걸쳐 열린 「세계기록유산의 미래 국제회의」입니다.",,,,,,,,, +3468,DEV,세계,가장 최근 개최된 파리 에어쇼는 며칠동안 열렸어?,2025,1905. 7. 19,FALSE,one-hop,slow-changing,https://monthly.chosun.com/client/news/viw.asp?ctcd=C&nNewsNumb=202508100044,7일,2025년 6월 16일부터 22일까지 7일간 개최되었습니다.,,,,,,,,, +3469,DEV,스포츠,NBA 역대 최단신 선수는 누구야?,before 2022,occasionally,FALSE,one-hop,slow-changing,https://www.thebigdata.co.kr/view.php?ud=201802141743101281a7923682ff_23,"NBA 역대 최단신 선수는 먹시 보그스 선수로, 160cm입니다.",먹시 보그스,,,,,,,,, +3470,DEV,사회,대한민국의 영토 면적을 알려줘.,before 2022,occasionally ,FALSE,one-hop,slow-changing,http://nationalatlas.ngii.go.kr/pages/page_413.php,"223,404㎢","대한민국의 영토 면적은 223,404㎢입니다.",,,,,,,,, +3471,DEV,연예,아이유의 현재 남자친구는 누구야?,2022,occasionally,FALSE,one-hop,slow-changing,https://m.radiokorea.com/news/article.php?uid=474326,아이유의 현재 남자친구는 이종석입니다. ,아이유의 남자친구는 이종석입니다. ,배우 이종석입니다. ,,,,,,,, +3472,DEV,IT/과학,대한민국이 남극에 세운 기지를 알려줘.,before 2022,occasionally,FALSE,multi-hop,slow-changing,"https://eng.kopri.re.kr/kopri/html/infra/03040101.html +https://eng.kopri.re.kr/kopri/html/infra/03010101.html",장보고과학기지와 세종기지가 있습니다.,"대한민국이 남극에 세운 기지로는 세종기지, 장보고과학기지들이 있습니다.",대한민국이 남극에 세운 기지로는 1988년에 세운 세종기지와 2014년에 세운 장보고과학기지가 있습니다.,,,,,,,, +3473,DEV,정치,임기가 가장 짧았던 대한민국의 대통령은 누구인가요?,before 2022,occasionally,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EC%9C%A4%EB%B3%B4%EC%84%A0,최규하,최규하 대통령입니다.,,,,,,,,, +3474,DEV,정치,제과점업 상생협약에 따르면 대기업이 빵집을 신규 출점할 때 기존 중소 빵집과의 거리 제한은 몇 m야?,2024,occasionally ,FALSE,multi-hop,slow-changing,https://www.econovill.com/news/articleView.html?idxno=662895,수도권 기준 400m,대기업 프랜차이즈는 기존 중소 빵집으로부터 400m 이내에는 출점이 제한됩니다.,,,,,,,,, +3475,DEV,사회,현재 교황은 누구인가요?,2025,occasionally,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EA%B5%90%ED%99%A9,레오 14세,교황 레오 14세,2025년 5월 8일에 즉위한 레오 14세,현재 교황은 레오 14세입니다.,,,,,,, +3476,DEV,세계,현재 덴마크의 국왕은 누구야?,2024,occasionally,FALSE,one-hop,slow-changing,"https://ko.wikipedia.org/wiki/%ED%94%84%EB%A0%88%EB%8D%B0%EB%A6%AC%ED%81%AC_10%EC%84%B8 +https://ko.wikipedia.org/wiki/%EB%8D%B4%EB%A7%88%ED%81%AC",프레데리크 10세,덴마크의 국왕은 프레데리크 10세 입니다.,,,,,,,,, +3477,DEV,정치,일본의 전대 천황은 누구인가요?,before 2022,occasionally ,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EC%95%84%ED%82%A4%ED%9E%88%ED%86%A0,일본의 전대 천황은 아키히토입니다.,일본의 전대 천황은 아키히토로 2019년 5월 1일에 퇴위하여 현재 상황 지위에 있습니다.,,,,,,,,, +3478,DEV,연예,ITZY의 리더는 누구야?,before 2022,occasionally,FALSE,one-hop,slow-changing,"https://ko.wikipedia.org/wiki/ITZY +https://www.ftoday.co.kr/news/articleView.html?idxno=338358",예지,잇지의 리더는 예지입니다.,,,,,,,,, +3479,DEV,스포츠,KBO 리그 최다 우승 팀은 어디지?,before 2022,every_year,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/KIA_%ED%83%80%EC%9D%B4%EA%B1%B0%EC%A6%88,기아 타이거즈,KBO 최다 리그 우승팀은 기아 타이거즈입니다.,,,,,,,,, +3480,DEV,IT/과학,현재 대한민국이 운용 중인 군사위성은 몇 개야?,2025,occasionally,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EC%95%84%EB%82%98%EC%8B%9C%EC%8A%A4_2%ED%98%B8,1개,대한민국의 군사위성은 현재 아나시스 2호 1대뿐입니다.,,,,,,,,, +3481,DEV,경제,상속세 과세표준 10억 이하의 세율은 몇 퍼센트야?,2025,occasionally,FALSE,one-hop,slow-changing,https://easylaw.go.kr/CSP/CnpClsMain.laf?popMenu=ov&csmSeq=255&ccfNo=7&cciNo=2&cnpClsNo=1,30프로입니다.,상속세 과세표준 10억 이하의 세율은 30프로입니다.,,,,,,,,, +3482,DEV,세계,미국에서 가장 많은 성씨가 뭐야?,before 2022,occasionally,FALSE,one-hop,slow-changing,https://www.khan.co.kr/culture/culture-general/article/201701301554001,미국에서 성 1위는 smith입니다.,smith,,,,,,,,, +3483,DEV,경제,월세 세액공제 대상 주택의 기준시가는 얼마인가요?,2025,occasionally,FALSE,one-hop,slow-changing,https://mybiz.pay.naver.com/contentsGuide/1224/YEAR_END_TAX/exposureOrder,4억원 이하,4억원까지입니다.,,,,,,,,, +3484,DEV,경제,생계급여의 중위소득 기준은 몇 퍼센트야?,2025,occasionally,FALSE,one-hop,slow-changing,https://www.mohw.go.kr/menu.es?mid=a10708010300,32프로입니다.,생계급여의 중위소득 기준은 32프로입니다.,,,,,,,,, +3485,DEV,사회,지금까지 발견된 신라 금관 중 가장 큰 금관은 어디에 보관되어 있나요?,2025,occasionally,FALSE,multi-hop,slow-changing,"https://ko.wikipedia.org/wiki/%EA%B8%88%EA%B4%80%EC%B4%9D_%EA%B8%88%EA%B4%80_%EB%B0%8F_%EA%B8%88%EC%A0%9C_%EA%B4%80%EC%8B%9D +https://www.kbmaeil.com/article/20250922500363",국립경주박물관,금관총 금관은 국립경주박물관에서 보관 중입니다.,,,,,,,,, +3486,DEV,사회,마지막으로 가스 요금이 인상된 게 언제였지?,2025,occasionally,FALSE,one-hop,slow-changing,https://news.kbs.co.kr/news/pc/view/view.do?ncd=8362573,2025년 9월,마지막으로 가스 요금이 인상 된 것은 2025년 9월입니다.,,,,,,,,, +3487,DEV,연예,배우 박소이가 지금 다니고 있는 학교는?,2025,occasionally,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EB%B0%95%EC%86%8C%EC%9D%B4,인천여자중학교,박소이가 다니고 있는 학교는 인천여자중학교입니다.,,,,,,,,, +3488,DEV,사회,한국의 육군 복무 기간은 몇 개월인가요?,before 2022,occasionally,FALSE,multi-hop,slow-changing,"https://w.wiki/BF8D +https://m.ktv.go.kr/program/again/view?program_id=PG2180014D&content_id=560292",1년 6개월,한국의 육군 복무 기간은 1년 6개월입니다.,,,,,,,,, +3489,DEV,정치,현재 제주특별자치도지사는 누구야?,2022,occasionally,FALSE,one-hop,slow-changing,"https://ko.wikipedia.org/wiki/%EC%98%A4%EC%98%81%ED%9B%88 +https://www.jeju.go.kr/dojisa/index.htm",오영훈,제주특별자치도지사는 오영훈입니다.,,,,,,,,, +3490,DEV,IT/과학,역사상 가장 많이 팔린 스마트폰은 뭐야? ,before 2022,occasionally ,FALSE,one-hop,slow-changing,"https://www.vdcm.co.kr/news/articleView.html?idxno=11487 +https://www.fnnews.com/news/201509101105259219",아이폰 6,역사상 가장 많이 팔린 스마트폰은 아이폰 6로 2억 2200만 대가 판매되었습니다.,,,,,,,,, +3491,DEV,생활/문화,재거스 매장은 한국에 몇 개 있어?,2024,occasionally,FALSE,one-hop,slow-changing,https://n.news.naver.com/mnews/article/031/0000872841,1개,재거스 매장은 한국에 1개 있습니다.,아직 재거스 매장은 한국에 한 개 있습니다. ,,,,,,,, +3492,DEV,IT/과학,국내 원자력발전소는 현재 총 몇 개가 운전 중인가요?,2024,occasionally ,FALSE,one-hop,slow-changing,https://www.khnp.co.kr/main/contents.do?key=61,26개,국내 원전은 현재 26기가 운전 중입니다.,국내 원자력발전소는 26호기가 운전 중입니다.,,,,,,,, +3493,DEV,정치,가장 최근에 있었던 남북정상회담은 언제야?,before 2022,occasionally,FALSE,one-hop,slow-changing,"https://ko.wikipedia.org/wiki/2018%EB%85%84_%EC%A0%9C3%EC%B0%A8_%EB%82%A8%EB%B6%81%EC%A0%95%EC%83%81%ED%9A%8C%EB%8B%B4 +https://ko.wikipedia.org/wiki/%EB%82%A8%EB%B6%81%EC%A0%95%EC%83%81%ED%9A%8C%EB%8B%B4",2018년 제3차 남북정상회담입니다.,가장 최근에 있었던 남북정상회담은 2018년 제3차 남북정상회담입니다.,,,,,,,,, +3494,DEV,IT/과학,현재 윈도우 버전이 몇까지 나왔어?,2024,occasionally,FALSE,one-hop,slow-changing,"https://ko.wikipedia.org/wiki/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%86%8C%ED%94%84%ED%8A%B8_%EC%9C%88%EB%8F%84%EC%9A%B0#%EC%9C%88%EB%8F%84%EC%9A%B0_%ED%88%AC_%EA%B3%A0 +https://learn.microsoft.com/ko-kr/windows/release-health/windows11-release-information",현재 최신 윈도우 버전은 윈도우 11 24H2입니다.,윈도우11 24H2,,,,,,,,, +3495,DEV,IT/과학,인텔의 마지막 core i 시리즈의 코드명이 뭐지?,2023,occasionally,FALSE,one-hop,slow-changing,https://www.donga.com/news/It/article/all/20231017/121716897/1,랩터레이크,14세대 랩터레이크입니다.,,,,,,,,, +3496,DEV,경제,오스탈이 생산하는 주요 제품은 무엇인가요?,2025,occasionally,FALSE,one-hop,slow-changing,https://www.globalepic.co.kr/view.php?ud=20250611112703757348439a4874_29,"글로벌 조선업체이자 방산 주요 계약업체로, 방산 및 상업용 선박의 설계, 건조, 지원을 전문으로 합니다.",오스탈은 지금까지 350척 이상의 선박을 건조했습니다.,,,,,,,,, +3497,DEV,사회,전국에서 고등학생을 제외하고 학생이 가장 많은 지역은 어디인가요?,2025,occasionally ,FALSE,multi-hop,slow-changing,https://www.moe.go.kr/sn3hcv/doc.html?fn=d8d51ab4c58d24b2c438e019104aef91&rs=/upload/synap/202509/,경기도,전국에서 경기도가 유·초·중등 학생이 가장 많습니다.,,,,,,,,, +3498,DEV,세계,현재 남아프리카 공화국의 대통령은?,before 2022,occasionally,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EB%82%A8%EC%95%84%ED%94%84%EB%A6%AC%EC%B9%B4_%EA%B3%B5%ED%99%94%EA%B5%AD_%EB%8C%80%ED%86%B5%EB%A0%B9,시릴 라마포사,시릴 라마포사입니다.,,,,,,,,, +3499,DEV,연예,전현무는 연예대상에서 총 몇 번의 대상을 수상했나요?,2024,occasionally ,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EC%A0%84%ED%98%84%EB%AC%B4#%EC%88%98%EC%83%81,3회,전현무는 총 3회의 대상을 수상했습니다.,,,,,,,,, +3500,DEV,연예,배우 이도현이 출연한 영화는 총 몇 편이야?,2024,occasionally,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EC%9D%B4%EB%8F%84%ED%98%84_(1995%EB%85%84),2편입니다.,배우 이도현이 지금까지 출연한 영화는 총 두 편입니다.,,,,,,,,, +3501,DEV,사회,국내 공공발레단은 몇 개인가요?,2024,occasionally,FALSE,one-hop,slow-changing,https://www.hani.co.kr/arti/culture/music/1129070.html,3개,"국내 공공발레단은 국립발레단, 광주시립발레단, 서울시발레단으로 3개의 발레단이 있습니다.",국내 공공발레단은 3개가 있습니다.,,,,,,,, +3502,DEV,IT/과학,메타 AI가 공개한 최신형 언어모델의 파라미터 수는?,2025,occasionally,FALSE,one-hop,slow-changing,https://www.cio.com/article/3955643/%EB%A9%94%ED%83%80-%EC%B0%A8%EC%84%B8%EB%8C%80-%EB%A9%80%ED%8B%B0%EB%AA%A8%EB%8B%AC-ai-%EB%9D%BC%EB%A7%88-4-%EC%8B%9C%EB%A6%AC%EC%A6%88-%EA%B3%B5%EA%B0%9C.html,170억 개의 활성 파라미터,라마 4 스카우트는 170억 개의 활성 파라미터 수를 가지고 있습니다.,,,,,,,,, +3503,DEV,정치,현재 대한민국 정읍시 시장은 누구야?,2022,occasionally ,FALSE,one-hop,slow-changing,https://www.jeongeup.go.kr/mayor/index.jeongeup?menuCd=DOM_000000206001000000,이학수,이학수 시장입니다.,,,,,,,,, +3504,DEV,정치,지금 대한민국 여당은 어디야?,2025,2027. 5. 11,FALSE,one-hop,slow-changing,"https://ko.wikipedia.org/wiki/%EC%97%AC%EB%8B%B9 +https://ko.wikipedia.org/wiki/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD_%EB%8C%80%ED%86%B5%EB%A0%B9",현재 여당은 더불어민주당입니다.,2025년 9월 기준 현재 여당은 더불어민주당입니다.,더불어민주당,,,,,,,, +3505,DEV,연예,원빈이 가장 최근에 찍은 광고는 무엇인가요?,2025,occasionally ,FALSE,one-hop,slow-changing,https://news.jtbc.co.kr/article/NB12246817,아정당,원빈이 가장 최근에 찍은 광고는 아정당입니다.,,,,,,,,, +3506,DEV,정치,현직 보건복지부 제1차관이 누구야?,2025,occasionally,FALSE,one-hop,slow-changing,https://www.mohw.go.kr/menu.es?mid=a10606010000,이스란,현재 보건복지부의 제1 차관은 이스란입니다.,현재 보건복지부의 장관은 2025년 6월에 취임한 이스란입니다.,,,,,,,, +3507,DEV,사회,특례시의 기준이 어떻게 돼?,before 2022,occasionally,FALSE,one-hop,slow-changing,"https://w.wiki/BHWf +https://www.law.go.kr/LSW//lumLsLinkPop.do?lspttninfSeq=173643&chrClsCd=010202",인구 100만 이상 대도시,특례시는 인구 100만 이상 대도시를 기준으로 부여됩니다.,,,,,,,,, +3508,DEV,연예,현재 비투비 멤버는 몇명이야?,before 2022,occasionally ,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EB%B9%84%ED%88%AC%EB%B9%84,6명,비투비는 현재 멤버는 총 6명입니다.,,,,,,,,, +3509,DEV,스포츠,테니스 그랜드 슬램 우승 횟수 1위는 누구야?,2023,occasionally,FALSE,one-hop,slow-changing,"https://www.ftimes.kr/news/articleView.html?idxno=21906 +https://www.hankookilbo.com/News/Read/A2025012015130002448",노박 조코비치,노박 조코비치가 그랜드슬램 24회 우승으로 최다 우승을 차지하고 있습니다.,,,,,,,,, +3510,DEV,연예,영주여자고등학교 출신 연예인은 몇 명이야?,before 2022,occasionally,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EB%B6%84%EB%A5%98:%EC%98%81%EC%A3%BC%EC%97%AC%EC%9E%90%EA%B3%A0%EB%93%B1%ED%95%99%EA%B5%90_%EB%8F%99%EB%AC%B8,2명입니다.,"영주여자고등학교 출신 연예인은 낯선 아이(우지윤),볼 빨간 사춘기(안지영) 2명입니다.",,,,,,,,, +3511,DEV,스포츠,한국 K리그에서 가장 우승을 많이 한 축구 팀은 어디야? ,before 2022,occasionally,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/K%EB%A6%AC%EA%B7%B8_%EC%9A%B0%EC%8A%B9_%EA%B8%B0%EB%A1%9D,전북 현대 모터스입니다.,"K리그에서 우승을 가장 많이 한 팀은 전북 현대 모터스로, 총 9회 우승을 기록했습니다. 그 다음으로 많은 우승 횟수를 기록한 팀은 성남 FC로, 총 7회 우승을 달성했습니다.",,,,,,,,, +3512,DEV,IT/과학,가장 최근 SK하이닉스가 공개한 차세대 메모리 제어 솔루션에 탑재한 os는?,2024,occasionally,FALSE,one-hop,slow-changing,https://www.yna.co.kr/view/AKR20240923033500003?section=industry/technology-science,리눅스,리눅스입니다.,,,,,,,,, +3513,DEV,정치,주택임대차보호법이 마지막으로 개정된 연도를 알려줘.,2023,occasionally,FALSE,one-hop,slow-changing,https://www.law.go.kr/%EB%B2%95%EB%A0%B9/%EC%A3%BC%ED%83%9D%EC%9E%84%EB%8C%80%EC%B0%A8%EB%B3%B4%ED%98%B8%EB%B2%95,2023년에 마지막으로 개정되었습니다.,주택임대차보호법은 2023년 7월 19일에 마지막으로 개정되었습니다.,주택임대차보호법의 가장 최근 개정은 2023년 7월 19일입니다.,,,,,,,, +3514,DEV,경제,주택청약 가입할 수 있는 나이가 어떻게 돼?,before 2022,occasionally,FALSE,multi-hop,slow-changing,https://oland.kbstar.com/quics?page=C029533&cc=b030657:b029684&isNew=N&prcode=DP01000620,주택청약에 가입할 수 있는 나이 제한은 없습니다.,나이 제한은 없습니다.,,,,,,,,, +3515,DEV,정치,한국에서 국회의원 비례대표는 몇 명으로 구성되나요?,before 2022,occasionally,FALSE,one-hop,slow-changing,https://www.law.go.kr/LSW//lsInfoP.do?lsId=001725&ancYnChk=0#0000,46석,현재 우리나라 국회의원 의석 300석 중 비례대표 의석수는 46석입니다.,,,,,,,,, +3516,DEV,연예,셀린 디온이 앓고 있는 병명이 뭐야?,2022,occasionally,FALSE,one-hop,slow-changing,https://www.joongang.co.kr/article/25268162,강직인간 증후군,셀린 디온이 앓고 있는 병은 강직인간 증후군입니다.,,,,,,,,, +3517,DEV,경제,우리나라가 가장 많이 수입하는 자원은 무엇입니까?,2025,occasionally,FALSE,one-hop,slow-changing,https://www.index.go.kr/unity/potal/main/EachDtlPageDetail.do?idx_cd=2455#,석유 자원입니다.,석유입니다.,,,,,,,,, +3518,DEV,IT/과학,대한민국에서 가장 큰 하천의 이름이 뭐야?,before 2022,occasionally,FALSE,one-hop,slow-changing,https://terms.naver.com/entry.naver?docId=4370327&cid=42478&categoryId=59939,한강,우리나라에서 가장 큰 강은 한강입니다.,,,,,,,,, +3519,DEV,경제,청년 근속 인센티브를 받기 위한 최소한의 근속 개월수는 몇 개월인가요?,2025,n/a,FALSE,one-hop,slow-changing,https://news.nate.com/view/20250805n18275,6개월,6개월입니다.,,,,,,,,, +3520,DEV,날씨,대한민국에서 산사태가 주로 발생하는 시기를 알려줘.,before 2022,occasionally,FALSE,one-hop,slow-changing,https://news.seoul.go.kr/env/mountain-disaster-prevention/is_landslide,6월에서 10월 사이,우리나라 산사태는 주로 집중호우가 내리는 시기인 6월에서 10월 사이에 발생합니다.,,,,,,,,, +3521,DEV,사회,티스토리의 운영권은 어디에 전권 위임됐나요?,before 2022,occasionally,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%ED%8B%B0%EC%8A%A4%ED%86%A0%EB%A6%AC#2007%EB%85%84,티스토리'의 운영권은 카카오에 모두 위임되었습니다.,카카오입니다.,,,,,,,,, +3522,DEV,경제,올해 현대자동차의 법인이 현지 주식시장에서 상장 절차를 시작한 나라는 어디야?,2025,occasionally,TRUE,one-hop,slow-changing,https://www.g-enews.com/article/Global-Biz/2025/04/20250421061925595fbbec65dfb_1,2025년에 현대자동차가 해외에 상장 절차를 시작한 케이스는 없습니다.,"2024년에 인도에 IPO를 했으나, 2025년에 다른 국가에 IPO를 한 기록은 없습니다.",없습니다.,,,,,,,, +3523,DEV,경제,"카카오뱅크에서 제공하는 적금 상품 중, 26주 동안 매주 일정 금액을 저축하는 적금의 이름은?",before 2022,occasionally,FALSE,multi-hop,slow-changing,https://www.kakaobank.com/products/26weeks,카카오뱅크 26주적금,이 상품은 카카오뱅크에서 제공하는 26주 적금입니다.,카카오뱅크에서 운영하는 26주 저축 상품입니다.,,,,,,,, +3524,DEV,생활/문화,한국의 국화는 언제 개화하나요?,before 2022,occasionally,FALSE,multi-hop,slow-changing,https://w.wiki/BF8a,7월 초부터 10월 중순까지,7월 초 ~ 10월 중순,한국의 국화는 무궁화 꽃으로 개화시기는 7월 초부터 10월 중순까지입니다.,,,,,,,, +3525,DEV,스포츠,마라톤 남자 세계 기록을 가지고 있는 선수는 누구인가요?,2023,every_year,FALSE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EB%A7%88%EB%9D%BC%ED%86%A4_%EC%84%B8%EA%B3%84_%EA%B8%B0%EB%A1%9D_%EC%B6%94%EC%9D%B4,켈빈 킵툼,마라톤 남자 세계 기록의 보유자는 켈빈 킵툼입니다.,,,,,,,,, +3526,DEV,정치,현재 국회에서 감사를 수행하고 있는 단체 명칭은 무엇인가요?,2025,occasionally,FALSE,one-hop,slow-changing,https://watch.peoplepower21.org/index.php?mid=Committee&sangim=%ED%96%89%EC%A0%95%EC%95%88%EC%A0%84%EC%9C%84%EC%9B%90%ED%9A%8C#watch,행정안전위원회,행안위(행정안전위원회)입니다.,,,,,,,,, +3527,DEV,경제,도널드 트럼프가 트위터를 인수한 시기는 언제야?,2025,occasionally,TRUE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EC%9D%BC%EB%A1%A0_%EB%A8%B8%EC%8A%A4%ED%81%AC%EC%9D%98_%ED%8A%B8%EC%9C%84%ED%84%B0_%EC%9D%B8%EC%88%98,트위터를 인수한 건 일론머스크로 트럼프는 트위터를 인수한 적이 없습니다.,트럼프는 twitter(현 X)를 인수한 적이 없습니다.,,,,,,,,, +3528,DEV,연예,개그맨 이영자의 배우자는 누구야?,2025,occasionally,TRUE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EC%9D%B4%EC%98%81%EC%9E%90,개그맨 이영자는 배우자가 없습니다.,개그맨 이영자는 아직 배우자가 없습니다.,,,,,,,,, +3529,DEV,경제,연준은 왜 이번에 대한민국의 기준금리를 내리지 않았어?,2025,n/a,TRUE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%ED%95%9C%EA%B5%AD%EC%9D%80%ED%96%89_%EA%B8%B0%EC%A4%80%EA%B8%88%EB%A6%AC,대한민국의 기준금리는 한국은행에서 결정합니다.,"연준은 미국의 은행이며, 대한민국은 한국은행에서 기준금리는 결정합니다.",,,,,,,,, +3530,DEV,정치,에마니엘 마크롱은 언제 미국의 국무장관으로 역임했나요?,2025,occasionally,TRUE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EC%97%90%EB%A7%88%EB%89%98%EC%97%98_%EB%A7%88%ED%81%AC%EB%A1%B1,에마뉘엘 마크롱은 미국의 국무장관으로 역임한 바가 없습니다.,미국의 국무장관이었던 적이 없습니다.,,,,,,,,, +3531,DEV,정치,박근혜는 몇 년도에 대한민국의 총리로 임명되었나요?,2025,occasionally,TRUE,one-hop,slow-changing,https://w.wiki/BHWA,"박근혜는 대한민국의 전 대통령으로, 총리로 임명된 적이 없습니다.",박근혜는 대한민국의 총리였던 적이 없습니다.,,,,,,,,, +3532,DEV,경제,"100,000원권 지폐가 처음 발행된건 몇 년도야?",2025,occasionally,TRUE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD_%EC%9B%90#%EC%A7%80%ED%8F%90_2,"100,000원권 지폐는 아직 발행되지 않았습니다.",십만원권 지폐는 발행되지 않았습니다.,,,,,,,,, +3533,DEV,스포츠,경기도 광주에 있는 광주 FC의 라이벌 팀을 알려줘.,2025,occasionally,TRUE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EA%B4%91%EC%A3%BC_FC,광주 FC는 광주광역시에 있는 축구단입니다.,광주 FC는 경기도가 아닌 광주광역시에 있는 축구단입니다.,,,,,,,,, +3534,DEV,IT/과학,현대자동차에서 하늘을 나는 자전거는 언제 출시되었나요?,2025,occasionally,TRUE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%ED%98%84%EB%8C%80%EC%9E%90%EB%8F%99%EC%B0%A8%EC%9D%98_%EC%B0%A8%EC%A2%85_%EB%AA%A9%EB%A1%9D,현대자동차에서는 하늘을 나는 자전거를 출시한 적이 없습니다.,하늘을 나는 자전거는 현대자동차에서 출시되지 않았습니다.,,,,,,,,, +3535,DEV,스포츠,2024년 기준 대한민국 축구 국가대표팀 감독이 FIFA의 회장이 된 건 언제인가요?,2025,occasionally,TRUE,multi-hop,slow-changing,"https://ko.wikipedia.org/wiki/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD_%EC%B6%95%EA%B5%AC_%EA%B5%AD%EA%B0%80%EB%8C%80%ED%91%9C%ED%8C%80_%EA%B0%90%EB%8F%85%EA%B3%BC_%EC%88%98%EC%84%9D%EC%BD%94%EC%B9%98_%EB%AA%85%EB%8B%A8_%EA%B8%B0%EB%A1%9D +https://ko.wikipedia.org/wiki/%ED%99%8D%EB%AA%85%EB%B3%B4",홍명보는 FIFA 회장이 아닙니다.,홍명보 감독은 현재 FIFA 회장이 아닙니다.,,,,,,,,, +3536,DEV,생활/문화,유재석이 아는 형님을 언제부터 진행했는지 알려줄래?,2025,occasionally,TRUE,one-hop,slow-changing,"https://ko.wikipedia.org/wiki/%EC%95%84%EB%8A%94_%ED%98%95%EB%8B%98 +https://ko.wikipedia.org/wiki/%EC%9C%A0%EC%9E%AC%EC%84%9D",유재석은 예능 프로 아는 형님의 진행자가 아닙니다.,유재석은 아는 형님에 출연하지 않습니다.,,,,,,,,, +3537,DEV,세계,동아시아 연합(EAU) 의 소속 국가를 알려줘.,2025,occasionally,TRUE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EB%8F%99%EC%95%84%EC%8B%9C%EC%95%84,현재 동아시아 연합이라는 연합은 존재하지 않습니다.,동아시아 연합은 존재하지 않는 연합입니다.,,,,,,,,, +3538,DEV,날씨,대한민국 건국 이후 한라산이 마지막으로 분화한 연도를 알려줘.,2025,occasionally,TRUE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%ED%95%9C%EB%9D%BC%EC%82%B0,한라산은 대한민국 건국 이후 분화한 적이 없습니다.,대한민국 건국 이후 한라산이 분화한 적은 없습니다.,,,,,,,,, +3539,DEV,연예,강호동이 가장 최근에 프로듀싱한 앨범은 어떤 앨범인가요?,2025,occasionally,TRUE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EA%B0%95%ED%98%B8%EB%8F%99,강호동은 앨범을 프로듀싱한 적이 없습니다.,연예인 강호동은 앨범을 프로듀싱한 적이 없습니다.,,,,,,,,, +3540,DEV,경제,빌 게이츠가 테슬라를 인수한 날짜를 알려줘.,2025,occasionally,TRUE,one-hop,slow-changing,"https://ko.wikipedia.org/wiki/%ED%85%8C%EC%8A%AC%EB%9D%BC +https://ko.wikipedia.org/wiki/%EB%B9%8C_%EA%B2%8C%EC%9D%B4%EC%B8%A0",빌 게이츠는 테슬라를 인수한 적이 없습니다.,빌 게이츠가 테슬라를 인수한 일은 없습니다.,,,,,,,,, +3541,DEV,사회,현재까지 기아 K4의 한국 판매량은 얼마나 되나요?,2025,occasionally,TRUE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EA%B8%B0%EC%95%84_K4,기아 k4는 한국에서 판매되지 않았습니다.,기아 k4는 중국에서만 판매되었습니다. ,,,,,,,,, +3542,DEV,경제,최근 CJ그룹의 이미경 회장이 아시아 여성 기업인 최초로 받은 상이 뭐야?,2025,occasionally,TRUE,one-hop,slow-changing,"https://biz.chosun.com/industry/business-venture/2024/09/24/FPFC4SMXARDYDJKQGWORORBMTE/?utm_source=naver&utm_medium=original&utm_campaign=biz +https://ko.wikipedia.org/wiki/%EC%9D%B4%EB%AF%B8%EA%B2%BD_(1958%EB%85%84)",이미경은 CJ그룹의 부회장입니다.,이미경은 CJ그룹의 회장이 아닌 부회장으로 아시아 여성 기업인 최초 세계시민상을 수상하였습니다.,,,,,,,,, +3543,DEV,경제,현재 롯데그룹의 회장은 언제부터 삼성의 CFO로 취임했나요?,2025,occasionally,TRUE,multi-hop,slow-changing,https://ko.wikipedia.org/wiki/%EC%8B%A0%EB%8F%99%EB%B9%88 https://ko.wikipedia.org/wiki/%EB%A1%AF%EB%8D%B0%EA%B7%B8%EB%A3%B9,신동빈은 삼성의 CFO로 재임한 적이 없습니다.,신동빈은 삼성의 CFO였던 적이 없습니다.,,,,,,,,, +3544,DEV,정치,허경영 대통령은 대한민국의 몇 대 대통령이야?,2025,occasionally,TRUE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD%EC%9D%98_%EB%8C%80%ED%86%B5%EB%A0%B9_%EB%AA%A9%EB%A1%9D ,허경영은 대한민국의 대통령직을 역임한 적이 없습니다.,대한민국 역대 대통령 중에 허경영은 없습니다.,,,,,,,,, +3545,DEV,세계,세계에서 가장 높은 산인 그랜드캐년은 어떤 지리적 특성을 가지고 있지?,2025,n/a,TRUE,multi-hop,slow-changing,"https://ko.wikipedia.org/wiki/%EC%97%90%EB%B2%A0%EB%A0%88%EC%8A%A4%ED%8A%B8%EC%82%B0 +https://ko.wikipedia.org/wiki/%EA%B7%B8%EB%9E%9C%EB%93%9C_%EC%BA%90%EB%8B%88%EC%96%B8","그랜드 캐니언은 산이 아닌 계곡이며, 가장 높은 산은 에베레스트입니다.",그랜드 캐니언은 계곡입니다. 실제로 가장 높은 산은 에베레스트입니다.,,,,,,,,, +3546,DEV,날씨,엘리뇨 현상은 몇 년도부터 줄어들기 시작했는지 알려줘.,2025,hardly_ever,TRUE,one-hop,slow-changing,"https://ko.wikipedia.org/wiki/%EC%97%98%EB%8B%88%EB%87%A8 +https://www.e-science.co.kr/news/articleView.html?idxno=106834",기후 변화로 인해 엘니뇨의 빈도가 증가하고 있습니다.,엘니뇨 현상은 기후 변화로 인해 증가하고 있습니다.,,,,,,,,, +3547,DEV,정치,북한의 최고 지도자인 김정은이 사망한 연도를 알려줘.,2025,occasionally,TRUE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/%EA%B9%80%EC%A0%95%EC%9D%80,북한의 최고 지도자인 김정은은 아직 사망하지 않았습니다.,북한의 김정은은 아직 사망하지 않았습니다. ,,,,,,,,, +3548,DEV,스포츠,현정화가 올림픽 마라톤 종목에서 금메달을 딴 해는 몇 년도인가요?,2025,occasionally,TRUE,one-hop,slow-changing,https://w.wiki/BESU,현정화는 올림픽 마라톤 종목에서 금메달을 딴 적이 없습니다.,현정화는 마라톤 선수가 아닙니다.,,,,,,,,, +3549,DEV,정치,대한민국에서 대통령을 20년 이상 역임한 사람의 이름을 알려줘.,2025,hardly_ever,TRUE,one-hop,slow-changing,"https://ko.wikipedia.org/wiki/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD%EC%9D%98_%EB%8C%80%ED%86%B5%EB%A0%B9 +https://ko.wikipedia.org/wiki/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD_%EB%8C%80%ED%86%B5%EB%A0%B9_%EB%AA%A9%EB%A1%9D","대한민국에서 20년 이상 대통령을 역임한 사람은 없습니다. 현재 최장 집권한 대통령은 박정희로, 16년 동안 대통령으로 역임했습니다.","현재 대한민국은 5년 단임제로, 대통령을 20년 이상 역임할 수 없습니다.",,,,,,,,, +3550,DEV,세계,대한민국이 G7에 가입한 게 언제야?,2024,occasionally,TRUE,one-hop,slow-changing,https://ko.wikipedia.org/wiki/G7,한국은 G7의 회원국이 아닙니다.,한국은 G7에 가입한 적이 없습니다.,,,,,,,,, diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/evaluation/eval.ipynb b/usecase/solar-political-influence-analyzer/src/ai-engine/evaluation/eval.ipynb new file mode 100644 index 0000000..64e7aea --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/evaluation/eval.ipynb @@ -0,0 +1,1409 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from dotenv import load_dotenv\n", + "load_dotenv()\n", + "\n", + "%load_ext autoreload\n", + "%autoreload 2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Evaluation\n", + "\n", + "이번 프로젝트의 워크플로우는 크게 2 종류로 구성되어 있습니다. \n", + "\n", + "평가를 그에 따라 아래와 같이 진행하였습니다. \n", + "\n", + "1. lite 워크플로우 평가\n", + "2. router 노드 평가\n", + "3. deep 워크플로우 평가 \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1. Lite 워크플로우 평가\n", + "Lite 워크플로우는 최신성을 중점으로 평가하였습니다. \n", + "Ko-freshqa 데이터 셋을 사용해 평가하였으며, 아래 주소에서 확인할 수 있습니다. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "평가 주소 :\n", + "https://huggingface.co/spaces/upstage/ko-freshqa-leaderboard\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "🔹 relaxed evaluation\n", + "\n", + "- 답변이 가진 주요 정보의 정확성에만 초점을 맞춰 평가합니다. \n", + "- 환각이나 오래된 정보가 포함되어 있어도, 주요 정보에 영향을 미치지 않으면 정답으로 인정될 수 있습니다. \n", + "- 답변 형식이 잘못된 경우(예: 다른 언어로 답변)도 허용됩니다. \n", + "\n", + "🔹 strict evaluation\n", + "\n", + "- 주요 정보의 정확성뿐 아니라, 모든 사실이 정확하고 최신이어야 합니다. \n", + "- 사소한 환각이라도 포함되면 정답으로 인정되지 않습니다. \n", + "- \"제 지식은 2021년 9월까지입니다…\" 같은 오래된 정보 경고 문구는 그 내용이 변경되지 않았음이 명확한 경우에만 정답으로 인정됩니다. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.1 Lite 워크플로우 평가 결과\n", + "\n", + "Team3으로 제출하였으며, Accuracy 77.03 점을 달성하였습니다." + ] + }, + { + "attachments": { + "image.png": { + "image/png": "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AggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBAeAnExMSI0yjhNStmgwACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIICAREU5xxsREQ4EAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCAQZgIul1uM9N6OMJsW00EAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBwOBziNP4oCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAmEoQIbvMHxRmBICCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIKDJvY2AbwoCCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBAuAm4XG5xut3ucJsX80EAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBK57AYeR4tup/1AQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEwkvADPgWIcN3eL0szAYBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEBBxuVziFCHDN28GBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAg3AScTqc4HcR7h9vrwnwQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAFxu93idLvcUCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgiEoYDTYaT5piCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgiEl4DL5RJnTExM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CCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQBgKmAHfERERYTg1poQAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCFzfAjExMWT4vr7fApw9AggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCISrgNPpFKdGfVMQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEwkvA4XCIMzIyMrxmxWwQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEExO12i9PlckGBAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggEGYCZoZvAr7D7FVhOggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAgCFgBnxHRkSAgQACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIBBmAtHR0eJ0ud1hNi2mgwACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIKDJvZ0ulwsJBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgTAT0OTeRtC3U1wusnyH2WvDdHwIREdFydF92+X8yZ1y9d+DEn3xpJw7dUb27jki506elNw53VKsUGbJmSObuJxZJEfuPJIjVy5xZ8gtkqmIpMteRrLmLS0Rkel8jE4VAmlLwHXkkLgvXZaIkqVFHI60dXKcDQJhKrBnzx75559DxvdQTilcpIgcOLBfLl68KE6n0/jBFSnpM2b638z1Z5fD/MfY+N9j1NWrEmXcesVhPI9Ml07SpUsvly9dlAIF8ovekuXw4cPmOMY/UqhAASlWrPj/noepBdNCAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACB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AAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgS4X6N+/qMuPwQF6lkAgEBQrGAz2rLPmbBFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgT4g4NIS367GJp9mvgl994H3m0tEAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgR4kYFmWWCKEvXvQe8apIoAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEAfEQgEAibw7eojl8tlIoAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACPUfArvDtIu/dc94xzhQBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEE+oxAMBgUKxgI9pkL5kIRQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIGeJGC5LKsnnS/nigACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAII9AmBQCAglt/v7xMXy0UigAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAI9ScDlcgnlvXvSO8a5IoAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggECfEbAD3263u89cMBeKAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgj0FAG/30+F757yZnGeCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIINC3BCzLEsukvmkIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAAC6SXgcrnE8ng86XVWnA0CCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIICABINBsQKBABQIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACaSZgV/gm8J1m7wqngwACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIqIAd+Pa43WAggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIpJmAz+cTKxAMptlpcToIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACpri3FQgEkEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBIMwFT3Ntyu600Oy1OBwEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQMDlcpkK30EkEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBNJQwApqmW8aAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQHoJuPR0LLdlpddZcTYIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACYkp7WwEqfPNRQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEE0lJAy3ub3DcNAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIJ0EXC6XaODblU7nxLkggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIbBCwTOqbhgACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIJBeAn6/Xyxt6XVWnA0CCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIICAuN2WWH6/DwoEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBNBMIBIKi5b1daXZanA4CCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIICAy+USSx80BBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgTQUoMJ3Gr4pnBICCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIGCKe2vgm4YAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCQbgKBQFCsYDCYbufF+SCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAn1ewKUlvi3zHw0BBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAgvQTswLcIFb7T623hbBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAZFAICCWCBW++TAggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAALpJmBZllgu8t7p9r5wPggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAgASDQbGCgSAUCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAmkoYLm0zDcNAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIL0EAoGAWH6/P73OirNBAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQEJfLJZT35oOAAAIIIIAAAggggAACCCCAAAIIIIAA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3h2/aYzPjl2YO7gEhur4HFzvwtDorX0n+oLBUCREle+h8Y5yFggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCAwZATCmvN2wlySNmTeUE4EAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBIaOQMDv18A31b2HzjvKmSCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIDAkBGw4t6O3+8MmRPiRBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgaEi4PP5rMJ3ZKicD+eBAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggMKQEnomW+aQgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAALpJeDT7jh+x0mvXtEbBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAbHS3k6YCt98FBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgbQU0PLelvumIYAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCKSTgM/nEw18+9KpT/QFAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBA4KqAY6lvGgIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEB6CYRCIXG0pVev6A0CCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIICA+P2OOKFQEAoEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBNBMIhyOi5b19adYtuoMAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCDg8/nE0QcNAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIA0FqPCdhm8KXUIAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBKy4twa+aQgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAALpJhAOR8SJRCLp1i/6gwACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIDHsBn5b4duwfGgIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEB6CbiBbxEqfKfX20JvEEAAAQQQQAABBBBAAMjcxR4AAEAASURBVAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABkXA4LI4IFb75MCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAukm4DiOOD7y3un2vtAfBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEBAIpGIOJFwBAoEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBNBRwfFrmm4YAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCQXgLhcFicUCiUXr2iNwgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAALi8/mE8t58EBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgTQUcAPffr8/DbtGlxBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgeEtEAqFqPA9vD8CnD0CCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIpKuA4zjiWOqbhgACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIJBeAj6fT5xAIJBevaI3CCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAhKJRMQJh8NQIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCKSZgFvhm8B3mr0rdAcBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEFABN/Ad8PvBQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEgzgWAwKE44EkmzbtEdBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAASvu7YTDYSQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEE0kzAins7fr+TZt2iOwgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAI+n88qfEeQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEhDASeiZb5pCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAukl4NPuOH7HSa9e0RsEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABsdLeTpgK33wUEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBtBTQ8t6W+6YhgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIpJOAz+cTDXz70qlP9AUBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEDgqoBjqW8aAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQHoJhEIhcbSlV6/oDQIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggID4/Y44oVAQCgQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIE0EwiHI6LlvX1p1i26gwACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIODz+cTRBw0BBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAgDQWo8J2GbwpdQgABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEErLi3Br5pCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAukmEA5HxIlEIunWL/qDAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggMewGflvh27B8aAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQHoJuIFvESp8p9fbQm8QQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAGRcDgsjggVvvkwIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAAC6SbgOI44PvLe6fa+0B8EEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQEAikYg4kXAECgQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAA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ECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoM8L1GUpvnPpfwoBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI1JZAIeA7Qobv2jotZkOAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGIfD4fuQgZvl0MBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQqDWBXC4XDXVZvHebJN+1dm5mifm0teWjtbU18q357O6C1uw6ays9ZokDdBAECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAnxOoy4Jvi49crj5y9bmor6/P6rI8zAqBXhZI8bd1TU3N4r17GbYvD5cuqpaW5mhtaSkEe/dlC8dOgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI9B2BFPRd39AQDQ39CgHhfefIHen0FCjcXNDc0tqWz+en536M3QcEUjbv5qbmaG5uKh1tusAaCm9cDYU7Vz69e+XTu1pKnSwQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBGYigZQcNz1aW1sLj5YsSW56pLpi6devMfo1psBvWb+LJp6nTiBdV3WTJje1pcBchcDUCjQ3NUVT0+TS5v369YvGxsbCo1RpgQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAwCws0FeIpm7Lkuc2lo2xs7J8FfjeW1i0QmBoBAd9To2abgkA+3xpNkycX7k5JFSnIe8CAAYVs3ogIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAn1RIGX+njRpUpZMt6lw+PX19dHYv3/kcvV9kcMxT6NASuxd19zS2pbP56dxKJv3NYGWluaYnL0ZpZLeiAYOHBgps7dCgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAQhUzfEydOLCXW7Z8l1W1oEGvp2uiZQIrzFvDdMzO9M4Hm5qZCZu+E0T+742TQoEFcCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEqghMmDAhJk+eXGhJmb779Wus0ksVgc4FciltvEKguwLtg71TVm/B3t2V048AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDoiwIp1jLFXKbSlAV+p1hMhUB3Berq6iLX0NDQ3f769XGBlpbmUmbv9OYzIPtqAYUAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKBrgRRzWUyym4K+U0ymQqA7Am1tbZHL5/Pd6atPHxfI51tj8qRJBYV0l0n/7CsFFAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAge4JpNjLYqbvFJOZYjMVAlMSKGT4FvA9JSbtSSDdTZJKerOR2btA4X8ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgR4JpBjMYtLdYmxmjwbQuc8JFAK+G+rr+9yBO+CeCTQ3NUVra2vUZ9dK8esEejaC3gQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAkkgxWKmmMwUm5liNBUCXQm0tLRELt/W1lUfbX1coK0tH01Nn2b3Ln6NQB8ncfgECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgWkSKMZkphjNFKupEOhMICX3zuXzLpLOgNRHdudIc4GhsbEx+vXrh4QAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGAaBVJMZorNTKUYqzmNQ9p8FhVIyb1z9fW5WfTwHNa0CrRlF0hz86dfFTBgwIBpHc72BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECnwkUYzNTrGaK2VQIVBOoq6tLGb5dINVw1EW0tHya3TvdRVKfpYNXCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEekcgxWamGM1UijGbvTOyUWY1gZw7Ama1U9p7x9Pa0lIYrPiVAb03spEIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSKMZrFmE0iBDoK1GUVufpcrmO9dQLZVwPko7W1NVIa+OKbCRYCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHeE0gxmilWM8VspthNhUBHgbasIpdvS08KgXKB9MaRSkNDQ3mDNQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgV4TKMZqFmM3e21gA80yAll6bwHfs8zZ7MUDybd+epdI8U2kF4c2FAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwGcCxVjNYuwmGALtBVIG+Czgu659nWUCBYF8/tMM3/X19UQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSmk0AxVrMYuzmddmPYmVggl6K+FQIdBdraPs38XnwT6dhunQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYNoFirGaxdjNaR/RCLOSQGtra+SyMisdk2PpJYHim4YbAnoJ1DAECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgSoCxVjNYuxmlS6q+rBAfX0ucq2tLX2YwKF3JlB80yi+iXTWTz0BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMDUCxRjNYuxm1M/ki1nRYF8vi2y9N51s+KxOSYCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjM1ALphoBc9lAIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoAYFZPiuwZNiSgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEEjJvbOAb4UAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEak0gn2+LXFtbW63Ny3wIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA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w+LD1neyAOwZeaQp4Duif25gr+z0h7vtUwj6LA723vvvx0uvvFqR4brYnp5/8sPvl1afaRdkWqrMFm7JsnZ3VtLdGx3L8y++1LGqW+spYLV//8b44MOPYsyY1+Kdd9+Pt999NyZNnFTa/uWsvloZkwWFLrLwghVNX/3K6rHHrjvHiaecUdFWrEgZzv/v94eU2aW2zgJNX33tjTj9rPOLm5c9v/XOu2XraeWpp58r1L355tsVbaniV1lm8SFDBldt23iDdePkU8+Kp599vmp7LVSmAP0HH36sbCqPPfFk/PepZ0qB8f/69z3x1tvvlPUZPHhQbJQdX8eSgorTN0CkQP533n2v8Bg79oNCXbFvCvzuWF548eWOVZ/7emNjY2EOb7z5VqTz/3Z2PO+9N7aQqbw4uQ8++LC4WHru7LVY6tCLC88+/2LV0X65V2U28WLHX/5i90jZyTuWNNaUsnHvs+euFa+1NM46a68Z6ZpIGeLbl1fGvNp+1TIBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIzECBhpTVOEV+KwRqQWDOwSPj1Y+fi3xrdl3msuuySiBzb88z7SLfko/ZBlRmK56aff3rrnt6tFnK4LvmGquVtnn9jbdKy+0Xjjj6+ParU1xOwddTU57LgkVPP/uCqlm1pzTehHZB4R377vnTH8a99z8U9z/4SMemwvpJx/+hIoN5akhButXKCSefXq2607r3x46LyZOb4u0qweBpo2WyLNmdlfQeudIKy073gO90LXSnLLbIwhXd1v36VwsZt9Nxti8XXnJlHPabfQtVZ597cfumwvL3ttuqIpN7U1NTXHnNjXHKaecUAr4rNuqi4pNPxnfR+vk03XnXvfG3M8+Nf999X48m0NGyRxv3sHO1133KoD73XHN2OtICo+arGpz92utvdrpNsWGJxRctLlY8L5xl/X7iyWfK6j/pEABe1miFAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBKabQIrybqjPsvlWyw483fZqYAJdCMw7bIF44P181Le0Ra4+xXtn0djTsaRA3rYsy31rUz4WGrnYdNxT9aG33Gyj+P1hB5bddDFhwsTqnXtY29zc0sMtIv5z74Ox/U6793i77mxQX18fiy6yUKcB3w0NDVWHmTixdzzS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bdcvZQVvmZyPZUasGHt/67ex+DxLfe7H1tMJpNfqhx99HO++935MmDChEIw7fPjsPR2m2/1bW/PxyphXY3JTUyy04AKRAq5rrUyYMLHgMXbcBzFy7jlj3nlGRmcB3lOa+8RJk+Ltt9+NDz78KBYYNV9FwPGUtp9V29M198orr8bcc80Z88zTeWb36XH8ad+vvvp6pJsR0jlJNwhMS5k8uSlefPmV6J9lmU83H9TX10/LcIVtm5ub4403345xH3wYc805onAdNnQIPJ+WnaTX4ftjx8bYsR8Uhpljjtmza3OObO7TZjEtc7ItAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQK9KzBu3LjCgIOHDO3dgY020wvksrhZAd8z/WmcPgdQSwHf6QgnTB4f5911Wlz56PnxSduHkeuXywK/Pz32roJ7U4B0Wz4i35yPQTE0Nllum9h+zR/FsIGzTR84oxIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEeigg4LuHYH2se93kpuYp5UjuYyQONwnUWsB38aw8++ZTce0jl8bdL9wWb094I3IN2V0Ln2X8rvssm3chYX12VaeM3vmWtphr4DzxpYXXjo1X2jKWnn/54lCeCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQI1ISDguyZOQ01OIiVGluG7Jk/N5z+pWg34Lsq8/eGb8cjL98WTbzwWL733XHwwcWxMbBpfaB7QOChmHzBHLDzn4rH0fMvHCguuGvMNH1Xc1DMBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoKYEBHzX1OmoqcnkcrkU8N3cVsiIXFNTM5nPW6DWA74/bx/7J0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAj0loCA796SnDXHyUXUzZpH5qgIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAwEwukDN+5OvHeM/EpNHUCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBGZVgba2tsi15dtm1eNzXAQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEJipBXJ1WZpvhQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRqSyCfz0eutbW1tmZlNgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAQdXV1Ib23C4EAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQI1KFAI+K6vr6/BqZkSAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE+rZAa2urDN99+xJw9AQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI1KpALpeLXIr6VggQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgtgTq6uoi19DQUFuzMhsCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQiLa2tsjl83kUBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFBjAoUM3wK+a+ysmA4BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQygULAd0N9PQwCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQqDGBlpaWyOXb2mpsWqZDgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAim5dy6fz5MgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgRoTSMm9c/X1uRqblukQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQF1dXcrw3UaCAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBGpQINeWpflWCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKC2BOqy6eTqc7nampXZECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgECk1N65vAzfLgUCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjUpECW3jvFfSsECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUEsCdXV1kQV819XSnMyFAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBD4TyKWob4UAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEakugtbU1clmprVmZDQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhEfX0ucq2tLSgIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoMYE8vm2yNJ719XYtEyHAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBOrq6iKXPRQCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQqEEBGb5r8KSYEgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBFJy7yzgWyFAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBWhPI59si19bWVmvzMh8CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAj0eYG6LMV3Lv1PIUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHaEigEfEfI8F1bp8VsCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgEJHP5yMXIcO3i4EAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQK1JpDL5SJXJ9671s6L+RAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCDa2toi15ZvQ0GAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECNSiQq8vSfCsECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUFsC+Xw+cq2trbU1K7MhQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgairqwvpvV0IBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQqEGBQsB3fX19DU7NlAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINC3BVpbW2X47tuXgKMnQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKBWBXK5XORS1LdCgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABArUlUFdXF7mGhobampXZECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEC0tbVFLp/PoyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBGhMoZPgW8F1jZ8V0CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgkAkUAr4b6uthECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgECNCbS0tEQu39ZWY9MyHQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBIyb1z+XyeBAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjUmEBK7p2rr8/V2LRMhwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTq6upShu82EgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQgwK5tizNt0KAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECtSVQl00nV5/L1daszIYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEIqX2zuVl+HYpECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoCYFGqIQ952SfSsEak+gqbk5Jk6cHJMnN0dra2vtTdCMCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgZlSoL6+Pvr37xcDB/aPxn79ZspjMOlZX6Curi6ygG/B3rP+qZ45j/DDjz6JCRMmzZyTN2sCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgpgVSItoJE9JjUgwaNCBmGzakpudrcn1XoCFFfbe1tfVdAUdekwJjx31YyOqdy9XF0KGDo7GxMeqz5XS9KjNe4M233ivsdN555pzxO7dHAn1UwOuuj554h02AQK8LeD/tdVIDEiBAgAABAgQIECBAgAABAgQIECBAgAABAjOZgM9LZrIT1sem6/rsYye8Bg83xc82NTXHBx9+mqA2BYDPMXy2GpypKfVlgXRd5rLSlw0cew0KpMzekyc3R/8BjTE8e+McOKB/NNTnBHvX4LkyJQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMLMKpCS0/fs3xtxzDY+BA/sXYhdTDKNCoJYE6rMY2lxra0stzclc+rhAU3Nz4asRUmbvIYMHRb+GBoHeffyacPgECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGB6CqTA79mGDUlZlAsxjCmWUSFQKwL5fFtk6b3ramU+5kEgJk6cXFAYOnRwFuxdnwV7QyFAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQITF+BFPQ9+2xDCjspxjJO3z0anUD3BNK1mRNQ2z0svWaMwOTJn94V09jYKLP3jCG3FwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCATaGzsV3AoxjJCIVArAjJ818qZMI+CQGtra+G5Pie1t0uCAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQmHECKZNyKsVYxhm3Z3si0LlAuiyzgG+FQO0JFN80a29mZkSAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgxgjk822Ra2trmzF7sxcCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ6LZASqKck0m52146EiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYIYJFAK+I2T4nmHidkSAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFuCuTz+chF1HWzu24ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMKMEcrlc5OrEe88ob/shQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAtwXa2toi15Zv6/YGOhIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAjBPI1WVpvhUCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQqC2BfD4fudbW1tqaldkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQNTV1YX03i4EAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI1KBAIeC7vr6+BqdmSgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEOjbAq2trTJ89+1LwNETIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECA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AQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoEDKCkRFRUl4TGxsyu6FW6cABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQIFECyC5d3hMTEyiV+QKFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUokLICSO4dHhERnrJ74dYpQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClAg0QJhYWHI8B2b6BW5AgUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABCqS8QHisSvPNQgEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAqElEKaqEx4RHh5atWJtKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQQJDaOzyGGb75VqAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoEJICKr034r5ZKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQIJQEwsLCRAV8h4VSnVgXClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIU+E8gHFHfLBSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKBBaAtHR0RKuSmjVirWhAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABiYgIl/Do6ChSUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgQIgJxMTEikrvHRZi1WJ1KEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQICwsTMLVHwsFQk4gNjY25OrEClGAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQILUFmOE7tcW5v4AEolX6eRYKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABCmRmAST3VgHfLBQIPYGYmBhhlu/Qe11YIwpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQIHUE4hRSZTDGVSbeuDcU+IELkZFq6DvxK3DpSlAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUokFEEwlSK73D8x0KBUBW4GBXFTN+h+uKwXhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIpKqADvkWYQjlFlbnxZAsg03dUdAwDv5MtyQ1QgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKpCeBmJgYiRRBhm8GfaenFy4z1hVvVvWPJY0FLlyMSuMacPcUyHwC/Nxlvtecz5gCFEgZAR5PU8aVW6UABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUCD9CPB+Sfp5rTJjTfn+zIyvOp8zBSgQqEB4eLiEhyHem4UCFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAVCSiA2NlbCY2OY3TukXhVWhgIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKDAfwLhYSrNNwsFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQqElkBMTIyER0dHh1atWBsKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSQsLAwYXpvvhEoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABCoSggA74joiICMGqsUoUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABTK3QHR0NDN8Z+63AJ89BShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoEKoC4eHhEo6obxYKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhQILYGwsDAJj4yMDK1asTYUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABSggsbGxEh4TE0MKClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUCDEBneGbAd8h9qqwOhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFlIAO+I6MiCAGBShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKhJhAVFSUhMfExoZYtVgdClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUQHLv8JiYGEpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKBAiAkguXd4RER4iFWL1aEABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQIGwsDBk+I6lBAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAF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MZInT273FfxFAhFKYPeevdKoaVvZt/+ATzl8UgnCBw/oKdFqUDwt4xLguy/jXlueGQmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQgHcC7C/xzodr05YA78+05c+jOxMw92XRKwo6bxCmpUePHtUpX5aL/bJhQpxuk4WjUyX4Pq8E33D2TSOBSwQo+L7EgnMi5gNGwTfvBhJIPQJ87lKPNY9EAiSQsQnwfer5+sYnJMh33/8ka9d9Iv8qT8cHDx2WQ+oPVqRIYSlcsIBcfVVJqfnQA3JjhfIUwnpGyTURSuDMmbOyfsMX8umGL2W/8lgP8ffBg4clf/686i+fFCyQX26+8QapWf1+KVmyRISeBbMVagJ894WaKNMjARIgARIgARIgARIgARIgARIgARIgARJIDwTYX5IerlLmzSPvz8x77SP5zM19ScF3JF+lzJU3OK6ih+/Mdc19PlsKvn1GlSk2NB8wCr4zxeXmSUYIAT53EXIhmA0SIIF0T4Dv03R/CXkCJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACQRJgf0mQALl7WAnw/gwrXiYeIAFzX1LwHSBA7hZyAhB8R8PNN40ESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESCCyCMTHxyMqd3Rk5Yq5IQESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESkJgY5eE7Pj6OKEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABCKMQEJCoij33lERli1mhwRIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIICoqSqLVH40ESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESCACCdDDdwReFGaJBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABODcWwm+aSRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAApFGICEhUaITExMjLV/MDwmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAlkegJRysV3NP6jkQAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJRBYBLfgWoYfvyLoszA0JkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJiCQkJEi0CD1882YgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIggUgjEB0dLdFR1HtH2nVhfkiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEhAEhMTJToxIZEoSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAEIpBAdJRy800jARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARKILAIJCQkSHR8fH1m5Ym5IgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgAQkKipK6N6bNwIJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJRCABLfiOiYmJwKwxSyRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiSQuQnEx8fTw3fmvgV49iRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAApFKIDo6WqKh+qaRAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAlEFoGoqCiJjo2NjaxcMTckQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKSmJgosQkJCURBAhFHIGsWDkSIuIuiMsTrEolXhXnK6AT43GX0K8zzIwESSC0CfJ+mFmkehwRIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIIFIJsL8kUq8M8wUCvD95H5AACZCAZwLawzcF354BcQ0JkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJpBUBLfiOjYlJq+PzuCRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAh4IxMXFSXRCYqKH1VxMAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiSQVgTg3Ds6ISEhrY7P45IACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACXggAOfe0TEx0R5WczEJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEBaEYiKioKH78S0Oj6PSwIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIk4IVAdKJy800jARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARKILAJRKjvRMdHRkZUr5oYESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESEDg2js6gR6+eSuQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQEQSUO69ofumkQAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJRBKBqKgoUYLvqEjKE/NCAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRwkUA0VN80EiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCByCIQHx8v0coiK1fMDQmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQgMTEREt0fHwcUZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACUQYgYSERFHuvaMiLFvMDgmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQFRUlESrPxoJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEAEEqCH7wi8KMwSCZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACcC5txJ800iABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABCKNQEJCokQnJiZGWr6YHxIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARLI9ASilIvvaPxHIwESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAES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j96774DeUKggw/IlJpO6v3hdUpc/S8+YBPjcZczrzrMmARJwnwDfp+4zZY4kQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAJpiwDnS9LW9cpoteX9mdGueNo439S6Lw8fPqwBZc+RM22AYi3DSiBaJCqsBbIwEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCB5AlER0dLtPLyTSEBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEogwAhcvXpToi3EXI6xarA4JkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAIREcpN98UEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCByCIQFxcn0bGxsZFVK9aGBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEhAoqKihO69eSOQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQAQS0ArfmTJlisCqsUokQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkkLEJxMbG0sN3xr4FePYkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKRSiA6OlqiofVNIQESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESiCwCUVFREh0TExNZtWJtSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAE5OLFixIdFxdHFCRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAhFGQHv4psJ3hF0VVocESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAEFAGt8B2TKRNhkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJRBiBCxcuSHTcxYsRVi1WhwRIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIAM69o+Pi4kiCBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEggwgjAuXd0pkzREVYtVocESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESCAqKgoevi+SBAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQAQSiL6o3HxTSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAEIotAlKpOdKbo6MiqFWtDAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAjYiwlQAAEAASURBVCRAAiRAAiRAAiRAAiQgcO0dHUcP37wVSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESCAiCcSI1vuGs28KCUQOgXPnL0ROZVgTiwCvi4WCKyQQNgJ87sKGmgWRAAmkcwJ8n6bzC8zTIwESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESSJYA50uSRcQEqUiA92cqwmfRJEACEU8gKipKokWo7B3xV4oVJAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESyJAEoqH1TSEBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEogsArGxsRKtJLJqxdqQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAlIpkzREh0be4EoSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAEIoxAXNxFUe69oyKsWqwOCZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZBAVFSURKs/CgmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQAQSoIfvCLworBIJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJwLm3UvimkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJRBqBuLiLEn3x4sVIqxfrQwIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIZnkCUcvEdjX8UEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCByCKgFb5F6OE7si4La0MCJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACInFxcRItQg/fvBlIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIINIIREdHS3QU9b0j7bqwPiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiQgFy9elOiLcReJggRIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIIAIJREcpN98UEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCByCIQFxcn0bGxsZFVK9aGBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEhAoqKihO69eSOQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQAQS0ArfmTJlisCqsUokQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkkLEJxMbG0sN3xr4FePYkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKRSiA6OlqiofVNIQESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESiCwCUVFREh0TExNZtWJtSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAE5OLFixIdFxdHFCSQIQksXbpebrjzbdl55IKcHNpf/poyXrbvPCyNWi6Tr1cflnNL35Nj99eRQ6t+yJB8eNIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKpS0B7+KbCd+peBJaeegSKFL1MssgJ+Wt7nGS+qabkXP2DfLH4W7k8fxG5/oY8cuGvDbInc1bJVrBw6lWSJZMACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACWRYAlD4jonJlEli6eU7w94EGfnEy5TKJzdWKyTfrTkktzSuKtknvSorFm2VQvWukbxnj8jhDesltkYticqbLyNj4rlnYAI//PQ/GTN+qk8C/Z/uJdWqVvGZJpidBw4clN179kn2HNmlTKkSOos5896V9xctkyKFC8nEsa8Ek63PY9p17ilHjx2Xzh1ayf2N6vtMy50kQAIkQAIkQAIkYAh06NJLDh85Ki2a3S+tH25mNvu1jI2NlSPq2IOHDus8smTOLPny5ZX8+fJItmzZ/MqDiUiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABNI3gQsXLkhM3MWL6fsseXYk4IVAjpy5pOq1BeTDr/+S0w9WkTM31JE/388pT1W/Ui7s2y9x+w9IoebV5bLs2b3kwM0kkL4J7Nq9V9at3+jzJE+cOOVzf7A7J0yZKQsWLpLbbq0l0ya+prM5cOCQbPpri5w9ezbYbH0et+qXtXr/MaX0TQkNASi1nT9/3mvmWbJkkejoaK/7uYMESIAESCD0BBAB6q/NWyUmc4xldOWtVLzT8W53FGVdnC1rVsdd6W3j5i1b4xW2Dx/x69SOHj0mX3z1rSxZ9pn8tGq112OyX3653HHbzfLwg02kRvWqAottCgmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQMYjAOfeMZjQ58Rxxrv4PON4AtdWvkJmLdgrB/69ID8UvFOisu+XJnddLec+flf2XZFHCpStQFQkkGEJ3F77JpkzY4LP869YoazP/eHa+e13P8lX33znd3HtWreQkiWK+Z0+PSa8qAy+DsGbqFI6g9f0cCjlffjRchn4wnCvOJd9OE9KX/Lo7jURd2QIArg//1OGV6dOndb3Z2bl8ZZCAiQQegJ49u5v1la2bP1HFzZ4QD9p9dADXgt+7vnh8tGyTx33Q1l59Y+fO+5LCxuHjhirPW7XurG6NG96r2tVXr32d+navZ+cPJVgNAdWhQpeJXnyKMPTC7Fy6PBh+Wf7Tp1m2SdfCP4Q8WTqxFel8NWFXKsLMyIBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEkhKAPMle/buk6zKYRmiclJIwBA4pJz/nDhxUooWuTrV9C3hxBBz6VfkziV58+ZJtXoYJlySAAmEjwCceyul72iJi6OX7/BhZ0mRRKBShaKSI/smefe9P2TVH/ukTu2ikvPsMTny3fdy5W11JHvR4pFU3TRfl8VLP5EJk2cEfR5jRg6RayuVD/r4tHbgM88NkTW//m5Ve8KY4VKubBnrt5srDzzcSc655Dm79q03yTP9elrVe7DVI7L/wEHrt6+VzMqb6KJ3Z/tK4rjvx5/+J2+/+6HjPqeNDRvUy5AK3+iYrvz+Z5k2Y478sua3RGhwb11XuZLUvLGaNFJ8QiGZ6L07EdZ2nXvK3n3/JtpmfmRSVnlQfi9dsoQ0a9pIihcranal6+Vvv6+XcROnyw/qmbZLieJFpVP7VorFvcL7yE6G6+EkkBHaMf/+t99S9gbb739c5VPhG33J9Cqfr/hG9v37n+TMkd01he8/1v8prTt008ig5N27ZxeBgZ3TOx6e05F+6fLP5a35C/V1ad2hu3z03hzJlStnesXO8yIBEiABEiABEiABEiABEiABEiABEiABEiABEiABEkgDBDCX9/yQkQHXdPnityUmJsbxuI1//iXPDhqqHELFO0zBfOm0Ca9KsWJFHNOHYuOXX38ni5Ysl+9/WGU5bilY4Cq5qWZ1advqQalYoVySYqF826xlpyTbk9vw6vAX5LoqlZJLxv0uEzh+4oS0f6SXHD8eH/kd99knHy3wWQoivb751juy6pc1snPXHp0W8zy11H1xX8O7pcHddX0e78ZOKHjPnf+ezFvwvnVvmnxRfrcu7UOmT2TK4ZIESCD1CcCxt/LwTWXv1L8UrEFqEch2WTZp0TiHvPPhVtm89bQMGHyvXPhvrxxRXm+zdqkv9Cjq7pU5cfyk1fgJJuez584Fc1iaPAZKRlAss0soz3/Dxk32olK0fk2ZUomOh+XrQfVM+StnUqB4nld5xuzdo4tjUbv37JWpM95y3JcRNkJxrFe/52TFVysdT3fTX1sEf+++v1h+XrVGBg/o67Wz7ZiBHxuhaF+5csVEKT/5dIVMmDIz0baM8mPHzt1amdDb+cK7K67XtJlvyaD+faX1w828JU0X22EQ5O1eAIvBL42QRcpL/MxpY8PikT5dQOVJuEogI7Rj8ufPJxi4hKIzpGqVa30y7P9Ub+ncsU2iNCNfe10QeYOSlMDyz1bojRgEXPrBXClUqEDSRJe2YIARA734q3lDNen5RH99XX78+Repf1cdr8dxBwmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmEmsDp02eC0v2AgzIngSO8Lt0SR8dEusNHjoZN4RsO5l4c+mqS6mHOBJGs8Tf7jdf1mL09UWxcXFAsQqn/Ya8f1xMTGD/xDQlEPwYOyzo92ieJkjUiuWIuH39PK50YOC8Llaz9dZ080q1vkjqY8j757EvB38hhg+X+RvXNZi5JgATSKYEYfEyh+U0hgYxKoHWr2rJ23T7Jlquw1Cpxufw3/2s517yVFClZOqMiCdl5V6lSUZ7s090x/1fHTtLboWTUpmVzxzQlwmi56ViBMG08cfKkvPDyqDCVFl8MlI7OOSjUn78QK8eOHZNjx0+osDQntALwFblzy5VX5vaqcHnllVcmqvvcWZPkwoUL1jasN32oo/7drWsHaVj/TmsfVhB2JlhBOKUWzRs7Hv731n8ytML3pKmzLGVvKJp17dxWqle7TrJffpls/HOz9ia//NMvdScBSt+7du+RSeNekWzZsjnyDGZj1qxZpEypEokOLVmSkRRgqNCxXctEXPYpz9/LVafMGEsMGT5aK15WqpjUajzRgWn0x0fLPk2k7N2r+yNyQ/Wq+p3zpzJEeHXMJH1vYrBnsrqXn+j1WBo9U1Y7LRPICO0YeND/8N03Zd0fG6XAVfmk7DW+28PwNO3pbfrqQgXT8mUOad3X/vqHzh/vN1/K3p6VqHPHrdamrdu2W+tcIQESIAESIAESIAESIAESIAESIAESIAESIAESIAESIIHUJtCnZ1e5XM05Owl00oaPGm/tinaICL3y+5+kS/d+VppaN1aXn1attn6HY+WDRcssZW/MpT/SsbVUUY7Mzp49p706w7szpP0jj8s7c6eryNmJnZyZOjZX0Yp9za1MfWOONf97mXJQSQkvAURWRVRVfwUO8x5q29VK3kY5aKupvHrjHkFeuJ5Q/B45eqJkyZLFq66TlUEQK3AiZ1f2rqF0PO647RaB3sD6DZvk8y+/ESilQ54e8JJUKHeNeDppDKJYHkICJBChBKDlHYNJ/TgvFlQRWm9WiwRcJQDvec0aXSU7j10h//3zp+w9c0Sq1HP2EOxqwRkws8qVKgj+nGTytDd1Q6jsNaV049kpTUbZBi+3RsnzmX6PywjlKTPUUqZ0SauIc+fOy3sfLpGvv/3ep4dONGIRGqZhgzsFnS48S05SskSxRJvPnz9v/cY+NjYtHCFbgXfvBQsXWfkvnP+GlLIpWlcoX1YeaNJIejzaSXWm+8oWpRx/5RW5JTra+ZpaGXHFFQJ4DjBo4Cn9n+kjHy35RPoPHqp3jZs4TaZNfM0zWZr/jXfCiFcT3nNvzZggN9S43jqv66tWljq33yJ33N1Ub4On/kc6tZGcOXJYabhCAuEgkFHaMXj/33ZrrXAgTRNlxMbGuVbPytdW0AZWX6/8Qbb8vU3s7S9fheBbYCScoStNmVySAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQgDcCLVs0ldxenLqtXvu7dRiUZT11CuCVuM9Tg6w0mAuFR+1wKnxDKX3y9Dd1HaADMX/2ZClXtoxVp7rKKUv166+Tx/sO0Nvmvf2eUvgebO23r9xZ5zY9r2nfZtbh+G/chOn6Z4niReXaiuXNLi7DQAA6E4OHjNQlwUldrZo1ZK66lr4EXt+NeHrPvrnWDVKv7m3StlMPrd8DnSc8C573uDk+2OWRo0etQ1s99ICK1J5gHHGTOgfoGbzy6ngxRglfKT0f6uBYyLhCAumOAOJkRFPZO91dV55QAATOnDkjf69bI0d+/Vz2L31O3hrcW9ZvWyN/fLtc9u38J4CcmDQSCKCBduzY8aCrAkXnIyokkLcwQsllfObsWeUlO0GZ2aQ/dep0Ig/XZrvTEqFjTEOsb+/HpGSJok7JQrYNIZFad+gmLw17zVL2RqcGHZpqVavIdVUqWR6aYan4/qKl0vmxJ+TJZ18Q8PdHzp9P8PZtV/7251imCY4ArD6NEUHTxg0TKXvbc4S30fmzp8iQ55+VUcOfV1aome27Hddxz6NzmpqS0mc3Nevuq2wY5eF6Ga/oq9ckDIj4Os6NfSdPntIW627klVwe8OBt7k+EmLIre5tjEf2hQ9uHzE/ZupUebi0YXEkXBBDu79DhI35/S9PFSUfwSaB9ggFlyD/bd7hW06b3N7TyuveBNjJ63BTBYLdT+xFt2i++/FYPdBvDHwwA31H7ZisPrpAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZBAJBOwe1N+WCmr2mXhB0sSKXsjcnhqOKRZ8+s62blrj65arx6PJFL2NvW9687bBfOYEEQuPnr0mNnl9/KjpZ9qJ4g4oFP7VhIVBT+tlHARWPDuIoE+DgT6EIhO7kug52Oc6sE5mbn+9mPgZM9EpsZ89/c//s++25X1KtdWlGWL5knPbp3lOeUwzklatUh4toy3b6d03EYCJJA+CMSIQO+bH5H0cTl5FoEQ2PTrL7Lp66Wy/quP5OKxf+XciXNyTjnwizp0uRzZsEqK1bhNyt1+r1xZsbbkzX9VIFkzbRgJoJE1dcYc+d8vv2qPiSgaioHXX3ettFIWojdUr+qzNjt27JL5734gS5Z9Zikc4oCKFcpp5cJG99wlULr0lP/2H9BKztje/dGOsvD9j2TZJ1/o0C3weo2G1sZNm1UIl9mW4nTjexvI0Bf7S0yMevU6CBSmB744Qu+BQk/Htg+rBuEqh5Sh2/SxOod16zfqAmAJ2Prh5lKoYNL7H4ppW7ZslTHjpwq8VC5XlrdtWj2oLFurJFu5vfv+tdLs33/QWudK6AjAuMVIVhVKyJfkypVTHnzgPl9J5ODBQ8rKebZ65tZZnaKiRa5WBgHXSmvVUYdH5lBLsM8u6jVx6iz52UsYsBlTxkjmzJnlh5/+J199873sVMryp06f1qczbeKrki1b+ENrlSxRXHtdh5HFseMnJFfOeM/WX379nTIQWeCI+tknH9fvsW3/7JBFH30sW7ftkKPH4gce+vXupo03PA80Bidrf0sY1Ig39qgsj3VpLwWuyu95iCu/4TV59Q+fC86n5o3VvOZZqmQJa9/2nbscz8FKwBUSSAME8Dy/98FHgjCBiKxgBG2A+9SgYYc2D0n27JebzYmWI16boMK0/SmFry4ow4cMTLTP/uPChQvy2ONPK4Xic8qjxK3Ssd3D9t0ya84C9a77LtE2+4/J40d6rYM9XbDr76r209KPP1MRJaJl/GtDBd8gbwKP2DBIg3Rq31KHq/OWNqXbd+3ea2WBcHhuSflyZQQD1r37PafbndNmviX4g8DALk+eKwSGcUbZ3F4uBrmff+7JkF4Pe3lcJwESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAFvBDCfmpxgrB0evCG33lzTcnJljjO6EBgfnztroiAqdWrIEqXAbaRRg3pmNcmyyf33aGVv7Pj0i6+lRbP7k6TxtgH6FbPmvK1343zvVXoolPARwLzLkFdG6wJbNGus9Rm++OpbnxWAp2wjzZrca1aTLO+ud4cMfGG43g5jgFAYLUAHqudjnZKUbTbktM2v+fNsmuO4JAESSHsEYCyktA6p7J32Lh1rnBIC8N68eMpo2b58tpw/fkgp80bJGdg9XJZFcsREy8XoTJIte1a5sPM32bFos8Ru/VoO1Ggv5SrXSEmxPDYEBP7ctEVZfA5Unhd3JsodjTUoIOMPjZ5uXTs4hk2BMme3Xk8nOtb8gOLj0wNeElhZTlVKnp5K32fPnpNVv6zVyf9WSlrGO63xep0vXx6ZO/89y0ITCRcv/USqVK6olKibmWISLWEdaCwKh744QCudJkoQhh92lu1at5Cr8udzLBU8oAh6T4M7tcI3Eh06fNgxrefG3Xv2WZugOJ+cxKnODyRYz+vJ5Z8R9hdQHQAjMG4Y8HQfv7x3m2PsS4TP6vfM89Y9b/bB6hl/UNyDQnGnDq2SPDcmbUqXKXl2UfbqNb9Zz69nXeLiLsqLQ18Ve3gmk+aCn17sTXq3lhdiE7ziZ7YZjGzZus3reUCRFEYouFaectQjEgKerXkL3peXXxnjmVQ2Ke/b+MO7cMyoISHpoKJQKLXe1+juJOXbN5y+pHiPbXnzXGnfxXUSSHMEYIzRtUc/y2OE/QTwLX590hsyXz2XixfOlnz58tp36/UcObJbz3+3Lh2kWLEiSdJgw8//WyPf/fCz3gclaU/5fd16Kx/Pffjtb/QOp2P92VasaGGr/CXq++GtjYS84OnDtL1Gj3jRn+yDTmNvD6Ftd+DAQcfrEEwBNapdJyuWvyftu/QSu5cFlIM/J3m6bw/t7cNpH7eRAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQLgJ3HrzjbLyi490sTkvOavyrMM7Sv/BSJuWzc2qtXxlyHNy2WXZpGuntlKyRDFre7hX4HAGAgdnTnMypj6Vr61gVgXzPEZyK2Vbw8KbY5uV3/1kzQm1fKipXH75ZeZwLsNAYNjIcboUKNv36/2YXyXa54qg5+NN4KwNDiWh67NZOU1MDfll9a9WsRVTyXDCqgBXSIAEQk4gBlrfVKILOWcWEEEElrw5SbYumiQXzp2RM7EX5eTJC3LxQpzkyh4j2ZTCd1TceTl9KpOcUh/6C2cuSPatGyRPzCzZlSuvFCleMoLOJGNXBcqMrTt0sxRjunRsI/Xq3qY9Q0IB+9Wxk7Qi+IQpM5W3xCullUd4ICimGmVvNOqwv3q1KqpDcZms/P4npbT6ufauCCWp2cqDLkLq+JLRI1/Syq3DR43Xx019Y45WiIbiKxTQR7z6uq4rFFWdlJmg+DxkeLxFYfOm9/rlKdtXfYLdB2tDE1bpnvtbSlNlpVpeNQih+J0tW1aB8vXp02dk9569WmkWSvVGql3nn1fnnbt2m0NklVJE8yXfqo5Pxetr+0rCfX4QyHPlFQKPseiUQJlszOtTpXfPLpIta1Y/jk5IsmfvPumgFNSMIGwQvOjD6zU6LxMmz9D3+2vjJmuF3AeaNDJJXVu68ezieb+zTsJ99Y3yUo97DQLlSKPsjXdDmTIl1bOtDIHU/Z8lcxbXzsPfjPDMbfxzs04OJWcMehi5qWYNGdS/r/mpBxbmvv2e/g0v7INfGmntQyfTXO+CBRJ76v70868sZW+UgVBl5cteoz0Cw4s77hfcN1BOXb747VQbcFn72x/W+RQvVtRa5woJpDUC8Lr9+BP9rYE9eAWodWN1gfLz/9SAzMefrtCDQjAmG/D8MJk2Md6rtf08G9a/UyuFYxu8SHTp1Ma+21pfrvKC4H12c60bre1mpWnjRlLDIxoKIhys+GqlSRLS5Y01rtcDqHi3o/2B97NTCEO0Pd5TCt8QeNfwNeDqRoWNxxGT1xLVLvT0jm722Zdod8JruhFEfHH6FuK7mS9vHp3sjto3y2tKgR3vbXj4gGBA+Pz583LH3U317yKFr9ZL/iMBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCBSCCAyJ358yd1WGPqdvLkKZn/zgf6JxSpays9BE/BWPnwl57z3Bz23//+t1+XWahgAZ9l58wRH4UZiTCmbyQ5Fkg3Z967Jrk81LyJtc6V0BP4+tsf5DM1lwZ5fuCTkjt3Lr2e3D84AzICfQtfUuCqfHpub5ea7wq3wLnQswNf1sViPjAQz/PhrivLIwESSDkBOGyLwYcn1J7bUl5V5kAC7hD48/e1snnhRDl/Nl7Z+8zZC3JFthipWqWQFC6eR7JcllmOHzsl+/cdU0qtIlmzZpHdh05J9OZNcipukhRuO0Ki1DNDSX0C02e8ZSl7z5o2TqD4aATWn7Aofajto9oz7WtjJwsUo664IrdJIrCyg3IzlDxnTh0r11WpZO2reUM1reB9V8MHdRnLP/3Sp8J3S6WchPwhe/f9J6+8Ol6vd+3c1vKGC2s+ePDetdu5gTfcZlH4ZJ/u+vjU+Ff7llryyssDZdToidqD81zlXTQ5KVOqhIwcNljyXlJcSi79suVfWEm2KOX8HTt2efVMaiX0cyVWKdEd8/BebA71tt3sT+/Lfn26KQXDAfo0ES7q3fcWa6VneBotXbqkMlAoLTmyZ/eJ4XWl0G0EXmfh5d3IdcqqFUp4D7e79Nwppe+GygM8OupuihvPLoxD7HLk6DFL4bv/oJd1SDEo6aWmJTnqd+jwEZk99x2tRI/fUAi1S+VKFQR/RuD51ih8Q9k7T54rZMLY4fo4JwVKHAeFQijoQ2AUsHD+G2IfrLhBKWMiDNU9jeM9A48eN0VeHzNMpw/nv782/22FfKtWtYoUKVwonMWzLBJwlQDaknXvqC34Bg56tq+0btnMyh/tEXji7vRoH0FEBbRTjp84kei5RGK8n/D8r1u/URYvWe6o8I1oJGjDQGDAlSVLZr1u/+cUVu7cuXNhU/hGX7R9m4e00QmMktb+tk7wjHvKp198ZbX7HnowtAOhe/f+q6Oy2OsAg6aWLZr49U2ze+k+cvSoPRuv64hygD+74BtAIQESIAESIAESIAESIAESIAESIAESIAESIAESIAESIIG0SABRPc14OeYBPCOqR9I5wSkNJL8t4ur3P67SEZAxZwK9jwqXvCYXVJG14fDPn0jm5hwxzwlnOxA4JYMCPCU8BOBQ6IWXR+nCMNd+X8O7/S7YXGMoUcdcisK9ddt2bcgAB4mN720gDe6uq/PLny+fXuKehw5mpkyZ/C4nkIQwTjDGA5hH2rJlm54rRB64NyeOfSWRXlQgeTMtCZBA2iCQKVO0xMTGXlC1jUobNWYtSSAFBPBR/XziEIk7fVTOKo/e587Hao/ezZpcKwWK51eh2o/pbUXLFJFi18TJ3+t3ydGDFyRb5hjZtu+IlMq0XtZ+/p5Uq98iBbXgoW4QgOLT9FlzdVbwBGlX9jb5Q8n02Scfl45de8crbStP1C1bxHtJRBpY7U15fZRS0P5XCl+dVHEQFnponL2/aKluIPlqlEFB3EjhwgXNqkCR1ojxzLh/f4IVoNkHZS7jKXvwc/2CboDBE/BFk6nDEm96KFYlJ03uu0fua1RfEPZl019bBF6dV6/53Woo3lX3dilevIjmdr3y6l2+XILSb3J5I781v/6eKNk77y+Wp57okWib+QGGk8aN0D8nTp2llV/NPqcllOdurN3AaVeG34brNmLoIHnmuSGaBTobHy37VP8ZOPAy2vCeenLvPXcluVfQoflw8cc6KTzq25W9zfHwPg2P0206dtcGAx9/ssLRs6lJH8zSzWfXqfwiqoM9dcKokHXCnMqEB+/+g4cm2gWFw/+zdx/gURRtAMffXEIVkN57FwEpUgQLdkWqgIWiIL1JE1QURRQFLBRpgqIiKCiCiogdG+pnL6j03nuvKd+8A7tsLndpJOFC/vM8yc3tzu7O/q5kL/fOOxrs6S39+3b33k2w/saMSfaDXXwNNYuv80+MoUP6xwkq1W01sLR/n24ybuI0+ezLr2XDxk2Slhm2Nctx7/4PuafRu0cnt04FgfQooP/UHGimi2vTqlnAf+rp3+qWzRu77wFr126INTDNOecWJohbA771b5/+6AAsb/nhfz+7/0y9zbyvh2rRf649NWqs7d47734QMOB79lunB6DpwBSdWSI1y6w5p2dK0GNMHPuM9DHZ2PVv5lwzUEr/KR1f0evSjp42OthQB7Z9a2aM8S9/nJm1YL15T50dYIDdPk/A95JvlsouTyYJZ19tbm8WMJDfWc8tAggggAACCCCAAAIIIIAAAggggAACCCCAAAJpLaBxC6+8Nts9bDMTGBuq5ehRkwnyTHGCevXu/QMfcb9jOX7ihEyZcHpmZZ0VWosGfSe2OJnOtX2Htm0SuxntUkBgyrTX3Mfq8UceCDjLbLDD7Ny5265yHnO9M9ns70MzmEHLkq+Xyj/XX2PjCjKbuDKn6Pc7qTVTrQaav/Lam86h3FtNEjXhhaelSOGC7jIqCCBwYQpER8eIecch2PvCfHg5K3+B//78XaK2rZbjZqb0GPO0j46KlssuKSDFyxaULRt2yo/frJGDRyKles2ickmd8lKwWC7ZvW2bCaA1I6/Mi2XVui1SMNNiOdKwsVzkmarF/zjcT32BDRs2uwdpdHVDt+5fqXlZVXfRGhMI5V80oCpQsLfTrljRs8HbmgU32Ci8zJnOZszMni2bs7k7yk8XZM9+drnbwFSOHz8uj404HdBc12TSbWYCrZNbWrftYqeJCba9BrzrRWxiigajaSC7E8y+6OPPZdCDj9tNR44YajOkJ2Y//m3eenuBu+jBQX1k9PMT7QVp08Y3BwwcV7dcuXLabbJkzuxuSyV5AjrKtO7lteTLr76VTz5bIpoR2lu++vZ70R9dp5nevZme163f6DbVrM/BSg1PtvxVa9YFa3ZOy1PqtRuoExrYHOy1Hqh9SizTQEInmD7Q/vLlzSMjnxgaMDA0UHtd1umeuxIM9tZ2a8woZKfUqlnNqca59T7ma9dtTLOAbx113aPPYDcovf1draThFXXj9I8FCKRHgfgyOBT1TBuo7xGBys03NJInn3nBrtL37fLdYw+G0EE3WnREv3cmE7swhH7pQJ7WLZvIvAUfyoIPFsuDg/rGGvy2fMVqd9BZh7vbJOmfcUk9zb+W/ev+o0zfb3RGiFvNAEAdmPfMsxPMrEBV47XUAYMlSxaPddj//fKb+zjFWnHmjmY2dx7HQOt1mf6NCPR3olmTmwn4DobGcgQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIHzIvDd9z+d/W7v7tbJji1Ii85HRUcFPIz3uxmdUTW5RbMw60zwWjRxjxN/kdz9sV3iBTSz+rQZb9gN+vbqIkmd3TvKDFzwL5rx3Vt0cIN/bEF0TIy3SYrWdcb2BvXr2H0eOnRYNOO4Plc1QVSTlu1k1MhHRRMBUhBA4MIVCAsLkwjzI6n4XnPh6nFm6UogxvyR/eebTyT6xGETJCISHuYzAbiZ5Oixk7L0y3/l4N4jcuxolGQy02pEmeDu8IgwiTx8TE4dPymnTHR4pNn+8PFIidmyTbauXSUVqgcPdkxXMOm0s5pd1ilvmoyIixZ/5twNers6SOBpjHkD/Ovvf0WzK2r27f0HDpgpVk5fuPlnog66c88KfWMNVIItnzL9dXdE4fBHB6dqEFOgfv1ssniPN1l7Eyq79+x1m3Tser9kN5mcEyrTJ78gmvHZKT/87xf3w4wG1WoA+sQpM+wF6LAnRsmcWdOSPZXTEBM8/sDAwFnCneN7b0N5yihvP1OjrqM625kgNv3RDylbzPvav/+tkO9M9lENttOiWZ/1sXl48P1uFzZu2uLWixcr4tb9KzryWYMYNWv0+g1ng8T9253r/ZR+7Tr9qVi+rFNN01v/D17hEeFSsngx+8HzehNwmCtnjiT1J1AG9kA7cAL5dSoq/YAYrBQtcnYAzAaTrTYtig6I6ffAI26gp06z9aCZuYGCwIUkoK/Bf5evNDPN7JE9e/bJqUidfUnsDCQJnadmB9CZGXSgznsffCS9PQHfOlhCZ3HQ0vr2pnFmbUho32m9/s42Ldy/QR+a67r25h/ATpk3/wOnKk0ap16mcv2na8++Q9xjdTazWWjp37ebOxPLfd37y8L5b4j3PdHdIEhF/67cZc4vNUqmM1MIpsa+2ScCCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAskRmDn7bXcznRkzlIs3AZo3wFeTo82bv1B0ZvlunTu4p6Azw2vJny+vuyy+yrtnvn/XNvd2uCvN40Hi69uFvE4DsYc/9Zw9RY1d6NKxXZJPt1DB/DaO4vjxE+62HTvcKTpTdyaTFLJ505vtra6MPPO80HoeM/trapWKFcrJjJfGxdq9zho+/KlnTWzGJuk7YKi89fpUqVkjeKK3WBtzBwEE0qXAmQzfqTe6JF2q0OkLTiDy1Ek5umWVnDC3ESZzsc8k7dZRVjsPnJRN23dI+dK55NpbK0iUL5Nky5VDtqzaJst/2SQnon0SZQKCj52MksjIaDl44JAc3qEBjAR8n88niQaSOkWDnBJT9u0/EKfZ9z/+LE+PHierA2T/jtM4FRZoEPpLL8+0e+7T4z4pW6bUOR3lRhMUWqlC8GDVWjWqx9m/Brj/8tufcZbHt0CDgxNTIqNOB61p2z1798kDDw23m+kFdUeTfThrliwy4vEHbeZwHXH4jHksHh7SL84ISLtRAr80oD48SLB9Aptm6NUa+F6yRDH7c4vJYKpTSDVvc681eX3WXOnVraNo5lUt2817pVOyZIk/27qTjX2TJ0jc2TYlblPztZvjPMzgcHmty+TFsU+nBI27j5yJDBDfunW73Sah9t6pqrbvOPtccA+YwpX95j27e9/B8udf/9g9a1DruOeedD80p/Dh2B0CaS6w0QycGGGyc+tgm3MpTU2GZ70W0muj/0zg+CWVK9rdffPdD+5uG998vVsP1YpONVflkkr2H2ez3ppnByXp33YNXNes31patWji/k1K6fPQ4wwc8pi9XtF96z9ynWnvSpUsIa9MHSudewywg9Q06Hvi2GekfLkyieqGbq+D+hIqR44clQMHD9oZYjRTuHfqyIS2ZT0CCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAqEgoDEQzncfVzaod84xEGlxTjpT6vYdO2WviWlwSoumt4r++BcnVqVQwQL+q+Lc11nkX3tjjl2uybea3Jp6SW3iHDyDL5hvZk51EjyOeOxBSSi+IRBXAZN4SYtm0NZAf40x05ibd958OU5zTeqkRR9nDQZPy6JJ0yaPHy2NW7S1hx31/Isy942Ekz6mZR85FgIIpJyAhsaZgG8KAhe+QJiYZ/vJYyZ7sNZMYKi5zZwpXLJelFlyZI+RHLmySJbsmeVkjIkElxiJPnlKIs0mBw6fsG1PmmDvU1Em83dklPgk7rQdF75gaJ1hPs9oSc1AXMJkwU2oXHRR9lhNVqxcLRqw45Rrr2kol1W7VHKb0XaZMp1+a3x/4cfy0y+/O01S/FZH2WnRiz4NYgoUlH7QTMPiFJ2SxWmTK1fOONmwe5rg3KSWhvXr2iCmpG6XmPbZs2WzzXbs3CU973/QDaIa9vAgG+ytK2+75Qb52RjrNEazTLb2Ldu2y/OjnkjM7oO2eXbsJFmzZr1c1+hKuaN186DtWBFXQLNCdzUZTae/OsuuXG8CEi+rVsXW8+bN424QZd4L4yvOCNaCifigG99+Aq0LhdduoH6l12X5zjyu+g+H+ErkqbMDOPLmOftciG+b5K7TUdGduvezo5B1H82b3CJPDX8ozT8cJ7f/bIdAQgIaXHxPl77uDB8a6Hzt1Q1E32edwRV/L/vPnRUjvv1de3VDd/XHny1xA74Xf/qlXa77PtcBZe4BUrnSwWT1fvixkfa1/8efy2z2gc++/Nr+I00PfUerZqnSA/3nbJ8BD4v+fdGi2Ub8/4nb8Iq6Mubpx2TI0BG2f01uby+jRw6z70/J6dTBg4fkWxPs/6WZUUMzL+jAOP+i14cadF7jsqrSollj80/EaiGfqd3/HLiPAAIIIIAAAggggAACCCCAAAIIIIAAAgggkLEENKmLU+5pd4dTDelbndVTA763mliF+MrRo8fc1QUKnA4GdhcEqHz6xdfu///1uwfv7OgBmrMohQQOHDgoz4wZb/fWoH4dqVypghtn4z2Efl/nFCcOx2ciKZ2EeE7At7bRZGXeOCVnO+dWnz9anGRCzvK0utXvAjXJnCZ71IRqJ03MW+bMaRt4nlbnynEQyOgC0dExEhFjshdTELjQBXwRmSRT9hySOcInYSajbSYT7J05i/nxifhMotqDe4/L3z9tlsNHTkn+wjmkSs2SUs2s/PLT1XL0VLQZqWUyfZspP6LN6yVM04NTzqtA6ZLF3ePrxVm9OrXc+4mtvGeCuZ2iWRs1kMe/7Nq1J1UDvp3M2joi8NpbEp7KSDNLOuWzRe+YQPeizt1k32bPni3guW/bvlN+MBnQNZu3Xtzqz35zYazB8Do9Ub685idfHqlQvqwJUmsY9MPJylVrpFO3fu4HmQF9u8vVV9aP1d+HTNC+Ti+jAU9Lvl4qiz/9Itb6pN75/Y9ldrSmXogT8J1UPZFixYq4G+3bdzYAzTuwYpv5wFLS8zp0NzAVnR5JH08tpUuVsLcp+SsUXrspeT7ne1/OY6TBhidOnAw6unn7ztMfUrW/mhU+tYr/e0bv7p2kT8/OTG+WWuDs97wIaBCz848fHazVr3fXOP3QrNA6GCqhon/HWza71WbB1oFqui+9rvj4TMB3q+a3JbSLkFmvM008NWqs7f+7731oA77nvH3aQAckXVb90hTv69p1G6RN2y5uULkOehrYr0fA4zS77WaTcfyYPP7k6QF7Yye8JLfceF3Q982AOzELv/pmqZndZLh7zGDt9HHUWWj0Z56Z8lGv+5558lH7D7tg27AcAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIHzJaAxBc53G/o/7YYN4sZgnK++xXdc7atmg9bvuDUhX64gMymvWr3W3U3xYgnHarw283R2b93ozjYt3G2ppK6AxrrodyxadObwK65pnOABnTaaLG3pkg9t+6JFC7vbrTBxLw08iSndFaZy/Phx0e+btJRKhfgIu+NE/CpcuJDbatfu3VKs6Nm4D3cFFQQQSPcCOkt2hP4i6DvdP5acQAICPhOwnatkBYla86McjTwlmSJMsLdJ4lyyeA7JlTu7nDhyUjavPyS7dpss4BFhEm2CvC/KmkWymkYHzSi9bCYjuJZMWbNL3hLlEjgaq1NbwHuRpEHT8QV8a1CNTmGSNWvWWN3659/l9r5esAUK9taVx8yFWWoWzdzoXGim5nGSsu8NGzfJkEeetKP+krJdy+aNZdD9PST/mWltnG19ZoDF8eMn7N1hDw2Udne3cla5t1mzZJGXJj4nDz36pBllmFluN8FpmtlUiy/MjMo4U3RaitQss1+bYv8eFvcEPKfm8dJy3zrF0LgXp4lmhu96X/t4D71+w0Z3vXeUqneAwfIVq4K+7jaYrOBOcYKJnfspcRsKr92UOI9Q2Yf3/VSnWLu0SqWAXVuxco27PLUCvvX9vHvvB9z3xaefGCq3t0g/waouEBUEEhDYcGZQjDZrGWA6QF1+4sTpv51aT6g0aXyTDfjWIHL9+7lx0xZ3k5tuaOTWQ72imS3atGpqpjecawOcdfYTZ7q9dnfFvX5IifPRf3ZpMLkeZ1C/ngn+jbyzdQspW7qUDDaZvqdNei4Zwd7fS4++Q9yu39GqudSrW0sqmz7kyplTdEaa6JhoOXLkqJ068u9/lsu33/0oOkhAM5G379RL3n/nddtndydUEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAIAYF3TfISp3TscFecGcuddaF2e9utN8r7H35su/XZF1/Z2dkD9fG9hYvdxTdcd7VbD1TRLMt//3M65uHG666RCzEGIdB5h8Iy35n4rnPty/WNrpJH5Bm7G026pNnCA5UvTVJDJ+6nqfnOLqXLocOH5eVXZ0vPrvfGiXvyHmv58pXu3cKFCrp1KgggcGEJ2IBvETJ8X1gPK2cTTKBig+tlxV+L5NT+vTaoVEwApM8XIUVKFpLjx07IIRP0HZ45TMpU1D98YbJ/1xE5cPCEqZkAcJPZO9zc+rLmkNxFUj5jbbA+szywQMEC+eX6a6+SL5Z8Ky9Ofln0oilQAKKOHh3+1LM2y/A0E1DszUh8ca5cduea1VaDnDWTprccN4FWX3z5jXdRitcXf/CWzRQZ344167WTSXL8c0+Z6WbK2+apMRXMuvUb5dbmd7vdqXbpJXJFvculkjlmbpMtO4sJzNZy+PARG4S0zATNf/nVdzZL6YL3P5Lf//hbFsx9LVa27/LlyshrL0+QjSYIWD8oBStZsmSW50c/Yf8i6R8np2jQk1NSe0KK2jWrO4e64G4HPTTczfa6Zes2GfbwQDNzQdzZCvRx0kA7LTogoUrliq5FmdIl3WmAJkx6WVqYIEVnOiO3kam8MH6qe1eztaZ0CYXXbkqf0/nc3w3mvVSntNIPoc+PnyI644H3Nah90+nJxk44/bhWuaSSnfYqpfuswYx9Bwx1dzvjpXFBPzS7jaggkE4F8ubJ4/b819//inV94qz45LOvnGqCtzqwzRlEppm99e+5Fp1RIzFTCiZ4gDRs0Ob2Zu7foS49B7pHbnzL9W49JSt6/fHiCyPl51//kMT+zapzeU356tMFyerG+2f+GayP14K5rwZ87HXHOS66SAoVLCCXmL/Dd7RqZjNQ3Ne9vz3mRx9/TsB3svTZCAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCC1BCIjI+XVmW+5u2/W5Ga3ntaV8ZOmy+JPvrCJ6bp17iBt74x/tvWGV9QxM5znsbOWT53+uvmOsq74x2NoAPdbb5/+buDaaxpKQgG1b7w1zz3tDu3auHUqqS9QsUI5+XThXBN7En885PQZs2wCIu3RJwtPZ2MPDzeZQ8+U3LkvFk269OFHn9oBAZqozD8Z5e7de2SCeb5p0e9+rr3myjNbB79JyvNTYzs6dr3fJgXSxHtjRj5m4t0yxdn5p59/ZWeM1RV1zfdYgWJB4mzEAgQQSJcC0dHRYt6pNLAu/je5dHl2dBoBP4HKl9WRtcUvkeLhf8ru4zGSxWTw3rz1iGTJtkPyFcwp5S8pZoLcYsQXEyanjhyTv//cJkdOnJKs2TKZZSJZM2WScje0kRw5TwcK++2eu2ks8ODAPjbgWw/b8o6O8uhDA+SqhvVsAOoyzYa49H8yedqrtle7du2xGRO9Xax6aWWbLVGXjXlhkvTu3skENlewTZaZ7Jga+Lh67Xp7X39p4LUGmtasUc1ddq4VDVxPqDhBW9quSJFCcQLTE9o+KesXmQAip0weP1quaxT/xahe0A4d0s9cwL4s02a8Yac40oApDTDzFg0c15+EimYDp6SOgGZG1QyhGtSrAyFWrlorN15/tdSoXlXKlS0t+/bvN8Fkv8jEKa+4Hbin/R1xPggMNq+7O9t3tftp3bazPDZ0kNSueZn9UKHP1XETp7mvyz497hP/5/jefftl69bt7jG04s10q9NgHTt2PNZ67Z9mfXVKSrx2ta+aPdUpO3bscqqiAxmymEzz3qKvPf2QH2pl567dsnPnbrdbzlRRukDfBzVg0Fs0w7v/4Bj9oNq7Ryf7PqhTWnXv84AMvL+neV6UksjIKPnz73/kqWdesP/g0H0NHtDLDJZK2deqflD1Bnt37dReDh485A5S8J6Dt97girpBp1TztqOOQKgJVK58+npD+6XXKvoeU6P6pXZUvg68mWH+Ifr2u++73f7l1z/t667mZdUCZpTWf9poUPCrb8yxP86GTRsn/M9UPZ5OT+gtW7ftcO/+898KyZkjh3s/3Myao0HITtFs4vp69ZZd5p9bTtH3Im/RASXBZhLQdvqerwHset3lZENob/6G+b+fefd5rnWdzSKxwd7neiz9G6Oldq3qQYO9Ax3DG9SvUxFSEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAIJYHPTTI9Tban5d72d8b6biFYP6NM0NpnJlDVv/xgvrN0in5/uW372e8tdHlVE3sQLGO2fi8xZdprzuYy4unnbSKz7Nmzucv8K/o9i2Yk1xgRnW3z7nu6y8B+PWyMw4kTJ+XX3/+UJ833pU5pf3drpxrwVv+Pr0HCWsqb7z3q1K4RsB0LU0/Amwwy2FG8ye38E0Q627S9s6X7WN7bpa88OKivCfquab+3+tt856MJKtefmdlX4ys00VB8JanPT+2jE7ugSZ/0e7luZkb3alUvMTEU2WSHmf1X43w0A7hT+vbq4lS5RQCBC1BA43UiNJFqamdNvQDtOKV0KlC5ZV/Z8MaDkt93QA5GRosvU2ZZ+c8Oyb15v+QtmMMEgWeSE4dPyrrVe2Td1gMmGDyTmWYmTHJEhEvWS6+QRq07pNMzv/C6rRdoY55+TIYMHWEDgh5+bGTQk5xgMjdqMI+3tL3rdjNab6G9YNdM4frjX+a+MU3u7NDNLu7Rd4i9/fX7z+IEj/tvl17v7zfBuE7RUY+JKREREVK+fJnENKXNeRTQD5FvzZwqnbr1sx+0f/vjL9GfYOXKBvVEA7b9y2XVqpiA397y7NhJ9rXTtdcg/yb2vo5qvu/etnHWaUb4R4c/E2e5s6D/4GFO1b2dP2eGaFZpp6TEa1c/kOs/BwKVdh17xll8V5sWMvzRwXGWn+8FOm2YN6O6tz/PjZvsvWvrJYoXlc8WvRNneVsTTPm3Geiy2HxI/MYMDNCfQKVPz84263+gdeey7OTJU7E2n/7qrFj3g935YN5MAr6D4bA8pAV0RgkNMNZ/zOg/DnVkvn/Ra5x58xfKT7/8boPCNTB8+uTnzeC22IOqnO10Fg0N+PaWhAZuaduxL75kX/ve7bx1/bvhLZqd4NcfPnMX6UChDxZ94t73VjRgWwcH+Zflfy71XxTrvmba0IBvp7Q2Wb8vlKKZH/Qx1/fZmbPftllF9FoqvqIB+ZodwgmAr2v2QUEAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIJQEXnntTbc7+t1qYkqUST4V6Pth77aaDdm/6HcowQK+Dx6KnaRGtz12/LjEF/Ctbbp0aicO1v1GAABAAElEQVQHDh60gbPbTRCtxqEEKnrshiYpVXxlzjtnZwntdO/dcWZXjm9b1oWWQK0a1c1MsU9L34FDbcdGP/9iwA7qd1v6XXpCJanPT02I9LKZobtXv4fkX5OkSX/ie81owkYGGCT0KLAegfQtEGMCvSNiosnunb4fRnqfFIGyVapJdJtHZfWckVIkcp9sOxUtkSZT4cZth2Tl2r0SeSpKIqOiRV8WmbJnkqwRPslmRkVkvew6uXXwGC7EkoKdzLZZMmdJ9JbNbrvZjqp8/MkxNiDKf0MNptLM3RXKl/VfZUeUvjptgslqO1F0ehNv0eDSvuZi7DKTbXPSuFEy6aVX7YWTtnGmffFOk5IpU/yBOt59n0s9sxmgkJrlumuvkllz3rWHuKFxa+lkRrHWrnWZ8SsjOUx2z4vMqNco8/o4evSY7N23T5avXC1ffb00VqBY3ctDZ3Tq+x9+LDqSODnFG8yWnO1DcRsN4n/XBE/r6M4F73/kBo55+6oBwYP69ZSbbmgUNItz545tpZbJdD985HOywjwHvEWzYPfs1lE0o7hmcfUv4cnIDO0fCKeZZs/ltat9ijCDeJJSolP5WimzX0bxxPYt3Je08zh1KjLgrrNmySJjn31SrqhfR8abLO3O6HunsY48f/ThgTbrrrMsJW8zmRk0klN8ZrQ9BYFQE0jsdczTTwyVksWL2RkyvOegUwDefUdL0WucSuZ9e+KUGe6MJPEN0tXZD0qXKuFmEWje5JZEDVALTyDY2Nu3QPXwJL6fasB4QuXqq65wm+i1WOVK5d376b3SuWM7WWKunfR99ukx48177nSpX6+2vZ7VLA36j7vomGg5fPiI7Nmzzw7O8ga/6zXqTddfk94Z6D8CCCCAAAIIIIAAAggggAACCCCAAAIIIIDABSSgszj//c9/9ox0NvAypUsm6ux0VtGULjo7tX7XokHbWvR778TM5KzfbT/Qv5cUKVRI3p7/QZzvwTXwt1vnDtLo6gbxdjnaZC2f9eY820a/E7ntlhvibc/K0Be40Xwv89r0CXa29F9++zNWh/V79JbNbzPJ8BIX2J+c56c+n998bbLMnjNfZrz+Zpzv8rVDja5qYLPSJzaxY6yT4A4CCKQ7gbBTkVEx+geHgoBX4Mjh06Pe8uTJ412c6vVt23fbY+TLlztVj7Xuz//JsnfGS6bt/8ihk5Gy++BJE8R6Uk6YYDh9NWQxQWQ5w8Nk7/Foqdi4nTRs30eKFCueqn0K5Z3v2XM683NqPy7nYnDq1ClZt36j7N6zVy7OlUuKFS0suXNfnKhd7jWZrTeZqU80c2LVKpUlV66cidruQmykWTpHP/diwIvE+M5XL2THPT/STkkUX7vErpttAs+/+/5/UvfymtLpnrvtZprJeNqMN2xA28cfxM5i6t1v+069xP9C27s+MfWEso8mZh/n2iY1X3eaUXnb9u2ya/de0ddO3jy5pUiRwknOlnzs2HFZaT7AR0ZGSmmTdd8/k/65GiS0Pa/dhISSt15d12/YaGa4CJfy5cokKmg0eUdiKwTSRiA130/P9QyOHDlqMz7v3LXbvN5KS1HzXpzRy9IffpLOPQZYBs2UocHvoV4aXtvEXjvp7BgJZXDYuHGzvZ6Zt+DDJJ2WThH5QP+ekjVr1iRtR2MEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBFQglL8vSclHSL//Xrtug40XKVSwQLJ2ffjIEVm1aq1o4ptKFcpLliypm5wvWZ28wDZKD89PfW6tWLnGxliUMzEyyYktOpfnZ1RUlInz2Cnbtm2X4ydOmEz3RW22++QmWLvAnkKpcjrO87JI4fypsv9gO91nknBquShHxo1fC2aT0Zdrhu+w4ydOxgTKwpnRcTL6+V/oAd/6+O7buU3W/PK1LPtwlhzZslaOmwBIk7xYoqOjJCxzNilcs5E0bNleilSqZt5Ac2Top4TzByyUA74z9AOUwievF4maTXLxJ1/I5i3b7OjXXbv2uBmhdSRq3ry5pUD+/Dbj7xX1L5caJgNnal9EvvTyTBn74ks28/rcN6YFPWvNmqmByOdSgk0BdS77TOq2vO6SKkZ7BBBAILAA76eBXUJ1ad8BQ21Wc73eWLpkYboIcL79rvvsbDD9ene1M10kxlZnTFnyzVKblX2PGbCo11rODAuabSRfPvNjbnW2lctr1RDv7DKJ2T9tEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBDwCvB9iVeDeqgJ8PwMtUeE/qiA87wk4JvnQygJEPAdSo9GCPUlIwR8K7dmtz9+5JDs2bBcDmzdaO7HSPa8BSVPifKSM09+yUwGPfusdP6AEfAdQi/S89AVzeIc5vOZrL8pP7XSeTidkD8kr7uQf4joIAIIpBMB3k/TyQNluqlZCa69uaXtcOeObWXwgN7pp/P0FAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBEBbg+5IQfnDomhtYS1wST4ZQEnDeNwn4DqVHJWP3RRN7R4SHh9ug14xNwdlnVAGfCVzNnvNiyV61npQwPxQEEAguEBEREXwlaxBAAAEEEEAAgWQIvD5rrqxbv9FuuXrNOncPd7U5HfjtLqCCAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBABhWIiooSovcy6IPPaSOAAAIIIIAAAggggAAC51tg/vsfyYqVq2N1Y8jA3lKieNFYy7iDAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBARhXQ5MYRGvWtqb4pCCCAAAIIIIAAAggggAACCKSlQJNbb5T6dWubz6Qi+fLmlbp1asll1aqkZRc4FgIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAiEtoHHeEaaIBn1TEEAAAQQQQAABBBBAAAEEEEhLga73tU/Lw3EsBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEE0p1ATEyM+KKjo9Ndx+kwAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCBwoQtohm8Cvi/0R5nzQwABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIF0KWADviPCw9Nl5+k0AggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCBwIQtERkaaDN8xMRfyOXJuCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBAuhTQ5N6+6OjodNl5Oo0AAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCFzIAprc2xce7ruQz5FzQwABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEE0qVAWFiYZviOSZedp9MIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggMCFLuCLMWm+KQgggAAC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AggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQIgJREZGii86JibEukV3EEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBDS5ty86OhoJBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgRAT0OTevvBwX4h1i+4ggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIhIWFaYbvGCQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEQlDAF2PSfFMQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEQksgzHTHF+7zhVav6A0CCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIICAaGpvXzQZvnkqIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACISlg0ntr3DcFAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIJQEwsLCxAR8h4VSn+gLAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAwBkBn0Z9UxBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQRCSyAqKkp8poRWr+gNAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAgISH+8QXFRUJBQIIIIAAAghkQIETJ07K6rXrZf+Bgxnw7DllBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIFQETh2/LisXbdBNm/ZJprFlIJASgnExMTIjh277PPr1KlTydptZGSkbNi4WbZs3S7R0dHJ2kdKbKTnoq+RXbv3pMTu2AcCCKQjgejoGIkQCUtHXaarCKSMwKFDh6Vdp15y8OBhu8PwiHD54qN3Umbn7CXDCjw9ZoJ8+vlXUq9uLRn91KMZ1oETD20B/ZD84uRX5Psff5G/lv3rdvaii7JLm5ZNpW+vzpIn98Xucm+lbceesnXrDu8it67vo+XLlpby5cpIm9ubSulSJdx1Wmncop0cPXos1rLE3qlzeQ159unHEts8Ue1eee1NeePNeYlq+9ADfeWWm65NVNvkNvrnvxUy+OERrpF6zpg6VkqVLJ7cXbIdAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggkGYC+n3wsBGj5dff/rLHrHFZVRn37Ih4j3/8+Al5Z/5CeW3WXFm3fmOstjXN9n163CeNrm4gYWFpG9/27dL/yVOjxoomUdPvbp8dOUxq1aweq39658DBQ9K89b1xlie0YKxx0fOjpK7A738uk7EvviTfff9TrAOVKV1SunZqZ2IbmtmMubFWeu5oYPeixZ/LlOmvy/KVqz1rRGqb58Ogfj2lvokRSovy+ZffyvwPFok+N48cOWoPWbhQQWl4RR25t/2dUrVKpaDdCLX4iKAdZQUCCMQroH8LI/TvoRn4QUEgQwmMfXGaLPt3RYY6Z0429QX27N0rGzdvkdxBgmVTvwccAYH4BfbtPyBdeg4U/VDjX/QDgX6IfmfBQnn/7dekbJlS/k1k/YbNsn3HzjjLnQX6AfyzL7+xH3aeeHSwdGjb2lkV58OPuyIRleLFiiSiVdKabNqy1b5eE7PV3n37E9Ms2W1+/e1P6di9v/uhzNmRHpeAb0eDWwQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQCFWBjZs2S9deD8iqNetsF5vddrM8PeLheLu7Y+du6d5ncKxEZd4N9Hvtzub77bvatJCnn4h/X97tzqWu2ZOnzZglo5+faHejidOmThgdMNhbG0SbTOQaJ5LUooHklNQVGD9xuoyf/HLAg2hsw9DHn5F331skb7wyUbJmzRKn3cmTJ6VLr0FxgsWdhr/+/pdo0rxu97UXTSKXmmX2nHfNYIoxcQ6h8Rt6Dvoz+9XJckW92nHa6IJQio8I2EEWIoBAogXOZPgm4jvRYjRM9wJ/L/vPBjWm+xPhBBBAAIEkCOiUV3d16O5+wK5etYq0adVULqlYXvbuOyBvzp0vX337vQ06vq/7APno/dmSPVu2gEfIlzePdDGjXb1l2/YddmTrnr377OLHn3rWjkiuemlle18DwI8ei5vh+zfzIUiDxLXc0aqZ6Eha/1I6FbJc799/0B6mgslI3rJ5Y/9Dxrpfs0bqjaz++rsfpFO3/u7xGtS7XL7/3y/ufSoIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBAKAts3rJNbru9g5vg6pEh/eS+e++ONyu3Bjx7g731e+JbbrxW6tapKTtNIPinX3wtXyz51p72nHfes98960zTqV2eHTtZpr480x5Gv0t+xczKnNgEZfp9d6WK5YJ2cfJLr4nzfXr2bFmDtmPFuQu8t3BxrGDvAX27Sd3La0qmiAj5b8UqGWUC+jUpngZtvzjlFRk8oFecgz725LNusLdm0u7Xu4tUrFBONCv9D+Y7/YlTZ9htdIDAFfUvl2uuvCLOPlJiwbwFH7rB3joAoXvnDnJZtUtt9vkff/5VZrz+lj1Mu069ZP6cGVKj+qVxDhsq8RFxOsYCBBBIkoAm9zYB3xQEMo6ABjw+MvwZe8J6Ydagfh15ffbbGQeAM82wAqvXrpdZb82TTZu3WgMNKu3csW2G9ciIJ/7Ndz+6wd6Nrmogk8Y/I9mynv0QecN1V8nwkc/JzNnv2BHIb86ZHyeo23HT7N/6IcK/DHtooCz44CMZ8siTdtULE16SGS+NtXVvtm/vdm/OXeAGfOvI7EAfPrztU6p+0EytpUU/1PXock9K7TZJ+/noky+kz4Ch7jZqtX37TgK+XREqCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCAQygKa9Ktb7wfcYO8nHxsi7e5qlWCXjx49KtHRUbZd1SqVZM7MlyR79rMJyTS4WxOHaVC4loUffSqpHfD9/ocfxwr2fuv1KZLXJENLbLnxuqvl+muvCtj88OEjot+fa9Hg9mpVLwnYjoXnLnDq1CkZOXq8uyN9HOvVqeXer1Wzulzf6CppcN3pAQRTpr9uYwZy5szhtlm1eq28/e4H9r4GWS9aMEvy5L7YXa+ZtDXJXrc+D9hlYydMS5WAb804P3HK6cBy7cc7s6ZL5Url3X5onEedWpdJz34P2WUa7xEo5iIU4iPcTlNBAIFkC0RHx4hP3xgoCGQUgdkmgHHZvyvs6T4zYqhkyZI5o5x6hjlPDeo/dOhwss9Xtw2UhTihHep76bJ/lifULFHrjx49dk7noAdRhwNnAlr1/sPDRtpA3iVfLxX9SUwGYf996H4o6VfgzbcXuJ0f9dQjsYK9nRUPDeormr1bPygEmrLIaRfsNjzcJ61bNhEdUKPl59/+CNb0vC/fu2+/7UOePLnPS1/mzns/VrD33DdeEg3EpyCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAALpQUDjJB585ClZvnK17a5m9k5MsLc21u9p3zbBq/16d7VZtL3B3s65awC1fn+t5bvvfzIB4tHOqhS//XvZfzJgyON2vyWLF5M3ZkxMUrB3Qh3SjNOaUVpLVzObdpimaaWkisB/y1e5mdRbNL01VrC3c8DChQvaLPTOfU2i6C0//vSbe3fYQwNiBXs7KzTY2omN+GvZvzZOx1mXUreagXzj5i12dwP7do8V7O0c42aTGV/PU4s+z/YfOD3bubNeb893fIS3L9QRQCD5Avq3I0J/EfSdfES2TD8CmjVVs9dqudtkkdURWzoFDCXtBRZ8sFjemf+BRJipUma+/GLADvzz3woz4m6cXffU4w+JZhT2lufGTZHf/vhLypUpLU8+/qDoSMuPP10i3/3wk71I1gvw+mZE3RAz7Up8Iy5PnjwpmmVXBwPohZJTdHsdUVmndg25+44WkilTJmeVvdWsxB8u/tRdtmr1OveCUS/k2nbs6a7zVnp27ShXNaznXWTrP//6hw3I/urb792LfA26rV2juvTteZ/UNiPyEioaKD791dny0cefu5mc9cNP/bq17blpVm993mspXapEwN3pPiZPe03+9/NvrodOTVPbbKcZmjUbMiX9Cezavced7uq2W26QggXyBzwJDfKeNWOSlChRVLJnOzt6OmDjeBbq63XVmnX2uXzw0CHJlTNnPK3Pz6r9+w/YA+e+ONd56cC3S/9nj6uv8zkzp8qll1Q6L/3goAgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEByBL7+7gdZZOITtOj30EmdZVy/n+7Xu0u8h85rAsP37N1nk5b5fL54257LymEjxribT31xTNDv1N1GSahERUXLy6++abfQ74eb3XZzEramaVIFqlerIn//vEQ+X/KNiZe5POjm5cuWdtdt2LhJal5W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IIAAAggggED6Bfi9JP1WLJn9Apyf2W/OHhFAIOcIaJx3ICEhIefUmJoigAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAJ5RCAlJUUCycnJeeRwOUwEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCDnCNgM3wR855wnjJoigAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQN4RsAHfCfHxeeeIOVIEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCCHCCQmJkogOSUlh1SXaiKAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAnlHQJN7B5KTk/POEXOkCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBADhHQ5N6B+PhADqku1UQAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBPKOQFxcnGb4Tsk7R8yRIoAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACOUggkGLSfFMQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEE/CUQZ6oTiA8E/FUraoMAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCAgmto7kEyGb04FBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEDAlwImvbfGfVMQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEE/CQQFxcnJuA7zk91oi4IIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAAChwQCGvVN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AAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIICADwVswHd8fLwPq0aVEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBvC2QlJREhu+8fQpw9AgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCDgV4FAICABjfqmIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCPhLIC4uTgIJCQn+qhW1QQABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEJCUlBQJJCcnQ4EAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCDgMwGb4ZuAb589K1QHAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAwAjbgOyE+HgwEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABnwkkJiZKIDklxWfVojoIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACmtw7kJycjAQCCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIICAzwQ0uXcgPj7gs2pRHQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIG4uDjN8J2CBAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggIAPBQIpJs03BQEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQMBfAnGmOgnxgYAkE/Ttr2eG2kj+fAko+FCA58WHTwpVyvUCvO5y/VPMASKAQDYJcD3NJmh2gwACCCCAAAIIIIAAAggggAACCCCAAAIIIIAA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C/j+4ssV8umSpWYVmhF646YtZvguq0ELBQEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBLJHQJN7W0HfvoizsmVPddkqAggggAACCCCAAAIIIICAFwTOPOMMqVunVsRVKVumdMTLhFvg33//lWkz5qSYRbNiateLOalcXOMC+WDh6zmpyrm6rtqdYXqO8YIF8udqF3ZO5LTTTuO9yoHgWYFG19eT//47HFH9qlSumGz+r1Z8K6+/uSDZOM1mf+MN9ZON4wkCCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAghknYAm9rYyfEfWBXfWVY8tIYAAAggggAACuVegXt2rpVLF8lKpQrncu5PsGQII5FqBCuXLyoSXRmT7/p166qlyW8ebTT3y5ImTEsWLiX6+lipZIqK62euoXevyiJZj5twroJnoo5GNnu/73HuMsGcIeFFg5IghGa7WJRdfKJolREv+/PnkvGrnyDVXXymxPl+G180KEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIP0CMYePHE3QyG8KAm6Bfw4dNE8LFSrkHp3pwzt27jHbKFy4YKZviw2kXWDv3gO8LmnnYk4EoiLA+y4qjKwEAQQQED5POQgQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEDgZBfgfsnJfgR4e/85Pr39+pystbOPy5IlimQpwf79+832zjgzX5Zul415X8BnxXn7yM7i/ReKGiKAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIDAySegfXP67C46T77dZ48RQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAFvC/hENO6bggACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIOAlgZiYGLECvmO8VCfqggACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIHBCwKdR3xQEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABbwnEx8eLzyreqhW1QQABBBBAAAEEEEAAAQQQQAABBBBA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CCCAAAIIIIAAAggggAACCISWQFhYmIRHRkaGVq2oDQIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggIBER0dLeFRUFBQIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACISZgM3wT8B1izwrVQQABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEjIAN+I6MiAADAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIMQETp8+LeFR0dEhVi2qgwACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIKDJvcOjoqKQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEAgxAU3uHR4RER5i1aI6CCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAmFhYZrhOxoJBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgRAUCI82ab4pCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAqElEGaqEx4RHh5ataI2CCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAqKpvcOjyPDNqYAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCISkgEnvrXHfFAQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIFQEggLCxMT8B0WSnWiLggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAJnBcI16puCAAIIIIAAAggggAACCCCAAAIIIIAA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3aa4C/oNDB/cV5q27GQDdds/313aP++3gBm9+44K0thkqPcv3vP65Rc7SF7TAvdcRT0pl49A5swZ3cru3+8b8F3YL+A5V64c5wz4djd2CQduMJn4B5hWpudbur8SE6iu53Cd2tVtowj/bWhWfKdotn1tOKElffr05joSLt6g7dOe3h2cdbyP3t4f0qcP3azn3jozjAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCAQSOGCCn3u/MdDOurNiebmx6A3u/VTv8sf+396dgNs13QsAX/fciGgRIUQSc0QMqZpqphHSmNVQrSGN1NAWjaamKnml+J6pZhJizJMairY8lZSiremhg0cNNRMxhJdqKSX33rf/m7OdO+bm5t7k3Pit7zv3rL332nuv/Tv77nPOd/7rv9//oJgs/95ak2UmjViIKNUYj7Pcsn1TJA6MR2U59oRPYzram8186h33FHEeo/bZq11B4pX7VCfQmsCM115Pt029M188dO0h2aCEoa01bTY/4kOaxoi8/8EHxf90ZOzfeYcRzdYzgwCB6hHoEW+mDdmtNhQCBJoLDBzQv5j59N+eTX0327iYrqzEm18ECUdZZeUV82d/WheoSZ/md/3www9Tz0+ycLe+RseXvDrjtXzlFQcOaHUjcbuD9dZdJ39UNnry6WfSkceemAe/3nLbtHTS+KNT704O2Lz40qvzXUbw6W9uvS71b2HAwK9undrodkGVfSzXB/RfPh1/7BFp1IHfK88qnlddZaX03YNHp9133TEPVi0WfFKpPGfXzL6MbbbJhk2bmO7mAssvt1xxBI8+9tfsXNihmG5amTnzraazFqrpyOIfJQZ0bLntbnM8ttEHjy3a3DPt5rTSigPTChXvDTEYpK1SzqAfX4xiFLhCgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB7irw2utvFJmA773/obThFiPneCjlNsss3Sc9fO/UvH13ice55w/353dZj07H7+wrr7TCHI83GpSze0d9n713jyeFQKcITLnu5mI7Bx6wb1HvaOXCCVek8l3OD/vOmBaTaXZ029YjQKBzBeqzOO9SOftt527a1ggsHALbDd+6OJCbf/Xrot608tu7/1B8oN1tl+2bLjbdRKBypGY5M3qTJukf//g0w27TZZXT5YDuynnlemTpffyJp/PJlj50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BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQOcKRHLvLOi7lOrrZfnuXFpbI0CgqwX232evrt5Ft9p+BHaP2nev/NGtOq6zBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQKsCkdi7JNi7VR8LCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgsEAFSg1Zmm+FAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBKpLoCbrTqm2VKquXukNAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECKRI7V2ql+HbqUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGqFMjSe0fct0KAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC1SRQU1OTsoDvmmrqk74QIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwCcCpYj6VggQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgugTq6upSKSvV1Su9IUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFUW1tKpbq62SgIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoMoE6usbUpbeu6bKuqU7BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFBTU5NK2UMhQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgSoUkOG7Cl8UXSJAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAk984CvhUCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQqDaB+vqGVGpoaKi2fukPAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEPvMCNVmK71L8UQgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgugTygO+UZPiurpdFbwgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIJBSfX19KqUkw7eTgQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAtUmUCqVUqlGvHe1vS76Q4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgdTQ0JBKDfUNKAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgCgVKNVmab4UAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEqkugvr4+9airq0s1NTXV1TO9+cwLfPjR7M+8QTUCeF2q8VXRp4VdwP/dwv4KOz4CBOaXgOvp/JK2HwIECBAgQIAAAQIECBAgQIAAAQIECBAgQKBaBfxeUq2vjH6FgPPTeUCAAIHWBSLOW3rv1n0sIUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwAITyAO+a2trF1gH7JgAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEWhaoq6uT4btlGnMJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCwYAVKpVL6f7kNXuS1MNvbAAAAAElFTkSuQmCC" + } + }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![image.png](attachment:image.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2. router 노드 평가\n", + "\n", + "워크플로우가 질문에 따라 질문의 depth를 미리 파악하고, 질의가 단순하고 단일 검색으로 끝날 만한 것이라면, \n", + "router 노드가 lite 워크플로우로 분기합니다. 그에 따라 문제를 정확히 이해하고 어느 정도의 추론이 필요한지 미리 파악하는 것이 중요합니다. \n", + "\n", + "ko-freshqa 데이터 셋과 deep 노드에서 사용할 만한 쿼리로 데이터 셋을 구성하고, 정확도를 측정하였습니다. \n", + "또한 추론 이유도 함께 뽑아내어 왜 router가 그 노드로 분기시겼는지 확인하였습니다. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3. Deep research 평가 \n", + "기존에는 최신성을 기준으로 한 Ko-FreshQA로 딥리서치 시스템을 평가하는 방안을 검토했지만, 이 방식만으로는 적합하지 않다고 판단했습니다. \n", + "정보의 최신성 뿐만 아니라 서비스가 실제로 제공하려는 분석 내용과 범위를 얼마나 잘 커버하고 있는지까지 함께 평가할 수 있어야 합니다. \n", + "\n", + "이에 따라, 딥리서치 시스템의 특성을 반영할 수 있는 전용 데이터셋과 평가 지표를 직접 설계하고, 이를 이용해 시스템 성능을 평가했습니다.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.1 Deep Research 평가 데이터셋\n", + "\n", + "딥리서치 평가 데이터셋은 **정치인 단위 리포트**를 중심으로 구성하였습니다. \n", + "평가 대상 정치인은 전 세계를 대상으로 선정했으며, **한국 대통령 및 유력 정치인 9명**과 **해외 주요 국가 정상 10명**을 포함하였습니다. \n", + "\n", + "각 정치인에 대해 ChatGPT 기반 Deep Research 워크플로우를 실행하여,\n", + "\n", + "* 해당 정치인의\n", + "\n", + " * 핵심 정책,\n", + " * 영향을 미치는 산업·섹터,\n", + " * 관련 기업,\n", + " * 정책–산업–기업 간 영향 관계\n", + " 를 정리한 **정치인별 영향 분석 리포트**를 수집하였습니다. \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.2 Deep research 평가 지표\n", + "\n", + "평가는 `evaluate_report_evidence`에 의해 이루어집니다. \n", + "모델은 아래의 3개의 하위 워크플로우에서 평가합니다.\n", + "\n", + "1. **Gold Report Alignment**\n", + "\n", + " * 우리가 목표로 삼은 Deep Research 스타일(Gold)과 구조·내용이 비슷한가?\n", + " * 정책–산업–기업–영향 체인 구성과 요약 문단 수준에서의 일관성 평가\n", + "\n", + "2. **Impact Evidence Faithfulness (할루시네이션 검증)**\n", + "\n", + " * 이 정치인·정책이 기업/산업에 이런 영향을 줬다는 설명이, 실제 기사 본문과 얼마나 잘 맞는가?\n", + " * 기사 근거 기반 vs 모델 생성 내용을 직접 비교\n", + "\n", + "3. **Policy Attribution Consistency (정책 귀속 관련성)**\n", + "\n", + " * 이 URL이 정말로 이 정치인과 이 정책에 관한 기사인가?\n", + " * 모델의 검색/근거 선택이 정치·정책 맥락에 얼마나 맞는지 평가\n", + "\n", + "\n", + "\n", + "---\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 1. Gold Report Alignment (골드 리포트 정합성 평가)\n", + "\n", + "> `model_report`가 `gold_report`와 **구조적으로, 내용적으로 얼마나 가까운지**를 평가합니다.\n", + "\n", + "**무엇을 평가하는가?**\n", + "\n", + "같은 정치인에 대해 다음 두 리포트를 비교합니다.\n", + "\n", + "* ChatGPT Deep Research가 생성한 `gold_report`\n", + "* 우리 Deep Research 워크플로우가 생성한 `model_report`\n", + "\n", + "이 두 리포트가 **정책–산업–기업–영향 관계 측면에서 얼마나 비슷한 구조와 내용을 가지는지**를 평가합니다.\n", + "\n", + "**어떻게 평가하는가?**\n", + "\n", + "하나의 LLM 노드에서 두 리포트를 함께 입력으로 넣고, 다음을 비교합니다.\n", + "\n", + "* `question_answer` 수준에서\n", + " → 두 리포트가 해당 정치인의 **핵심 정책 방향과 그로 인한 산업·기업 영향**을 유사하게 설명하고 있는지\n", + "* `influence_chains` 수준에서\n", + " → 체인 단위로\n", + "\n", + " * 어떤 정책들이 등장하는지\n", + " * 어떤 산업·섹터를 다루는지\n", + " * 어떤 기업들이 언급되는지\n", + " * 각 기업·섹터가 **수혜/피해, 성장/위축 등 어떤 방향의 영향을 받는 것으로 설명되는지**\n", + "\n", + "이때 Gold는 **절대적인 정답 레이블**으로써 동작하기보다는 내용과 구조가 얼마나 유사한가를 확인할 수 있습니다. \n", + "\n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 2. Impact Evidence Faithfulness\n", + "\n", + "> 딥리서치 워크플로우의 리포트가 할루시네이션인지, 근거에 기반한 설명인지를 평가합니다. \n", + "\n", + "\n", + "\n", + "**무엇을 평가하는가?**\n", + "\n", + "각 `influence_chain`에 대해,\n", + "\n", + "* `impact_description`\n", + " → “이 정책이 특정 산업/기업에 어떤 경제적 영향을 줬다”는 모델의 주장 문장\n", + "* 해당 체인에 연결된 evidence URL에서 스크래핑한 기사 본문(`source`)\n", + "\n", + "을 비교하여,\n", + "\n", + "> 이 영향 설명이 실제 기사 내용에 의해 지지되는지, \n", + "> 아니면 기사에 없는 내용을 할루시네이션한 것인지\n", + "\n", + "를 평가합니다.\n", + "\n", + "\n", + "이때 하나의 `impact_description`을 생성하기 위해 여러 개의 evidence URL이 연결될 수 있습니다.\n", + "그 이유는 다음과 같습니다.\n", + "\n", + "1. 단일 기사(단일 URL)에서 특정 정책–산업–기업이 모두 동시에 언급되는 경우는 많지 않습니다.\n", + "2. 하나의 기사만으로 사실성을 판단하기보다는, 여러 출처를 종합해서 하나의 영향 설명을 구성하는 편이 서비스의 설계 의도와 잘 들어맞기 때문입니다.\n", + "\n", + "\n", + "**어떻게 평가하는가?**\n", + "\n", + "`impact_evidence_faithfulness` 워크플로우는 다음과 같이 동작합니다.\n", + "\n", + "1. `scrape_urls_node`\n", + "\n", + " * 각 evidence URL에 접속해 기사 텍스트를 수집합니다.\n", + "\n", + "2. `evaluate_impact_node`\n", + "\n", + " * URL별로 LLM에 다음 정보를 전달합니다.\n", + "\n", + " * `industry_or_sector`\n", + " * `companies`\n", + " * `impact_description`\n", + " * `source` (기사 본문)\n", + " * `question`\n", + " * LLM은 **기사 내용 vs 영향 설명**을 비교해 다음 라벨 중 하나를 반환합니다.\n", + "\n", + " * `SUPPORTED`\n", + " * `PARTIALLY_SUPPORTED`\n", + " * `UNSUPPORTED`\n", + " * `CONTRADICTED`\n", + " * `NOT_ENOUGH_INFO`\n", + " * 함께\n", + "\n", + " * `score` (0.0–1.0)\n", + " * `reasoning` (한국어 설명)\n", + " * 기사 본문에서 뽑은 `evidence_spans`(관련 문장들)\n", + " 를 제공합니다.\n", + "\n", + "**이 단계가 측정하는 것**\n", + "\n", + "* **할루시네이션 여부**\n", + "\n", + " * `SUPPORTED / PARTIALLY_SUPPORTED` 비율이 높을수록\n", + " → 모델이 기사 근거 범위 내에서 합리적인 영향 설명을 하고 있다는 뜻\n", + " * `UNSUPPORTED / CONTRADICTED` 비율이 높을수록\n", + " → 기사에 없는 내용, 혹은 기사와 반대되는 내용을 생성하고 있다는 신호\n", + "\n", + "* 또한, **영향 설명의 디테일**\n", + " (수치, 방향성, 수혜/피해 여부 등)가 기사와 **얼마나 정밀하게 일치하는지**를 직접적으로 측정합니다.\n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "| 라벨 | 의미 | 점수 예시 (score) | 시스템 해석 |\n", + "| --------------------- | ------------------------------------------- | ------------- | ---------------------------- |\n", + "| `SUPPORTED` | 기사 본문이 `impact_description`의 핵심 내용을 명확히 지지함 | 0.8–1.0 | **근거에 매우 충실한 영향 설명** |\n", + "| `PARTIALLY_SUPPORTED` | 일부 내용은 지지되지만, 일부는 기사에 없거나 모호함 | 0.4–0.8 | **부분적으로 근거 있음 (보수적 신뢰)** |\n", + "| `UNSUPPORTED` | 기사에서 해당 영향 설명을 뒷받침하는 근거를 찾기 어려움 | 0.0–0.4 | **근거가 거의 없는 주장 → 할루시네이션 의심** |\n", + "| `CONTRADICTED` | 기사 내용이 오히려 영향 설명과 반대 방향을 시사함 | 0.0–0.4 | **기사와 상충하는 잘못된 설명** |\n", + "| `NOT_ENOUGH_INFO` | 기사 길이/정보가 부족해 판단이 불가능 | 사용하지 않음 | **평가에서 제외(스코어/분포 계산에서 필터링)** |\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 3. Policy Attribution Consistency\n", + "\n", + "> 정치인과 정책 관련성을 평가합니다. \n", + "\n", + "**무엇을 평가하는가?**\n", + "\n", + "각 `influence_chain`에 대해,\n", + "\n", + "* 지정된 `politician` + `policy`\n", + "* 해당 체인의 evidence URL에서 가져온 기사\n", + "\n", + "사이의 **정치·정책 관련성**을 평가합니다.\n", + "\n", + "> “이 URL은 정말 이 정치인의 이 정책과 관련된 기사인가?”\n", + "> “아니면 단지 산업/기업 이름만 같을 뿐, 정책·정치 맥락은 거의 없는 기사인가?”\n", + "\n", + "를 판별하는 단계입니다.\n", + "\n", + "**어떻게 평가하는가?**\n", + "\n", + "`policy_attribution_consistency` 워크플로우는 다음 순서로 동작합니다.\n", + "\n", + "1. URL 스크래핑\n", + "\n", + " * `scrape_urls_node`에서 Impact 평가와 동일하게 기사 텍스트를 수집합니다. (공유 노드)\n", + "\n", + "2. `evaluate_policy_attribution_node`\n", + "\n", + " * 각 URL별로 LLM에 다음 정보를 전달합니다.\n", + "\n", + " * `politician`, `policy`\n", + " * `industry_or_sector`, `companies`\n", + " * `source_title`, `url`, `source`\n", + " * LLM은 기사와 (politician, policy)의 관계를 평가해 다음을 반환합니다.\n", + "\n", + " * `label`\n", + "\n", + " * `HIGHLY_RELATED`\n", + " * `WEAKLY_RELATED`\n", + " * `UNRELATED`\n", + " * `NOT_ENOUGH_INFO`\n", + " * `score` (0.0–1.0)\n", + " * `politician_mentioned`\n", + " → 기사에서 해당 정치인이 **실질적으로 등장하는지 여부**\n", + " * `policy_topic_mentioned`\n", + " → 정책 자체 또는 핵심 주제(예: 원전 확대, AI 예산, 금산분리 등)가 **중요하게 다뤄지는지 여부**\n", + " * `evidence_spans` (관련 구문들)\n", + "\n", + "**이 단계가 측정하는 것**\n", + "\n", + "* **검색/증거 선택 품질**\n", + "\n", + " * 모델이 가져온 URL이 정말 해당 **정치인·정책 맥락의 기사**인지,\n", + " * 아니면 그저 “같은 기업 이름이 잠깐 등장하는 기사”인지를 구분합니다.\n", + "\n", + "* 결과적으로, 이 평가는\n", + "\n", + " * 딥리서치 시스템이 **정책·정치 맥락에 적절한 근거 기사**를 잘 선택하고 있는지,\n", + " * 특정 정치인에게 **관련 없는 정책·영향을 억지로 귀속시키고 있지는 않은지**\n", + " 를 검증하는 역할을 합니다.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "| 라벨 | 의미 | score 예시 | Retrieval 평가 관점 해석 |\n", + "| ----------------- | --------------------------------- | -------- | -------------------------------------- |\n", + "| `HIGHLY_RELATED` | 기사 내용이 해당 정치인과 정책을 **핵심 주제로 다룸** | 0.8–1.0 | **매우 적절한 근거 기사 (이상적 검색 결과)** |\n", + "| `WEAKLY_RELATED` | 정치인 또는 정책이 부분적으로 언급되지만, 비중이 크지 않음 | 0.4–0.8 | **보조 근거로는 사용 가능하나, 핵심 근거로는 약함** |\n", + "| `UNRELATED` | 기업/산업만 등장하거나, 정치인·정책과 실질적 연결이 없음 | 0.0–0.4 | **잘못 검색된 기사 (검색/증거 선택 품질 저하)** |\n", + "| `NOT_ENOUGH_INFO` | 텍스트가 짧거나 애매해서 관련성을 판단하기 어려움 | 사용 안 함 | **평가/집계에서 제외 (retrieval 품질 분석 대상 아님)** |\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.3 Deep research 평가 함수\n", + "\n", + "`evaluate_report_evidence` 함수는 단일 리포트(하나의 정치인에 대한 Deep Research 결과)에 대해 \n", + "다음 세 가지 평가를 수행하고 결과를 통합합니다. \n", + "\n", + "1. **Impact Evidence Faithfulness** \n", + " - 체인별(`influence_chain` 단위)로 \n", + " `impact_description`이 연결된 기사 evidence에 의해 얼마나 지지되는지 평가합니다. \n", + "\n", + "2. **Policy Attribution Consistency** \n", + " - 체인별로 \n", + " 해당 evidence URL이 정말로 지정된 `politician` + `policy`와 관련된 기사인지 평가합니다. \n", + "\n", + "3. **Gold Report Alignment (옵션)** \n", + " - `gold_report`가 주어진 경우, 리포트 전체 수준에서 \n", + " `model_report`가 Gold 리포트와 구조·내용 면에서 얼마나 유사한지 평가합니다. \n", + "\n", + "---\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "from eval_graph import CombinedEvalState, combined_eval_app\n", + "from typing import Dict, Any, List, Optional\n", + "\n", + "\n", + "async def evaluate_report_evidence(\n", + " model_report: Dict[str, Any],\n", + " gold_report: Optional[Dict[str, Any]] = None,\n", + " question: Optional[str] = None,\n", + ") -> Dict[str, Any]:\n", + " \"\"\"\n", + " Run:\n", + " - Impact Evidence Faithfulness (per-chain, multi-source)\n", + " - Policy Attribution Consistency (per-chain, multi-source)\n", + " - (optionally) Gold vs Model report comparison\n", + " \"\"\"\n", + " question_for_gold = question or model_report.get(\"question_answer\", \"\") or \"\"\n", + " chains = model_report.get(\"influence_chains\", [])\n", + "\n", + " all_chain_results: List[Dict[str, Any]] = []\n", + " gold_eval: Optional[Dict[str, Any]] = None\n", + "\n", + " for idx, chain in enumerate(chains):\n", + " # 1) 체인별 state 구성\n", + " chain_state: CombinedEvalState = {\n", + " \"politician\": chain.get(\"politician\"),\n", + " \"policy\": chain.get(\"policy\"),\n", + " \"industry_or_sector\": chain.get(\"industry_or_sector\"),\n", + " \"companies\": chain.get(\"companies\"),\n", + " \"impact_description\": chain.get(\"impact_description\"),\n", + " \"question\": question_for_gold,\n", + " \"evidence\": chain.get(\"evidence\", []),\n", + " }\n", + "\n", + " # 2) gold vs model 비교는 질문/리포트 전체 기준이므로\n", + " if gold_report is not None:\n", + " chain_state[\"gold_report\"] = gold_report\n", + " chain_state[\"model_report\"] = model_report\n", + "\n", + " # 3) 그래프 실행\n", + " print(f\"[DEBUG] politiocian: {chain_state['politician']}, policy: {chain_state['policy']}\")\n", + " result_state = await combined_eval_app.ainvoke(chain_state)\n", + "\n", + " # 4) 체인별 결과 수집 (per-chain 단일 결과를 기대)\n", + " impact_result = result_state.get(\"impact_result\")\n", + " attribution_result = result_state.get(\"attribution_result\")\n", + "\n", + " # BaseModel이면 dict로 변환\n", + " if hasattr(impact_result, \"model_dump\"):\n", + " impact_result = impact_result.model_dump()\n", + " if hasattr(attribution_result, \"model_dump\"):\n", + " attribution_result = attribution_result.model_dump()\n", + "\n", + " all_chain_results.append(\n", + " {\n", + " \"chain_index\": idx,\n", + " \"politician\": chain.get(\"politician\"),\n", + " \"policy\": chain.get(\"policy\"),\n", + " \"industry_or_sector\": chain[\"industry_or_sector\"],\n", + " \"companies\": chain[\"companies\"],\n", + " \"impact_description\": chain[\"impact_description\"],\n", + " \"impact_result\": impact_result,\n", + " \"attribution_result\": attribution_result,\n", + " }\n", + " )\n", + "\n", + " # gold_eval 은 리포트 전체 기준이므로 한 번만 담기\n", + " if gold_report is not None and gold_eval is None:\n", + " gold_eval = result_state.get(\"gold_eval\")\n", + " if hasattr(gold_eval, \"model_dump\"):\n", + " gold_eval = gold_eval.model_dump()\n", + " \n", + "\n", + " return {\n", + " \"chain_results\": all_chain_results,\n", + " \"gold_eval\": gold_eval,\n", + " }\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 워크플로우 불러오기\n", + "평가에 사용할 워크플로우를 불러옵니다. " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from IPython.display import Image, display\n", + "from langgraph.checkpoint.memory import InMemorySaver\n", + "from deep_research.router import router_builder\n", + "\n", + "checkpointer = InMemorySaver()\n", + "full_agent = router_builder.compile(checkpointer=checkpointer)\n", + "display(Image(full_agent.get_graph(xray=-1).draw_mermaid_png()))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 워크플로우 실행\n", + "워크플로우를 실행하여 테스트셋에 대한 평가용 데이터셋을 생성합니다. " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[INFO] Already processed 19 queries\n", + "[SKIP] already processed query: 윤석열\n", + "[SKIP] already processed query: 이재명\n", + "[SKIP] already processed query: 문재인\n", + "[SKIP] already processed query: 박근혜\n", + "[SKIP] already processed query: 이명박\n", + "[SKIP] already processed query: 홍준표\n", + "[SKIP] already processed query: 안철수\n", + "[SKIP] already processed query: 이준석\n", + "[SKIP] already processed query: 심상정\n", + "[SKIP] already processed query: Joe Biden\n", + "[SKIP] already processed query: Donald Trump\n", + "[SKIP] already processed query: Xi Jinping\n", + "[SKIP] already processed query: Vladimir Putin\n", + "[SKIP] already processed query: Narendra Modi\n", + "[SKIP] already processed query: Rishi Sunak\n", + "[SKIP] already processed query: Emmanuel Macron\n", + "[SKIP] already processed query: Volodymyr Zelensky\n", + "[SKIP] already processed query: Fumio Kishida\n", + "[SKIP] already processed query: Mohammed bin Salman\n" + ] + } + ], + "source": [ + "import json\n", + "from pathlib import Path\n", + "from typing import Any, Dict\n", + "from uuid import uuid4\n", + "\n", + "from langchain_core.messages import HumanMessage\n", + "\n", + "\n", + "def extract_model_response(result: Dict[str, Any]) -> Dict[str, Any]:\n", + " \"\"\"\n", + " Extract the structured final_report object from the agent result.\n", + " \"\"\"\n", + " final_report = result.get(\"final_report\")\n", + " if isinstance(final_report, dict):\n", + " return final_report\n", + " # Fallback: just wrap as dict\n", + " return {\"final_report_raw\": final_report}\n", + "\n", + "\n", + "async def generate_model_responses_for_influence(\n", + " gold_jsonl_path: str = \"../dev_test/influence_gold.jsonl\",\n", + " output_jsonl_path: str = \"../dev_test/influence_model_responses_3.jsonl\",\n", + " base_thread_id: str = \"influence\",\n", + ") -> None:\n", + " \"\"\"\n", + " For each line in influence_gold.jsonl:\n", + " - read {\"question\": \"...\", \"gold_report\": {...}}\n", + " - call full_agent with that question\n", + " - extract final_report\n", + " - write {\"query\": question, \"gold_report\": ..., \"model_response\": ...} to output JSONL.\n", + "\n", + " If output_jsonl already has some entries, skip those queries and only run for the remaining ones.\n", + " \"\"\"\n", + " gold_path = Path(gold_jsonl_path)\n", + " out_path = Path(output_jsonl_path)\n", + "\n", + " if not gold_path.exists():\n", + " raise FileNotFoundError(f\"Gold file not found: {gold_path}\")\n", + "\n", + "\n", + " processed_queries: set[str] = set()\n", + " if out_path.exists():\n", + " with out_path.open(\"r\", encoding=\"utf-8\") as f_in:\n", + " for line in f_in:\n", + " line = line.strip()\n", + " if not line:\n", + " continue\n", + " try:\n", + " rec = json.loads(line)\n", + " except json.JSONDecodeError:\n", + " continue\n", + " q = rec.get(\"query\")\n", + " if isinstance(q, str):\n", + " processed_queries.add(q)\n", + "\n", + " print(f\"[INFO] Already processed {len(processed_queries)} queries\")\n", + "\n", + " with gold_path.open(\"r\", encoding=\"utf-8\") as fin, \\\n", + " out_path.open(\"a\", encoding=\"utf-8\") as fout:\n", + "\n", + " for idx, line in enumerate(fin):\n", + " line = line.strip()\n", + " if not line:\n", + " continue\n", + "\n", + " record = json.loads(line)\n", + " question = record.get(\"question\")\n", + " if not question:\n", + " continue\n", + "\n", + " # 이미 처리된 query면 스킵\n", + " if question in processed_queries:\n", + " print(f\"[SKIP] already processed query: {question}\")\n", + " continue\n", + "\n", + " thread_config = {\n", + " \"configurable\": {\n", + " \"thread_id\": f\"{base_thread_id}-{idx}-{uuid4()}\",\n", + " \"recursion_limit\": 50,\n", + " }\n", + " }\n", + "\n", + " print(f\"[RUN] query={question} (idx={idx})\")\n", + "\n", + " result = await full_agent.ainvoke(\n", + " {\"messages\": [HumanMessage(content=question)]},\n", + " config=thread_config,\n", + " )\n", + "\n", + " model_report = extract_model_response(result)\n", + "\n", + " out_obj = {\n", + " \"query\": question,\n", + " \"gold_report\": record.get(\"gold_report\"),\n", + " \"model_response\": model_report,\n", + " }\n", + "\n", + " fout.write(json.dumps(out_obj, ensure_ascii=False) + \"\\n\")\n", + " fout.flush()\n", + "\n", + "\n", + "await generate_model_responses_for_influence()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 리포트 평가 함수" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "import asyncio\n", + "from pathlib import Path\n", + "from typing import Set\n", + "\n", + "async def evaluate_influence_reports(\n", + " input_jsonl_path: str = \"../dev_test/influence_model_responses_3.jsonl\",\n", + " output_jsonl_path: str = \"../dev_test/influence_model_responses_eval_3.jsonl\",\n", + ") -> None:\n", + " \"\"\"\n", + " input_jsonl_path:\n", + " 각 줄이\n", + " {\n", + " \"query\": \"...\",\n", + " \"gold_report\": {...},\n", + " \"model_response\": {...}\n", + " }\n", + " 형태인 JSONL 파일.\n", + "\n", + " output_jsonl_path:\n", + " 각 줄이\n", + " {\n", + " \"query\": \"...\",\n", + " \"evaluation\": {...}\n", + " }\n", + " 형태인 JSONL 파일.\n", + " 이미 존재하면, 기존에 평가된 query는 스킵하고\n", + " 새 query만 append 한다.\n", + " \"\"\"\n", + "\n", + " in_path = Path(input_jsonl_path)\n", + " out_path = Path(output_jsonl_path)\n", + "\n", + " if not in_path.exists():\n", + " raise FileNotFoundError(f\"Input file not found: {in_path}\")\n", + "\n", + " # 1) 이미 평가된 query 읽어서 set에 저장\n", + " processed_queries: Set[str] = set()\n", + " if out_path.exists():\n", + " with out_path.open(\"r\", encoding=\"utf-8\") as f_out_read:\n", + " for line in f_out_read:\n", + " line = line.strip()\n", + " if not line:\n", + " continue\n", + " try:\n", + " rec = json.loads(line)\n", + " except json.JSONDecodeError:\n", + " continue\n", + " q = rec.get(\"query\")\n", + " if isinstance(q, str):\n", + " processed_queries.add(q)\n", + "\n", + " print(f\"[INFO] already processed {len(processed_queries)} queries\")\n", + "\n", + " # 2) output은 append 모드로 열기 (새로운 평가 결과 추가)\n", + " with in_path.open(\"r\", encoding=\"utf-8\") as fin, \\\n", + " out_path.open(\"a\", encoding=\"utf-8\") as fout:\n", + "\n", + " for idx, line in enumerate(fin):\n", + " line = line.strip()\n", + " if not line:\n", + " continue\n", + "\n", + " record = json.loads(line)\n", + "\n", + " query = record.get(\"query\")\n", + " gold_report = record.get(\"gold_report\")\n", + " model_report = record.get(\"model_response\")\n", + "\n", + " print(f\"[DEBUG] Processing line {idx}, query={query}\")\n", + " print(f\"[DEBUG] Gold report keys: {gold_report}\")\n", + " print(f\"[DEBUG] Model report keys: {model_report}\")\n", + " \n", + "\n", + " if not query or not gold_report or not model_report:\n", + " print(f\"[WARN] line {idx}: missing fields, skipping\")\n", + " continue\n", + "\n", + " # 이미 평가한 query면 스킵\n", + " if query in processed_queries:\n", + " print(f\"[SKIP] already evaluated query: {query}\")\n", + " continue\n", + " \n", + " # 평가 함수 호출\n", + " result = await evaluate_report_evidence(\n", + " model_report=model_report,\n", + " gold_report=gold_report,\n", + " question=query,\n", + " )\n", + "\n", + " out_record = {\n", + " \"query\": query,\n", + " \"evaluation\": result,\n", + " }\n", + "\n", + " fout.write(json.dumps(out_record, ensure_ascii=False) + \"\\n\")\n", + " fout.flush()\n", + "\n", + " if (idx + 1) % 10 == 0:\n", + " print(f\"[INFO] processed {idx + 1} lines\")\n", + "\n", + " print(f\"[DONE] saved eval JSONL to {out_path}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[INFO] already processed 18 queries\n", + "[DEBUG] Processing line 0, query=윤석열\n", + "[DEBUG] Gold report keys: {'report_title': '윤석열 전 대통령의 정치·경제 영향력 네트워크 분석', 'time_range': '2025년 11월 24일 기준', 'question_answer': '윤석열 전 대통령은 원전 확대 정책으로 두산에너빌리티와 한국전력 등 원전 관련 기업에 수혜를 주었으며, 동시에 원전 중심 기조는 한화솔루션의 태양광 사업에 부정적 영향을 미쳤습니다. 또한 국방비 증액과 기술 육성 정책으로 방산 및 첨단산업 기업의 성장에 기여했으며, 미국·일본과의 동맹 강화 및 중동 경제협력 확대를 통해 국제적 영향력을 도모했습니다.', 'influence_chains': [{'politician': '윤석열', 'policy': '원전 확대 정책', 'industry_or_sector': '에너지/원전', 'companies': ['두산에너빌리티'], 'impact_description': '윤석열 정부가 신한울 3·4호기 건설 등 원전 사업을 재개하면서 두산에너빌리티가 원전 주기기 제작 수주와 SMR 기술 개발 지원을 받는 등 직접적 수혜를 입었습니다:contentReference[oaicite:0]{index=0}. 글로벌 에너지 위기 속 원전 수요 증가로 해당 기업의 재무 실적도 개선되었습니다.', 'evidence': [{'source_title': '윤석열 정책 수혜주 2편] 전 두산중공업(현 두산에너빌리티), 친원전 ...', 'url': 'https://contents.premium.naver.com/richplatform/therichplatform/contents/220416185027884GB'}]}, {'politician': '윤석열', 'policy': '원전 중심 에너지정책', 'industry_or_sector': '신재생에너지/태양광', 'companies': ['한화솔루션'], 'impact_description': '원전 위주의 에너지 정책으로 국내 태양광 수요가 위축되면서 한화솔루션의 태양광 사업 실적이 부진해졌습니다. 한편 미국의 IRA 정책 등에 힘입어 한화솔루션은 베트남·미국에 투자하며 해외 시장을 공략했고, 국방 분야 SMR 추진으로 일부 수혜를 보았습니다:contentReference[oaicite:1]{index=1}:contentReference[oaicite:2]{index=2}.', 'evidence': [{'source_title': '엇갈린 K-태양광 실적⋯OCI 웃고 한화 울고', 'url': 'https://www.etoday.co.kr/news/view/2524466'}, {'source_title': '[이재명 시대, 이 기업을 주목하라]⑩ 한화솔루션ㆍOCI홀딩스', 'url': 'https://www.dnews.co.kr/uhtml/view.jsp?idxno=202507031419058310351'}]}, {'politician': '윤석열', 'policy': '국방·기술 육성 정책', 'industry_or_sector': '방위산업/첨단기술', 'companies': ['한화에어로스페이스'], 'impact_description': '윤석열 정부는 국방예산 증액과 12대 국가전략기술 육성을 추진하여 한화에어로스페이스 등 방위산업 기업의 수주 확대와 R&D 투자를 뒷받침했습니다:contentReference[oaicite:3]{index=3}:contentReference[oaicite:4]{index=4}. 이를 통해 국내 방산업체들은 첨단 무기 개발과 수출에 탄력을 받았습니다.', 'evidence': [{'source_title': '尹 취임 2년차, 정책수혜株가 뜬다…방산·원전·콘텐츠株 주목 - 한국경제', 'url': 'https://www.hankyung.com/economy/article/2023050451426'}]}], 'notes': '모든 정보는 2025년 11월 24일 기준이며, 윤석열 전 대통령의 정책들은 현재 이재명 정부에서 수정 또는 재평가되고 있습니다. 일부 데이터는 언론 보도와 간접 추론을 기반으로 합니다.'}\n", + "[DEBUG] Model report keys: {'report_title': '윤석열 대통령의 정책 및 정치적 영향력에 대한 분석 보고서', 'time_range': '2023년 ~ 2025년 12월 5일', 'question_answer': '윤석열 대통령은 주택 공급 확대, 드론 및 2차 전지 산업 지원 등 주요 정책을 통해 건설업 및 기술 산업에 영향을 미쳤으며, 탄핵 소추와 같은 정치적 사건으로 특정 기업 주가에 변동을 초래했습니다. 그러나 삼성, 현대, SK그룹 등 주요 대기업 및 로비/재정적 연계에 대한 증거는 확인되지 않았습니다.', 'influence_chains': [{'politician': '윤석열', 'policy': '주택 공급 확대 정책', 'industry_or_sector': '건설업', 'companies': ['일성건설 (Ilseong Construction)'], 'impact_description': '윤석열 정부의 주택 공급 확대 정책으로 인해 일성건설 주가가 29.95% 상승함', 'evidence': [{'source_title': 'Topstar News (Construction)', 'url': 'https://www.topstarnews.net/news/articleView.html?idxno=15895464'}]}, {'politician': '윤석열', 'policy': '드론 및 2차 전지 산업 지원 정책', 'industry_or_sector': '드론/2차 전지 산업', 'companies': ['PC Direct', 'Jungang Advanced Materials'], 'impact_description': '윤석열 정부의 드론 및 2차 전지 산업 지원 정책으로 PC Direct와 Jungang Advanced Materials가 정책 관련 기업으로 부각됨', 'evidence': [{'source_title': 'Naver News (Welbiotech)', 'url': 'https://n.news.naver.com/mnews/article/036/0000052260'}]}, {'politician': '윤석열', 'policy': '탄핵 소추', 'industry_or_sector': '주식 시장', 'companies': ['노루홀딩스 (Noroo Holdings)', '덕성 (Deoksung)', '삼부토건 (Sambu Construction)', 'NE능률 (NE Rate)', '희림 (Heelim)'], 'impact_description': '윤석열 대통령 탄핵 소추로 노루홀딩스 주가 0.60% 상승, 덕성 12.17% 하락, 삼부토건 3.31% 하락, NE능률 2.83% 하락, 희림 주가 변동 없음', 'evidence': [{'source_title': 'Gukje News (Impeachment)', 'url': 'https://www.gukjenews.com/news/articleView.html?idxno=3160824'}]}, {'politician': '윤석열', 'policy': '우크라이나 재건 테마', 'industry_or_sector': '주식 시장', 'companies': ['Welbiotech', '삼부토건 (Sambu Construction)'], 'impact_description': '우크라이나 재건 테마를 이용한 주가 조작 혐의로 Welbiotech와 삼부토건 조사 받음', 'evidence': [{'source_title': 'Naver News (Welbiotech)', 'url': 'https://n.news.naver.com/mnews/article/036/0000052260'}]}], 'notes': ''}\n", + "[SKIP] already evaluated query: 윤석열\n", + "[DEBUG] Processing line 1, query=이재명\n", + "[DEBUG] Gold report keys: {'report_title': '이재명 대통령의 정치·경제 영향력 네트워크 분석', 'time_range': '2025년 11월 24일 기준', 'question_answer': '이재명 대통령은 AI와 신재생에너지 육성 정책을 통해 삼성전자, 한화솔루션 등 미래 산업 기업들의 성장동력을 마련했으며, 남북 관계 개선 구상을 바탕으로 개성공단 입주 기업과 대북 사업 분야에도 긍정적 기대를 불러일으켰습니다. 동시에 지역화폐 지원 등 중소상공인 활성화 정책으로 핀테크 기업들의 수혜를 도모하고 있습니다.', 'influence_chains': [{'politician': '이재명', 'policy': 'AI 산업 육성 정책', 'industry_or_sector': 'ICT/인공지능', 'companies': ['네이버', 'SK텔레콤'], 'impact_description': \"이재명 정부는 'AI 3대 강국 도약'을 기치로 AI 연구개발을 적극 지원하고 있습니다. 그 결과 네이버, SK텔레콤 등 국내 AI 선도 기업들이 정부 주도 ‘국가대표 AI 기업’으로 선정되어 AI 모델 개발 프로젝트에 참여하며 주가와 투자심리가 개선되었습니다:contentReference[oaicite:5]{index=5}:contentReference[oaicite:6]{index=6}. 정부의 지속적인 지원으로 해당 기업들은 AI 인프라 확대와 글로벌 경쟁력 강화의 혜택을 보고 있습니다.\", 'evidence': [{'source_title': '이재명정부 5년 청사진 곧 등장…장밋빛전망 가득한 ‘3대 정책 수혜주’', 'url': 'https://www.ledesk.co.kr/view.php?uid=13714'}]}, {'politician': '이재명', 'policy': '신재생에너지 확대 정책', 'industry_or_sector': '에너지/신재생', 'companies': ['한화솔루션', '씨에스윈드'], 'impact_description': '탄소중립 실현과 에너지 전환 가속화 목표 아래 이재명 정부는 풍력·태양광 산업 육성에 박차를 가하고 있습니다. 이에 따라 국내 1위 태양광 기업 한화솔루션과 풍력 설비 업체 씨에스윈드 등이 정책적 지원으로 실적 개선과 성장성 확보에 긍정적 영향을 받고 있습니다:contentReference[oaicite:7]{index=7}:contentReference[oaicite:8]{index=8}. 또한 전력 인프라 분야 기업들(HD현대일렉트릭 등)도 재생에너지 확대에 따른 투자 확대 수혜주로 부각되었습니다.', 'evidence': [{'source_title': '이재명정부 5년 청사진 곧 등장…장밋빛전망 가득한 ‘3대 정책 수혜주’', 'url': 'https://www.ledesk.co.kr/view.php?uid=13714'}]}, {'politician': '이재명', 'policy': '남북 경협 재개 구상', 'industry_or_sector': '남북경협/개성공단', 'companies': ['좋은사람들', '아난티'], 'impact_description': '이재명 대통령이 남북 대화 재개와 접경지역 개발 의지를 밝힘에 따라 개성공단 재가동 등 남북경협 기대감이 높아졌습니다. 이에 개성공단에 공장을 둔 속옷 업체 좋은사람들, 금강산 관광 관련 리조트 사업을 했던 아난티 등의 주가가 급등하는 등 직접적 수혜 기대가 나타났습니다:contentReference[oaicite:9]{index=9}:contentReference[oaicite:10]{index=10}. 정부의 대북 정책 기조 변화로 이들 남북경협 테마 기업들은 향후 장기적 성과에 대한 기대를 모으고 있습니다.', 'evidence': [{'source_title': '문재인 정책株, 4대강 복원·개성공단 관련주 급등...테마주는 약세', 'url': 'https://www.thevaluenews.co.kr/news/6918'}, {'source_title': '남북관계 개선에 남북경협주 들썩', 'url': 'https://www.ledesk.co.kr/view.php?uid=13714'}]}], 'notes': '이재명 대통령의 영향력 분석은 2025년 11월 기준이며, 증권가의 기대 심리와 정책 발표에 따른 시장 반응을 기반으로 작성되었습니다. 일부 연관 기업의 실적 개선은 예상에 따른 것이며 실제 정책 효과는 향후 평가가 필요합니다.'}\n", + "[DEBUG] Model report keys: {'report_title': '이재명 대통령의 정책-산업-기업 영향력 분석', 'time_range': '2025-12-05 기준', 'question_answer': '이재명 대통령은 AI 기술 투자, 금산분리 완화, 에너지 고속도로 정책 등을 통해 SK Group, 켐트로스 등 주요 기업 및 산업과 연결되어 있습니다. SK Group은 금산분리 완화로 AI 인프라 투자 수혜를 받을 것으로 예상되며, 켐트로스는 AI 수요 증가로 HBM 소재 분야에서 성장 가능성이 있습니다. 글로벌 협력 측면에서는 소프트뱅크와의 AI 인프라 논의가 진행 중입니다.', 'influence_chains': [{'politician': '이재명', 'policy': '금산분리 (financial-industrial separation) easing', 'industry_or_sector': '금융-산업 분리 규제 완화', 'companies': ['SK Group'], 'impact_description': '금산분리 완화로 대규모 AI 인프라 투자 재원 마련 가능', 'evidence': [{'source_title': '\"금산분리 규제 완화 최대 수혜주\"…증권가 전망에 SK, 5%대 \\'강세\\'', 'url': 'https://n.news.naver.com/mnews/article/015/0005217360?sid=101'}]}, {'politician': '이재명', 'policy': 'AI and Technology', 'industry_or_sector': '반도체 소재', 'companies': ['켐트로스 (Chemtros)'], 'impact_description': 'AI 수요 증가로 HBM 관련 소재 수혜', 'evidence': [{'source_title': \"켐트로스, 'AI 데이터센터 필수' 차세대 HBM 수율 핵심 소재 양산 '주목'\", 'url': 'http://www.newsprime.co.kr/news/article.html?no=714121'}]}, {'politician': '이재명', 'policy': 'AI and Technology', 'industry_or_sector': 'AI 인프라', 'companies': ['SK Group'], 'impact_description': '글로벌 AI 인프라 협력 가능성', 'evidence': [{'source_title': '[단독] 이재명 대통령, 5일 손정의 만난다', 'url': 'https://n.news.naver.com/mnews/article/015/0005220073?sid=100'}]}], 'notes': ''}\n", + "[SKIP] already evaluated query: 이재명\n", + "[DEBUG] Processing line 2, query=문재인\n", + "[DEBUG] Gold report keys: {'report_title': '문재인 전 대통령의 정치·경제 영향력 네트워크 분석', 'time_range': '2017–2022', 'question_answer': '문재인 전 대통령은 탈원전과 그린뉴딜 정책을 추진하여 태양광·풍력 등 신재생에너지 산업을 육성했고, 4대강 보 철거와 생태 복원 정책으로 환경 관련 기업에 새로운 기회를 제공했습니다. 또한 남북 화해 기조를 바탕으로 개성공단 재가동을 모색하며 남북경협 관련 기업들의 주가에 영향을 미쳤으며, 수소경제 등 미래 산업 투자로 현대모비스 등 친환경차 부품 기업이 성장하는 계기를 마련했습니다.', 'influence_chains': [{'politician': '문재인', 'policy': '탈원전 및 재생에너지 정책', 'industry_or_sector': '에너지/태양광', 'companies': ['한화솔루션', 'OCI'], 'impact_description': '문재인 정부는 신규 원전 건설 백지화와 신재생에너지 비중 확대를 추진하여 태양광 등 친환경 에너지 업계를 부양했습니다. 이로 인해 국내 태양광 대표 기업 한화솔루션과 폴리실리콘 생산업체 OCI 등이 정부 보조금과 시장 확대의 혜택을 입어 실적이 개선되고 주가가 상승했습니다:contentReference[oaicite:11]{index=11}:contentReference[oaicite:12]{index=12}. 반면 원전 관련 산업은 위축되었으나 재생에너지 분야는 정책 지원에 힘입어 성장 기반을 마련했습니다.', 'evidence': [{'source_title': '문재인 정책株, 4대강 복원·개성공단 관련주 급등...테마주는 약세', 'url': 'https://www.thevaluenews.co.kr/news/6918'}]}, {'politician': '문재인', 'policy': '4대강 복원 정책', 'industry_or_sector': '환경/건설', 'companies': ['자연과환경', '이화공영'], 'impact_description': '4대강 사업으로 건설된 보의 생태계 영향 조사와 개방을 추진하면서, 하천 환경 복원 사업에 참여하는 자연과환경, 이화공영 등의 환경 토목 업체들이 사업 기회를 얻었습니다. 문재인 당선 직후 이러한 4대강 복원 관련주들은 강세를 보였으며:contentReference[oaicite:13]{index=13}:contentReference[oaicite:14]{index=14}, 향후 준설 및 생태 복원 공사 수주에 대한 기대감으로 주가가 크게 상승했습니다.', 'evidence': [{'source_title': '문재인 정책株, 4대강 복원·개성공단 관련주 급등...테마주는 약세', 'url': 'https://www.thevaluenews.co.kr/news/6918'}]}, {'politician': '문재인', 'policy': '남북 경협 및 개성공단 정책', 'industry_or_sector': '남북경협/제조', 'companies': ['신원', '좋은사람들'], 'impact_description': '문재인 정부의 남북 화해 기조로 개성공단 재가동과 남북 경협 확대에 대한 기대가 높아지면서, 개성공단에 생산기지를 둔 의류업체 신원과 속옷 제조사 좋은사람들 등이 큰 폭의 주가 상승을 보였습니다:contentReference[oaicite:15]{index=15}:contentReference[oaicite:16]{index=16}. 이는 남북 경제협력 재개 가능성에 따른 수혜 전망으로, 해당 기업들은 일시적으로 높은 시장 관심을 받았습니다.', 'evidence': [{'source_title': '문재인 정책株, 4대강 복원·개성공단 관련주 급등...테마주는 약세', 'url': 'https://www.thevaluenews.co.kr/news/6918'}]}, {'politician': '문재인', 'policy': '수소경제 및 혁신산업 육성', 'industry_or_sector': '미래차/배터리', 'companies': ['현대모비스', 'LG화학'], 'impact_description': '문재인 정부는 수소경제 활성화와 전기차 지원 등 혁신성장 정책을 추진하여 현대모비스 등 수소차 부품기업과 LG화학 배터리사업부(현 LG에너지솔루션) 등이 전략적 혜택을 보았습니다:contentReference[oaicite:17]{index=17}:contentReference[oaicite:18]{index=18}. 현대모비스는 수소차 핵심부품 생산라인 증설로 수혜주로 부각되었고, LG화학도 전기차 배터리 투자 확대 정책에 힘입어 글로벌 점유율 상승을 이뤘습니다.', 'evidence': [{'source_title': '문재인 대통령 신년회견 수혜株는…수소경제·스마트공장·인터넷銀', 'url': 'https://www.hankyung.com/article/2019011165741'}]}], 'notes': '본 분석은 2017년부터 2022년까지의 문재인 정부 기간을 대상으로 하였으며, 정책 발표 직후 관련 기업들의 주가 동향과 산업계 반응을 토대로 작성되었습니다. 실제 정책 효과와 기업 실적 사이에는 시차가 있을 수 있으며, 일부 평가는 예상에 기반하고 있습니다.'}\n", + "[DEBUG] Model report keys: {'report_title': '문재인 대통령의 정책-산업-기업 영향력 네트워크 분석', 'time_range': '2017–2022', 'question_answer': '문재인 대통령은 재생에너지 3020 계획, 전라남도 해상 풍력 프로젝트, 4500억 달러 반도체 계획 등 주요 정책을 통해 풍력 에너지, 해상 풍력, 반도체 산업에 영향을 미쳤으며, 유니슨, 두산중공업, KEPCO, 삼성전자, SK 하이닉스 등 기업과 연결되었습니다. 정책별 산업 및 기업 간 관계는 제공된 자료에 명시된 증거에 기반합니다.', 'influence_chains': [{'politician': '문재인', 'policy': '재생에너지 3020 계획', 'industry_or_sector': '풍력 에너지', 'companies': ['유니슨', '두산중공업'], 'impact_description': '재생에너지 3020 계획에 따라 풍력 에너지 확장(6GW → 22GW) 및 유니슨의 저풍속 터빈(U113) 시장 점유율 확대', 'evidence': [{'source_title': '이슈&인사이트] 지역균형발전을 위한 노동개혁의 새로운 로드맵’', 'url': 'https://www.ekn.kr/web/view.php?key=20251127025503780'}, {'source_title': 'Naver News Article 1', 'url': 'https://n.news.naver.com/mnews/article/009/0003941344'}]}, {'politician': '문재인', 'policy': '전라남도 해상 풍력 프로젝트', 'industry_or_sector': '해상 풍력', 'companies': ['KEPCO (Korea Electric Power Corporation)'], 'impact_description': '전라남도 해상 풍력 프로젝트(8.2GW) 지원을 위한 KEPCO와의 파트너십', 'evidence': [{'source_title': 'M-JoongAng Article', 'url': 'https://www.m-joongang.com/news/articleView.html?idxno=401825'}]}, {'politician': '문재인', 'policy': '$450B 반도체 계획', 'industry_or_sector': '반도체', 'companies': ['Samsung Electronics', 'SK Hynix'], 'impact_description': '4500억 달러 반도체 계획 및 HBM4 개발을 통한 AI 인프라 수요 증가', 'evidence': [{'source_title': 'Stratfor: South Korea’s $450 Billion Semiconductor Plan', 'url': 'https://worldview.stratfor.com/situation-report/south-korea-president-reveals-450-billion-plan-boost-chip-industry-2030'}, {'source_title': 'Joins.com: Government Launches Plan to Make Korea a Semiconductor Leader by 2030', 'url': 'https://koreajoongangdaily.joins.com/2019/04/30/economy/Government-launches-plan-to-make-Korea-a-semiconductor-leader-by-2030/3062504.html'}, {'source_title': \"Naver (HBM4 Demand): '14만전자'·'80만닉스'..반도체는 내년에도 물들어온다\", 'url': 'https://n.news.naver.com/mnews/article/052/0002282413'}]}, {'politician': '문재인', 'policy': 'ARM 학교 이니셔티브', 'industry_or_sector': '시스템 반도체', 'companies': ['Samsung Electronics', 'SK Hynix'], 'impact_description': 'ARM 학교 이니셔티브를 통한 시스템 반도체 및 팹리스 분야 인재 양성', 'evidence': [{'source_title': 'Naver (ARM School): 대통령실 \"ARM과 반도체 설계인재 1400명 키운다\"', 'url': 'https://n.news.naver.com/mnews/article/014/0005444871'}]}], 'notes': ''}\n", + "[SKIP] already evaluated query: 문재인\n", + "[DEBUG] Processing line 3, query=박근혜\n", + "[DEBUG] Gold report keys: {'report_title': '박근혜 전 대통령의 정치·경제 영향력 네트워크 분석', 'time_range': '2013–2017', 'question_answer': '박근혜 전 대통령은 창조경제와 문화융성 정책을 통해 사물인터넷·3D프린팅 등 신산업 분야 스타트업과 한류 콘텐츠 기업들의 성장을 도모했습니다. 또한 중동 순방 경제외교를 통해 대형 건설사의 해외수주를 지원했고, 부동산 활성화를 위한 규제 완화로 건설경기에 긍정적인 영향을 미쳤습니다. 그러나 최순실 사태로 일부 기업과의 부정적 연결 고리가 드러나며 정책 추진에 대한 신뢰성이 타격을 입었습니다.', 'influence_chains': [{'politician': '박근혜', 'policy': '창조경제 산업육성', 'industry_or_sector': 'ICT/신산업', 'companies': ['TPC(티피씨)', '효성ITX'], 'impact_description': '박근혜 정부는 ICT 기반 창조경제를 내세워 사물인터넷, 3D프린팅 등 4차산업혁명 관련 기업을 지원했습니다. 그 영향으로 3D 프린터 제조사 TPC 등 관련주들이 정책 발표 직후 급등하는 등 수혜를 입었고:contentReference[oaicite:19]{index=19}:contentReference[oaicite:20]{index=20}, 효성ITX 등 일부 IT기업 주가는 창조경제 언급 때마다 상승세를 보였습니다. 이는 정부의 규제 완화와 R&D 지원에 대한 기대감이 해당 기업들의 성장 모멘텀으로 작용한 사례입니다.', 'evidence': [{'source_title': \"[상반기 달군 테마주] 朴대통령 “창조경제” 발언에 사물인터넷株 '고공행진'\", 'url': 'https://www.etoday.co.kr/news/view/932921'}]}, {'politician': '박근혜', 'policy': '문화융성 정책', 'industry_or_sector': '문화콘텐츠/미디어', 'companies': ['CJ E&M', '팬엔터테인먼트'], 'impact_description': '한류 확산과 문화콘텐츠 산업 육성을 위한 문화융성 정책으로, CJ E&M과 팬엔터테인먼트 같은 드라마·예능 제작사는 정부의 펀드 조성 및 해외진출 지원에 힘입어 사업 확장에 긍정적 영향을 받았습니다:contentReference[oaicite:21]{index=21}:contentReference[oaicite:22]{index=22}. 국내 미디어 기업들은 정책 수혜 기대 속에 투자와 제작이 활성화되었으며, 문화콘텐츠 수출 증대로 이어지는 성과를 거두었습니다.', 'evidence': [{'source_title': '신정부 정책 수혜株..코스닥을 주목하라 - 뉴스토마토', 'url': 'https://www.newstomato.com/ReadNews.aspx?no=333218'}]}, {'politician': '박근혜', 'policy': '중동 순방 경제외교', 'industry_or_sector': '건설/인프라', 'companies': ['현대건설', '대우건설'], 'impact_description': '박근혜 정부 시절 적극적인 정상외교를 통해 중동지역 인프라 사업을 수주하도록 지원한 결과, 현대건설과 대우건설 등 국내 대형 건설사들이 이란·중동 시장에서 대규모 공사 계약을 체결하는 성과를 거두었습니다. 2015년 이란 방문 당시 수십조 원 규모의 MOU가 체결되는 등 이러한 경제외교는 건설주에 호재로 작용하여 주가 상승을 이끌기도 했습니다.', 'evidence': [{'source_title': '박근혜 대통령, 경제사절단과 순방 성과 논의 / YTN', 'url': 'https://www.ytn.co.kr/_ln/0101_201603171803123166'}]}, {'politician': '박근혜', 'policy': '부동산 규제 완화', 'industry_or_sector': '건설/부동산', 'companies': ['현대산업개발', '호반건설'], 'impact_description': '취득세 영구 인하, 분양가 상한제 탄력운영 등 부동산 활성화 정책을 펼치며 주택시장이 회복되자, HDC현대산업개발과 호반건설 등 국내 건설사들의 분양 실적과 주가에 긍정적 효과가 나타났습니다:contentReference[oaicite:23]{index=23}:contentReference[oaicite:24]{index=24}. 정부가 다주택자 양도세 중과 폐지 등 추가 부동산 대책을 내놓을 것이라는 전망 속에 건설업종 전반에 투자심리가 개선되었습니다.', 'evidence': [{'source_title': '신정부 정책 수혜株..코스닥을 주목하라 - 뉴스토마토', 'url': 'https://www.newstomato.com/ReadNews.aspx?no=333218'}]}], 'notes': '2013–2017년 박근혜 정부 기간을 대상으로 하였으며, 정책 발표와 해외 순방 시점의 업계 동향을 중심으로 서술했습니다. 창조경제 추진과 문화융성 정책은 초기 시장 기대를 모았으나, 말기에 불거진 국정농단 사건으로 일부 기업과 정책 간의 부정적 영향도 고려해야 합니다.'}\n", + "[DEBUG] Model report keys: {'report_title': '박근혜의 정책, 산업, 기업 연결성 및 영향력 네트워크 분석', 'time_range': '2013–2017', 'question_answer': '박근혜 전 대통령은 창조경제 정책, 기업 규제 완화 정책 등을 통해 삼성, 네이버, 현대자동차 등 주요 기업 및 산업과 연결되었으며, 미르 재단과 K-스포츠 재단을 중심으로 한 정치적 후원 네트워크를 통해 광범위한 영향력을 행사했습니다. 그러나 간접 영향력(예: 중소기업 대 재벌)이나 덜 알려진 기업과의 개인적 관계 등 일부 연결은 확인되지 않았습니다.', 'influence_chains': [{'politician': '박근혜', 'policy': '창조경제 정책', 'industry_or_sector': '기술 스타트업 및 IT 산업', 'companies': ['Samsung', 'Naver'], 'impact_description': '창조경제 정책은 기술 스타트업과 재벌 기업에 보조금을 지원하는 방식으로 영향을 미쳤으며, 국가 지원 기금을 통해 자금이 조달되었습니다. 삼성 및 네이버와의 연관성이 확인되었습니다.', 'evidence': []}, {'politician': '박근혜', 'policy': '기업 규제 완화 정책', 'industry_or_sector': '전자 및 자동차 산업', 'companies': ['Samsung', 'Hyundai'], 'impact_description': '삼성의 2015년 합병 승인과 현대자동차의 중동 계약은 정책 변화와 동시에 발생했으며, 기부 기록과 유출된 메모를 통해 상호 이익 관계가 시사됩니다.', 'evidence': []}, {'politician': '박근혜', 'policy': '정치 후원 네트워크 정책', 'industry_or_sector': '정치 후원 및 스포츠 산업', 'companies': ['Mir 재단', 'K-Sports 재단'], 'impact_description': '미르 재단과 K-스포츠 재단은 박근혜 정부의 정치적 후원자 네트워크에서 중심적인 역할을 했습니다. 사당 및 관료들이 정책-산업 연계를 촉진한 것으로 나타났습니다.', 'evidence': []}], 'notes': ''}\n", + "[SKIP] already evaluated query: 박근혜\n", + "[DEBUG] Processing line 4, query=이명박\n", + "[DEBUG] Gold report keys: {'report_title': '이명박 전 대통령의 정치·경제 영향력 네트워크 분석', 'time_range': '2008–2013', 'question_answer': '이명박 전 대통령은 4대강 개발 사업을 추진하여 삼성물산 등 대형 건설사가 대규모 토목 공사를 수주하는 혜택을 누렸으며, 해외 자원개발과 원전 수출 외교로 한국전력, 현대건설 등이 글로벌 프로젝트에 참여하는 성과를 거두었습니다. 한편 법인세 인하와 친기업 정책을 통해 대기업들의 투자 환경을 개선시켰으나, 부작용으로 부의 양극화 논란도 야기되었습니다.', 'influence_chains': [{'politician': '이명박', 'policy': '4대강 사업 추진', 'industry_or_sector': '건설/토목', 'companies': ['삼성물산', '현대건설'], 'impact_description': '이명박 정부의 4대강 정비 사업으로 국내 주요 건설사들이 대규모 준설과 보 건설 공사를 맡아 막대한 공사 물량을 수행했습니다. 특히 삼성물산은 4대강 사업 최대 수혜 기업으로 지목될 만큼 많은 공사를 수주하여 매출 증대에 기여했고:contentReference[oaicite:25]{index=25}, 현대건설을 비롯한 대형 건설사들도 토목 매출이 크게 늘어나며 단기적인 호황을 누렸습니다.', 'evidence': [{'source_title': \"4대강사업 최대 수혜는 '삼성건설'\", 'url': 'https://ko.wikipedia.org/wiki/4%EB%8C%80%EA%B0%95_%EC%A0%95%EB%B9%84_%EC%82%AC%EC%97%85'}]}, {'politician': '이명박', 'policy': '원전 수출 외교', 'industry_or_sector': '에너지/원자력', 'companies': ['한국전력', '현대건설'], 'impact_description': '2009년 이명박 정부는 UAE에 한국형 원자력발전소 4기를 수출하는 대형 계약(약 20조 원 규모)을 따냈습니다:contentReference[oaicite:26]{index=26}. 이 원전 수주 성공으로 한국전력은 글로벌 원전사업 주관사로서 국제 위상이 높아졌고, 현대건설 등 참여 건설사들은 해외 원전 건설 공사를 수행하며 수익과 기술경쟁력을 확보하는 성과를 올렸습니다. 이는 대통령의 적극적인 비즈니스 외교가 결정적인 역할을 한 사례입니다:contentReference[oaicite:27]{index=27}.', 'evidence': [{'source_title': '임종석 UAE 방문 논란…한국전력 2009년 UAE 원전 수주', 'url': 'https://weekly.chosun.com/client/news/viw.asp?ctcd=C09&nNewsNumb=002587100013'}, {'source_title': '아랍에미리트(UAE) 원전의 진실 - 동아일보', 'url': 'https://www.donga.com/news/Politics/article/all/20180106/88052120/1'}]}, {'politician': '이명박', 'policy': '법인세 인하 등 친기업 정책', 'industry_or_sector': '재계/대기업', 'companies': ['삼성전자', '현대자동차'], 'impact_description': '이명박 정부는 법인세 최고세율을 25%에서 22%로 인하하고 각종 규제를 완화하는 친기업 정책을 펼쳤습니다. 그 결과 삼성전자, 현대자동차 등 대기업들은 세 부담 경감으로 이익이 증가하고 잉여현금이 늘어나 대규모 투자와 배당을 확대했습니다. 다만 이러한 혜택은 주로 대기업에 집중되어 중소기업 및 소득분배 측면에서는 한계가 있다는 지적도 있었습니다.', 'evidence': [{'source_title': '20대 기업 법인세 부담 감소…투자 대비 배당↑', 'url': 'https://www.hankyung.com/economy/article/201301244074g'}]}], 'notes': '2008–2013년 이명박 정부 기간 동안의 주요 경제정책 영향을 정리했습니다. 당시 대규모 국책사업과 해외사업 성과에 초점을 맞추었으며, 정책의 긍정적 효과와 함께 논란이 된 부분(예: 4대강 환경 문제, 부의 편중 현상)도 존재함을 유의해야 합니다.'}\n", + "[DEBUG] Model report keys: {'report_title': '이명박 대통령의 정책-산업-기업 영향력 네트워크 분석', 'time_range': '2008–2013', 'question_answer': '이명박 대통령은 4대강 프로젝트를 통해 삼환기업 등 건설업계에 직접적인 영향을 미쳤으며, 녹색성장 정책을 통해 재생에너지 산업 전반에 간접적 영향을 준 것으로 확인됩니다. 다만, 특정 기업과의 직접적 연관성은 삼환기업을 제외하고는 명확히 입증되지 않았습니다.', 'influence_chains': [{'politician': 'Lee Myung-bak', 'policy': '4 Rivers Project', 'industry_or_sector': '건설업', 'companies': ['삼환기업'], 'impact_description': '4대강 프로젝트의 실질적인 수혜주로 지목되었으며, 토목 건설 분야에서 직접적인 혜택을 받은 것으로 확인됨', 'evidence': [{'source_title': 'Newspim: 삼환기업 and 4 Rivers Project', 'url': 'http://www.newspim.com/sub_view.php?cate1=1&cate2=3&news_id=197822'}, {'source_title': 'Naver News: 4 Rivers Project Concerns', 'url': 'https://n.news.naver.com/mnews/article/008/0005098150?sid=100'}]}, {'politician': 'Lee Myung-bak', 'policy': 'Green Growth Strategy', 'industry_or_sector': '재생에너지', 'companies': [], 'impact_description': '재생에너지 분야(태양광, 풍력) 수출 산업 육성을 위한 40조 원 투자 계획 발표. KEPCO, LSIS, Samsung SDI 등이 스마트그리드 및 재생에너지 분야에서 언급되었으나, 정책 혜택과의 직접적 연관성은 확인되지 않음', 'evidence': [{'source_title': 'Littlemachinery: Green Growth Investment Plan', 'url': 'http://www.littlemachinery.com/article-11436.html'}]}], 'notes': ''}\n", + "[SKIP] already evaluated query: 이명박\n", + "[DEBUG] Processing line 5, query=홍준표\n", + "[DEBUG] Gold report keys: {'report_title': '홍준표 대구시장의 정치·경제 영향력 네트워크 분석', 'time_range': '2025년 11월 24일 기준', 'question_answer': '홍준표 대구시장은 대구경북 통합신공항 건설 추진을 통해 대우건설, 화성산업 등 지역 건설사에 대규모 사업 참여 기회를 제공하고 있습니다. 또한 지방정부 차원의 규제 완화와 기업 유치 노력을 통해 대구 지역 산업단지의 투자 활성화를 도모하고 있습니다. 다만 강성 발언과 중앙정치와의 마찰로 정책 추진 과정에서 잡음이 발생하기도 합니다.', 'influence_chains': [{'politician': '홍준표', 'policy': '대구경북 통합신공항 건설 추진', 'industry_or_sector': '건설/지역개발', 'companies': ['대우건설', '서한'], 'impact_description': '홍준표 시장이 주도하는 대구경북 신공항 건설 사업으로 대우건설을 비롯한 지역 건설사 서한 등이 특수목적법인(SPC) 구성과 사업계획 수립 용역에 참여하고 있습니다:contentReference[oaicite:28]{index=28}. 약 11조 원 규모로 추정되는 공항 및 신도시 개발 사업은 해당 건설사들에게 막대한 수주 기회를 제공해 지역 건설경기를 부양할 것으로 기대됩니다.', 'evidence': [{'source_title': \"대우건설, TK신공항 건설 주관사 유력…'지역 3社' 화성·서한 - 경북일보\", 'url': 'https://www.kyongbuk.co.kr/news/articleView.html?idxno=4012068'}]}, {'politician': '홍준표', 'policy': '대구 산단 규제 완화 및 기업 유치', 'industry_or_sector': '지역산업/제조업', 'companies': ['삼성메디슨', '홈센타홀딩스'], 'impact_description': '홍준표 시장은 대구 국가산업단지의 규제를 완화하고 투자 인센티브를 제공하여 대기업과 중견기업을 대구로 유치하고 있습니다. 최근 삼성메디슨의 의료산업 투자 유치로 의료기기 클러스터에 활력이 돌았고, 지역 건축자재 기업 홈센타홀딩스는 신공항 수혜 기대와 산업단지 투자 확대로 성장 동력을 얻고 있습니다. 이러한 기업 유치 노력은 지역 경제 기반을 강화하는 데 기여하고 있습니다.', 'evidence': [{'source_title': '홈센타홀딩스와 홍준표 테마주: 대구 신공항과 지역 건축 자재 강자의 ...', 'url': 'https://redbluepurple.tistory.com/entry/%ED%99%8D%EC%A4%80%ED%8F%AC-%ED%85%8C%EB%A7%88%EC%A3%BC'}]}], 'notes': '홍준표 시장에 대한 분석은 2025년 말 현재 진행 중인 지역 개발 프로젝트에 초점을 맞추었으며, 중앙정부 지원 여부와 정치적 변수에 따라 사업 추진 속도가 달라질 수 있습니다. 일부 기업 언급은 향후 수혜 전망에 근거한 것입니다.'}\n", + "[DEBUG] Model report keys: {'report_title': '홍준표 의원의 정책-산업-기업 영향력 네트워크 분석', 'time_range': '2021-09-17 ~ 2025-04-16', 'question_answer': '홍준표 의원의 정책과 직접적으로 연결된 기업이나 금융적 관계는 공개된 자료에서 확인되지 않습니다. AI, 부동산, 에너지 등 산업 전반에 간접적 영향을 미칠 수 있으나, 특정 기업과의 명시적 연관성은 입증되지 않았습니다.', 'influence_chains': [{'politician': '홍준표', 'policy': 'AI 투자 계획', 'industry_or_sector': 'AI/양자 기술', 'companies': [], 'impact_description': '홍준표 의원의 AI 투자 계획은 국내 기술 기업에 잠재적 혜택을 줄 수 있으나, 특정 기업과의 직접적 연결은 확인되지 않음', 'evidence': [{'source_title': '홍준표, 5년간 50조 AI 투자·100만 주택 공급 공약', 'url': 'https://biz.chosun.com/en/en-policy/2025/04/16/I67GYSKOTBDWXNJXO7VQ5Z7M5I/'}]}, {'politician': '홍준표', 'policy': '주택 정책', 'industry_or_sector': '건설/부동산', 'companies': [], 'impact_description': '규제 완화를 통한 주택 공급 확대 정책은 건설 및 부동산 개발업체에 영향을 미칠 수 있으나, 특정 기업과의 직접적 연결은 확인되지 않음', 'evidence': [{'source_title': '홍준표, 5년간 50조 AI 투자·100만 주택 공급 공약', 'url': 'https://biz.chosun.com/en/en-policy/2025/04/16/I67GYSKOTBDWXNJXO7VQ5Z7M5I/'}]}, {'politician': '홍준표', 'policy': '탈원전 정책 폐기', 'industry_or_sector': '에너지', 'companies': [], 'impact_description': '탈원전 정책 폐기 주장은 에너지 기업에 잠재적 영향을 미칠 수 있으나, 서전기전과의 직접적 연결은 2021년 기사에서 확인되지 않음', 'evidence': [{'source_title': \"서전기전, 홍준표 '탈원전 정책 폐기' 수혜주?…시간외 주가 급등\", 'url': 'http://www.pinpointnews.co.kr/view.php?ud=202109170712182354cd1e7f0bdf_45'}]}], 'notes': ''}\n", + "[SKIP] already evaluated query: 홍준표\n", + "[DEBUG] Processing line 6, query=안철수\n", + "[DEBUG] Gold report keys: {'report_title': '안철수 의원의 정치·경제 영향력 네트워크 분석', 'time_range': '2025년 11월 24일 기준', 'question_answer': '안철수 의원은 벤처기업인 출신답게 ICT 산업과 스타트업 육성을 강조하여 안랩 등 소프트웨어 기업과 코스닥 벤처시장에 긍정적 영향을 미쳤습니다. 4차 산업혁명 및 코로나19 대응 과정에서 IT 혁신과 백신 개발 지원을 주창하며 관련 업계의 성장을 뒷받침했습니다. 다만 정치 행보에 따른 테마주 변동성도 커, 총리설 등으로 안랩 주가가 급등락하는 모습이 나타났습니다.', 'influence_chains': [{'politician': '안철수', 'policy': '소프트웨어·스타트업 육성', 'industry_or_sector': 'IT/벤처', 'companies': ['안랩', '카카오벤처스'], 'impact_description': '안철수 의원은 창업 활성화와 코딩교육 강화 등 IT 인재 양성 정책을 지속적으로 주장해왔습니다. 이러한 흐름 속에 그의 경영철학이 반영된 보안기업 안랩은 국내 소프트웨어 육성 분위기에서 꾸준한 성장을 이어갔습니다. 또한 안 의원이 벤처 생태계 조성을 강조함에 따라 카카오벤처스 등 스타트업 투자업계에도 긍정적 인식이 확산되어 투자가 활성화되는 효과가 있었습니다.', 'evidence': [{'source_title': '안랩, 소프트웨어정책 영향으로 성장세 지속', 'url': 'https://www.sisajournal.com/news/articleView.html?idxno=235310'}]}, {'politician': '안철수', 'policy': '코로나19 백신 개발 지원', 'industry_or_sector': '제약/백신', 'companies': ['SK바이오사이언스'], 'impact_description': '의사 출신인 안철수 의원은 코로나19 국면에서 국내 백신 개발의 중요성을 역설하며 범정부 지원을 촉구했습니다. 그에 따라 SK바이오사이언스는 정부로부터 임상시험 비용 지원과 행정절차 간소화 혜택을 받아 국산 백신 개발을 가속화할 수 있었고:contentReference[oaicite:29]{index=29}:contentReference[oaicite:30]{index=30}, 결과적으로 국내 백신 주권 확보와 해당 기업의 위상 제고로 이어졌습니다.', 'evidence': [{'source_title': '정부, 코로나19 치료제·백신 개발 임상 비용 940억원 지원 - 정책브리핑', 'url': 'https://www.korea.kr/news/policyNewsView.do?newsId=148878275'}]}, {'politician': '안철수', 'policy': '정치 테마주 변동', 'industry_or_sector': '주식시장/테마주', 'companies': ['안랩'], 'impact_description': '안철수 의원의 정치적 입지 변화는 최대주주로 있는 안랩 주가에 직결되었습니다. 2022년 대통령직 인수위원장 시절 ‘안철수 총리 기용설’이 돌자 안랩 주가가 보름 만에 148% 급등하며 사상 최고가를 경신했고:contentReference[oaicite:31]{index=31}, 이후 총리직 고사 소식에 9% 이상 폭락하는 등:contentReference[oaicite:32]{index=32} 정치 테마주로서 급등락을 반복했습니다. 이는 정치인의 입지가 기업가치와 시장 심리에 미친 대표적 사례입니다.', 'evidence': [{'source_title': \"'안철수 총리설'에 안랩 주가 고공행진…10년 만에 역대 최고가\", 'url': 'https://www.sisajournal.com/news/articleView.html?idxno=235310'}, {'source_title': '안철수 총리직 고사에....안랩 주가 9%대 폭락', 'url': 'https://www.chosun.com/economy/stock-finance/2022/03/30/ISPOPMI45JBQ5BEQXZE77YD7FM/'}]}], 'notes': '안철수 의원의 영향력은 기업인에서 정치인으로 변모한 특이한 경력에서 비롯되며, IT산업 정책과 주식시장 테마 양측면이 혼재되어 있습니다. 분석은 2025년 기준 공개된 자료와 시장 반응을 토대로 했습니다.'}\n", + "[DEBUG] Model report keys: {'report_title': '안철수 의원의 정책, 산업, 기업 간 영향력 네트워크 분석', 'time_range': '2025년 12월 5일 기준', 'question_answer': '안철수 의원은 AI 인프라, 인재 개발, 중소기업 경쟁력 강화를 위한 정책을 주도했으며, Rebellion, 42Maru, VAIV Company와 같은 AI 관련 기업들과 연결되었습니다. 또한 중소기업 퇴직연금 도입을 촉진하는 법안을 발의했으나, 특정 기업과의 직접적 연결은 확인되지 않았습니다. 약한 연결이나 신뢰할 수 없는 출처에 기반한 관계는 명시적으로 언급되었습니다.', 'influence_chains': [{'politician': 'Ahn Cheol-soo', 'policy': 'Government support for AI infrastructure, talent development, and SME competitiveness', 'industry_or_sector': 'AI semiconductor, AI education, AI collaboration platforms', 'companies': ['Rebellions', '42Maru', 'VAIV Company'], 'impact_description': 'Ahn Cheol-soo chaired the People Power Party’s Special Committee on Advancing Korea into a Top Three AI Power, emphasizing government support for AI infrastructure, talent development, and SME competitiveness. The companies Rebellion (AI semiconductor startup), 42Maru (AI education), and VAIV Company (AI collaboration platforms) were linked to this policy through committee meetings and presentations.', 'evidence': [{'source_title': \"Ruling Party's AI Committee: “Industrial structure must be ...”\", 'url': 'https://nairl.kr/news_13/'}]}, {'politician': 'Ahn Cheol-soo', 'policy': 'Tax deduction bill for SMEs adopting retirement pension systems', 'industry_or_sector': 'SMEs (General)', 'companies': [], 'impact_description': 'Ahn Cheol-soo proposed a tax deduction bill (20% of pension contributions) to incentivize SMEs to adopt retirement pension systems. No specific companies were named in this policy.', 'evidence': [{'source_title': '안철수 의원, 中企 퇴직연금 도입 촉진 법안 발의', 'url': 'http://www.kbiznews.co.kr/news/articleView.html?idxno=112378'}]}], 'notes': ''}\n", + "[SKIP] already evaluated query: 안철수\n", + "[DEBUG] Processing line 7, query=이준석\n", + "[DEBUG] Gold report keys: {'report_title': '이준석 전 국민의힘 대표의 정치·경제 영향력 네트워크 분석', 'time_range': '2025년 11월 24일 기준', 'question_answer': '이준석 전 대표는 2030 세대의 목소리를 대변하며 플랫폼 경제와 가상자산 등 신산업에 우호적인 태도를 보여 관련 업계 담론을 선도했습니다. 승차공유 등 모빌리티 혁신에 대한 규제 완화를 주장하여 쏘카 등 스타트업의 입지를 언급했고, 젊은 층의 관심이 높은 암호화폐 제도화 필요성을 제기하며 업비트 등 거래소에 간접적인 긍정 여론을 형성했습니다. 다만 직접 정책 집행 권한이 없어 실질 영향은 제한적이었습니다.', 'influence_chains': [{'politician': '이준석', 'policy': '공유 모빌리티 규제 완화 주장', 'industry_or_sector': '모빌리티/스타트업', 'companies': ['타다(VCNC)', '쏘카'], 'impact_description': '이준석 전 대표는 택시산업과 승차공유 서비스의 공정 경쟁을 강조하며, 스타트업 타다 금지법 통과에 반대 의견을 꾸준히 제시했습니다:contentReference[oaicite:33]{index=33}. 그의 주장들은 쏘카 등 모빌리티 플랫폼 기업이 규제 완화 여론을 얻는 데 기여했고, 관련 업계에 혁신 필요성을 환기시켰습니다. 비록 당장의 정책 변화로 이어지진 않았으나, 미래 세대 정치 담론으로 모빌리티 혁신이 부상하는 효과가 있었습니다.', 'evidence': [{'source_title': '두 달 택시 몰아본 이준석 “카풀 반대할 수밖에 없더라” - 서울신문', 'url': 'https://www.seoul.co.kr/news/newsView.php?id=20181213500020'}]}, {'politician': '이준석', 'policy': '가상자산 제도화 및 세대공감', 'industry_or_sector': '금융/가상자산', 'companies': ['업비트', '빗썸'], 'impact_description': '젊은 층의 투자열풍을 의식한 이준석 전 대표는 암호화폐 과세 유예와 제도권 편입의 필요성을 역설했습니다. 이러한 행보는 국내 최대 가상자산 거래소 업비트와 빗썸 등에게 우호적인 환경 조성으로 이어져, 관련 업계는 정치권 논의에 힘입어 일정 기간 투자심리가 개선되는 효과를 누렸습니다. 이는 정치권에서 가상자산이 공식 의제로 다뤄지는 데 일조한 사례로 평가됩니다.', 'evidence': [{'source_title': '이준석 “가상자산 과세, 청년층 의견 더 들어야” - 코인데스크코리아', 'url': 'http://www.coindeskkorea.com/news/articleView.html?idxno=75211'}]}], 'notes': '이준석 전 대표는 입법 권한은 없었지만 당대표로서 담론 형성과 여론에 영향을 미쳤습니다. 본 분석에서는 그의 주장과 이에 따른 산업계 분위기 변화를 다루었으며, 실제 정책 실현 여부와는 구분됩니다.'}\n", + "[DEBUG] Model report keys: {'report_title': '이준석의 정책 및 영향력 네트워크 분석', 'time_range': '2021–2025', 'question_answer': '이준석은 민생회복 소비쿠폰 정책 비판과 공영방송 규제 완화 주장과 같은 경제 및 미디어 관련 정책 입장을 보였으나, 특정 산업이나 기업과의 직접적 연결은 확인되지 않았습니다. 그의 영향력은 주로 정책 비판과 경제 경고에 집중되어 있습니다.', 'influence_chains': [{'politician': '이준석', 'policy': '민생회복 소비쿠폰 정책 비판', 'industry_or_sector': '경제 정책', 'companies': [], 'impact_description': '민생회복 소비쿠폰 정책이 인플레이션을 악화시킬 수 있다는 비판을 제기하며, 장기적 재정 위험을 경고함. 특정 산업이나 기업과의 직접적 연결은 확인되지 않음.', 'evidence': [{'source_title': 'Wikipedia', 'url': 'https://ko.wikipedia.org/wiki/%EC%9D%B4%EC%A4%80%EC%84%9D'}]}, {'politician': '이준석', 'policy': '공영방송 규제 완화 주장', 'industry_or_sector': '미디어 산업', 'companies': [], 'impact_description': '공영방송의 재정적 안정성을 개선하기 위한 규제 완화를 주장함. 특정 기업과의 연결은 언급되지 않음.', 'evidence': [{'source_title': 'Naver News', 'url': 'https://n.news.naver.com/mnews/article/088/0000983620'}]}], 'notes': ''}\n", + "[SKIP] already evaluated query: 이준석\n", + "[DEBUG] Processing line 8, query=심상정\n", + "[DEBUG] Gold report keys: {'report_title': '심상정 의원의 정치·경제 영향력 네트워크 분석', 'time_range': '2025년 11월 24일 기준', 'question_answer': '심상정 의원은 노동존중 사회를 기치로 최저임금 인상과 비정규직의 정규직화 등을 주도하며 대기업의 무노조 경영을 강하게 비판해 삼성전자 등 기업의 노동관행 변화를 촉구했습니다. 또한 그린뉴딜과 탈탄소 정책을 앞장서 제안하여 석탄발전 축소와 재생에너지 확대에 영향을 미쳤습니다. 이처럼 노동·환경 분야에서 진보적 의제를 선도하며 관련 기업들의 경영 전략에도 일정 부분 자극을 주었습니다.', 'influence_chains': [{'politician': '심상정', 'policy': '노조할 권리 보장 투쟁', 'industry_or_sector': '대기업/노동', 'companies': ['삼성전자'], 'impact_description': \"심상정 의원은 국회에서 삼성의 '무노조 경영'을 집요하게 문제삼으며 2013년 삼성의 노조탄압 문건을 폭로하는 등 노조할 권리 보장에 앞장섰습니다:contentReference[oaicite:34]{index=34}. 이러한 노력은 삼성전자에 노조 설립이 현실화되는 계기를 마련했고, 법원도 삼성의 조직적 노조와해 행위를 유죄로 인정하여 삼성으로 하여금 무노조 경영 원칙을 폐기하고 노동조합을 받아들이도록 압력을 가했습니다:contentReference[oaicite:35]{index=35}:contentReference[oaicite:36]{index=36}.\", 'evidence': [{'source_title': \"심상정이 노동절 앞두고 또다시 '삼성' 지목한 이유 - 오마이뉴스\", 'url': 'http://www.ohmynews.com/NWS_Web/View/at_pg.aspx?CNTN_CD=A0002429571'}, {'source_title': '심상정 “삼성 노조와해 유죄…반헌법적 무노조 황제경영 원칙 폐기해야”', 'url': 'http://www.lawleader.co.kr/news/articleView.html?idxno=3823'}]}, {'politician': '심상정', 'policy': '최저임금 인상 및 정규직화', 'industry_or_sector': '소매/서비스', 'companies': ['이마트', 'CJ대한통운'], 'impact_description': '정의당의 심상정 의원은 최저임금의 가파른 인상을 강력히 지지하고 공공부문 비정규직의 정규직 전환을 추진했습니다. 그 결과 대형마트 이마트는 급격한 인건비 상승으로 무인계산대 도입 등 구조조정을 검토하게 되었고, 택배회사 CJ대한통운은 분류인력 직고용 등 고용구조 변화를 단행했습니다. 이처럼 노동자의 처우 개선 정책은 해당 기업들의 비용 구조와 운영 방식에 직접적 영향을 미쳤습니다.', 'evidence': [{'source_title': '심상정 의원 “최저임금 1만원 시대, 대기업도 사회적 책임 다해야”', 'url': 'https://www.khan.co.kr/economy/economy-general/article/201807181453001'}]}, {'politician': '심상정', 'policy': '녹색뉴딜·탈탄소 정책', 'industry_or_sector': '에너지/환경', 'companies': ['한국남동발전', '두산중공업'], 'impact_description': '심상정 의원은 일찍이 Green New Deal을 주장하며 석탄발전소 폐쇄와 재생에너지 전환을 촉구했습니다. 이로 인해 석탄 발전을 주력으로 하던 한국남동발전은 영흥화력 등의 조기 폐지와 LNG 전환 계획을 수립했고, 원전·석탄 플랜트 기업 두산중공업(현 두산에너빌리티)은 정부의 탈석탄 기조 속에서 경영 위기를 겪기도 했으나 이후 신재생 사업으로 사업 방향을 선회했습니다. 이러한 변화는 진보정당의 환경 의제 선도가 기업 전략 재편에 영향을 준 사례입니다.', 'evidence': [{'source_title': '심상정 “2050 탄소중립 위해 석탄발전 중단 로드맵 시급”', 'url': 'https://www.edaily.co.kr/news/read?newsId=03715206625924472&mediaCodeNo=257'}]}], 'notes': '심상정 의원의 영향력은 입법보다는 의제 설정과 여론 압박을 통한 간접적인 효과가 크며, 본 분석에서는 노동·환경 분야에서 기업에 미친 영향을 위주로 서술했습니다. 정치인의 발언과 실제 정책 실현 간에는 차이가 있을 수 있습니다.'}\n", + "[DEBUG] Model report keys: {'report_title': '심상정 후보의 정치경제적 영향력 네트워크 분석', 'time_range': '2021-11-01 ~ 2025-12-05', 'question_answer': '심상정 후보는 주4일제 도입, 재생에너지 확대, 사회복지 강화 등 주요 정책을 통해 노동권, 기후정의, 사회복지 분야에서 영향력을 행사하고 있습니다. 한국전력, 태양광/풍력 산업, 의료/고탄소 산업, 전국사회복지유니온 등과 직접적 또는 간접적으로 연결되어 있으며, 기업은행(IBK)과의 연결은 간접적입니다. SK이노베이션, 현대자동차 등과의 연결성은 증거가 부족합니다.', 'influence_chains': [{'politician': '심상정', 'policy': '재생에너지 확대', 'industry_or_sector': '재생에너지', 'companies': ['한국전력'], 'impact_description': '한국전력 산하 발전자회사 통합 및 재생에너지 공사 설립 계획에 명시됨', 'evidence': [{'source_title': '정의당 심상정 대선 후보, 주4일제 공약 발표', 'url': 'https://www.yna.co.kr/view/AKR20211101155300001'}, {'source_title': '심상정 후보, 주4일제 및 기후정의 정책 발표', 'url': 'https://www.youtube.com/watch?v=QevxOaO-WSA'}, {'source_title': '심상정 후보의 노동정책 요약', 'url': 'https://www.laborplus.co.kr/news/articleView.html?idxno=11126'}, {'source_title': '심상정 후보의 에너지 전환 공약', 'url': 'https://imnews.imbc.com/news/2021/politics/article/6323751_34866.html'}]}, {'politician': '심상정', 'policy': '재생에너지 확대', 'industry_or_sector': '재생에너지', 'companies': ['태양광/풍력 산업'], 'impact_description': '재생에너지 확대 정책의 직접적 수혜', 'evidence': [{'source_title': '정의당 심상정 대선 후보, 주4일제 공약 발표', 'url': 'https://www.yna.co.kr/view/AKR20211101155300001'}, {'source_title': '심상정 후보, 주4일제 및 기후정의 정책 발표', 'url': 'https://www.youtube.com/watch?v=QevxOaO-WSA'}, {'source_title': '심상정 후보의 노동정책 요약', 'url': 'https://www.laborplus.co.kr/news/articleView.html?idxno=11126'}, {'source_title': '심상정 후보의 에너지 전환 공약', 'url': 'https://imnews.imbc.com/news/2021/politics/article/6323751_34866.html'}]}, {'politician': '심상정', 'policy': '주4일제 도입', 'industry_or_sector': '금융', 'companies': ['기업은행(IBK)'], 'impact_description': '국책은행 중 주4일제 도입 추진 중이지만 정책 직접 연결성 없음', 'evidence': [{'source_title': '정의당 심상정 대선 후보, 주4일제 공약 발표', 'url': 'https://www.yna.co.kr/view/AKR20211101155300001'}]}, {'politician': '심상정', 'policy': '주4일제 도입', 'industry_or_sector': '의료/고탄소', 'companies': ['의료/고탄소 산업'], 'impact_description': '주4일제 시범 대상 산업', 'evidence': [{'source_title': '심상정 후보, 주4일제 및 기후정의 정책 발표', 'url': 'https://www.youtube.com/watch?v=QevxOaO-WSA'}, {'source_title': '심상정 후보의 주4일제 공약 분석', 'url': 'https://www.hani.co.kr/arti/politics/politics_general/1021320.html'}]}, {'politician': '심상정', 'policy': '사회복지사 처우 개선', 'industry_or_sector': '사회복지', 'companies': ['전국사회복지유니온'], 'impact_description': '사회복지사 처우 개선을 위한 정책 협약 체결', 'evidence': [{'source_title': '심상정 후보와 전국사회복지유니온 협약', 'url': 'http://www.gokorea.kr/news/articleView.html?idxno=16908'}]}], 'notes': ''}\n", + "[SKIP] already evaluated query: 심상정\n", + "[DEBUG] Processing line 9, query=Joe Biden\n", + "[DEBUG] Gold report keys: {'report_title': 'Joe Biden 미국 대통령의 정치·경제 영향력 네트워크 분석', 'time_range': '2021–2025년 11월 24일 기준', 'question_answer': '조 바이든 대통령은 인플레이션 감축법(IRA)과 반도체 지원법(CHIPS Act) 등 대규모 산업 육성 정책을 통해 미국 내 전기차·배터리 및 반도체 기업에 막대한 지원을 제공했습니다. 이로써 Tesla와 LG Energy Solution 등이 세액공제 혜택으로 생산 투자를 늘리고, Intel과 TSMC는 첨단 공장 건설에 나섰습니다. 또한 동맹국들과 협력하여 글로벌 공급망을 재편하고, 친환경 에너지 전환을 추진함으로써 관련 기업들의 성장을 견인하고 있습니다.', 'influence_chains': [{'politician': 'Joe Biden', 'policy': '인플레이션 감축법(IRA)', 'industry_or_sector': '전기차/배터리', 'companies': ['Tesla', 'LG Energy Solution'], 'impact_description': '2022년 제정된 IRA는 북미산 전기차에 대한 세액공제 혜택을 부여하여 Tesla 등 미국 전기차 제조사의 판매 경쟁력을 높였습니다. 또한 배터리 핵심광물 요건을 정함으로써 LG Energy Solution 등 한국 배터리 업체가 미국 현지공장 투자를 확대하도록 유인했습니다:contentReference[oaicite:37]{index=37}:contentReference[oaicite:38]{index=38}. 그 결과 Tesla는 미국 시장 점유율을 공고히 했고 LG에너지솔루션은 현지 생산을 늘려 IRA 인센티브를 확보하는 등 양사 모두 수혜를 입었습니다.', 'evidence': [{'source_title': '\"미국이 제조업 미래 가질 것\"…바이든, 연일 \\'IRA 성과\\' 자축', 'url': 'https://news.nate.com/view/20220915n03449'}, {'source_title': 'LG엔솔, 美 IRA 훈풍 업고 600MWh급 ESS 수주 - 글로벌이코노믹', 'url': 'https://m.g-enews.com/article/Industry/2023/07/20230707113056852699375367'}]}, {'politician': 'Joe Biden', 'policy': 'CHIPS 및 과학법', 'industry_or_sector': '반도체/제조', 'companies': ['Intel', 'TSMC'], 'impact_description': '2022년 통과된 CHIPS Act를 통해 미국은 반도체 공장 건설에 527억 달러 보조금을 투입하여 자국 내 생산을 장려했습니다. 이에 Intel은 오하이오 등에 신규 팹 건설을 발표했고, TSMC도 애리조나에 첨단 파운드리 공장을 착공하는 등 적극 호응했습니다. 이 법안은 미국 내 반도체 생산능력 확충으로 공급망 안보를 강화하고, 관련 기업들에게 대규모 투자를 촉발하는 효과를 가져왔습니다.', 'evidence': [{'source_title': '바이든, \"메이드 인 아메리카 반도체\" 인텔 공장 방문', 'url': 'https://www.voakorea.com/a/biden-intel-ohio-chips/6359882.html'}, {'source_title': 'TSMC, 미국 애리조나에 3나노 공장 추가 투자', 'url': 'https://www.bbc.com/korean/news-63896506'}]}, {'politician': 'Joe Biden', 'policy': '동맹 공급망 및 친환경 정책', 'industry_or_sector': '에너지/인프라', 'companies': ['General Motors', 'First Solar'], 'impact_description': '바이든 대통령은 동맹국들과 협력하여 핵심 광물 공급망을 구축하고 친환경 인프라 투자를 확대했습니다. 이를 통해 General Motors는 호주·캐나다 업체와 배터리 핵심광물 공급 계약을 맺어 전기차 생산을 안정화했고, 태양광 패널 기업 First Solar는 IRA의 재생에너지 투자 세액공제에 힘입어 미국 내 신규 공장을 건설했습니다. 이 같은 국제 공조와 친환경 정책은 관련 기업들의 장기적 성장 기반을 강화했습니다.', 'evidence': [{'source_title': '바이든, 호주·캐나다와 핵심광물 동맹 강화…GM 리튬 확보', 'url': 'https://www.reuters.com/business/autos-transportation/gm-signs-lithium-supply-agreement-with-australias-controlled-thermal-resources-2021-07-02/'}, {'source_title': 'First Solar, IRA 타고 미 남부에 태양광 패널 공장 신설', 'url': 'https://www.nytimes.com/2023/08/11/business/energy-environment/first-solar-manufacturing-ira.html'}]}], 'notes': '2021년 취임 이후 바이든 행정부의 주요 경제정책에 따른 기업 영향을 분석했습니다. 대규모 재정 지원 법안들은 아직 진행 중인 사안으로, 여기서 언급된 효과는 2025년 현재 가시화된 초기 성과를 토대로 작성되었습니다.'}\n", + "[DEBUG] Model report keys: {'report_title': '조 바이든의 정책-산업-기업 영향력 네트워크 분석', 'time_range': '2021–2024', 'question_answer': '조 바이든 대통령은 주요 정책(인프라, 반도체, 기후, 의료)을 통해 다양한 산업 및 기업과 연결되어 있습니다. 인프라 법에는 Bechtel, Siemens 등이, CHIPS 법안에는 Intel, TSMC 등이, 인플레이션 감축법에는 LG Chem, Syrah Resources 등이, 의료 정책에는 UnitedHealth, Merck 등이 관련되어 있습니다. 로비 및 기부 활동이 확인되었으나, 연방 계약자 기부 금지 규정으로 인해 직접적 연결은 제한적입니다.', 'influence_chains': [{'politician': '조 바이든', 'policy': '양당 인프라 법(Bipartisan Infrastructure Law)', 'industry_or_sector': '인프라/건설', 'companies': ['Bechtel', 'Siemens', 'Union Pacific', 'Amtrak'], 'impact_description': \"조 바이든 대통령의 '양당 인프라 법(Bipartisan Infrastructure Law)'은 1.2조 달러 규모의 인프라 투자를 통해 도로, 교량, 전기 그리드, 전기차 충전소 등 다양한 분야에서 Bechtel, Siemens, Union Pacific, Amtrak 등의 기업이 참여하고 있습니다. 이 정책은 미국 전역의 인프라 현대화를 목표로 하며, 해당 기업들은 정부 계약자로서 프로젝트에 참여하고 있습니다.\", 'evidence': [{'source_title': 'Wikipedia – Infrastructure Investment and Jobs Act', 'url': 'https://en.wikipedia.org/wiki/Infrastructure_Investment_and_Jobs_Act'}, {'source_title': 'BlueGreen Alliance – User Guide to the Bipartisan Infrastructure Law', 'url': 'https://www.bluegreenalliance.org/site/a-user-guide-to-the-bipartisan-infrastructure-law-bil/'}, {'source_title': 'Forbes – Everything in the $1.2 Trillion Infrastructure Bill', 'url': 'https://www.forbes.com/sites/jonathanponciano/2021/11/15/everything-in-the-12-trillion-infrastructure-bill-biden-just-signed-new-roads-electric-school-buses-and-more/'}, {'source_title': 'Datex Corporation – Overview of the Bipartisan Infrastructure Law', 'url': 'https://datexcorp.com/overview-bipartisan-infrastructure-law/'}, {'source_title': 'Build.gov – Guidebook to the Bipartisan Infrastructure Law', 'url': 'https://bidenwhitehouse.archives.gov/build/guidebook/'}]}, {'politician': '조 바이든', 'policy': 'CHIPS and Science Act', 'industry_or_sector': '반도체', 'companies': ['Intel', 'TSMC'], 'impact_description': \"조 바이든 대통령의 'CHIPS and Science Act'는 반도체 산업 지원을 위해 Intel, TSMC 등에 자금을 지원하고 있습니다. 반도체 업계는 환경 규제 완화를 요구하며 바이든 행정부에 로비를 진행했으나, 특정 계약자나 로비스트와의 직접적 연결은 확인되지 않았습니다.\", 'evidence': [{'source_title': 'Politico – Lobbyists to Biden: Unless You Want to Cede to China, Relax Environmental Rules', 'url': 'https://www.politico.com/news/2023/02/27/with-billions-at-stake-chip-lobby-pushes-biden-to-waive-enviro-rules-00084390'}]}, {'politician': '조 바이든', 'policy': '인플레이션 감축법(Inflation Reduction Act)', 'industry_or_sector': '청정 에너지/전기차', 'companies': ['LG Chem', 'Syrah Resources', 'Ioneer'], 'impact_description': \"조 바이든 대통령의 '인플레이션 감축법(Inflation Reduction Act)'은 청정 에너지 및 전기차 분야에서 LG Chem, Syrah Resources, Ioneer 등의 기업에 자금을 지원하고 있습니다. 이 정책은 탄소 중립 목표 달성을 위해 배터리 및 광물 공급망 확대를 추진하고 있습니다.\", 'evidence': [{'source_title': 'Biden’s Climate Bill: Inflation Reduction Act', 'url': 'https://www.theguardian.com/us-news/2023/aug/11/biden-climate-bill-inflation-reduction-act'}]}, {'politician': '조 바이든', 'policy': 'ACA 확장 및 인플레이션 감축법', 'industry_or_sector': '의료/제약', 'companies': ['UnitedHealth', 'Kaiser Permanente', 'Merck', 'Moderna'], 'impact_description': \"조 바이든 대통령의 'ACA(Patient Protection and Affordable Care Act) 확장' 정책은 UnitedHealth, Kaiser Permanente 등의 기업과 연결되어 있습니다. 또한, '인플레이션 감축법'을 통한 의약품 가격 개혁 정책은 Merck, Moderna 등의 제약사와 관련이 있으며, 해당 기업들은 바이든 캠페인에 기부하거나 로비를 진행했습니다.\", 'evidence': [{'source_title': 'Pharmaceuticals / Health Products Lobbying', 'url': 'https://www.opensecrets.org/industries/lobbying?cycle=2024&ind=H04'}, {'source_title': 'Healthcare Executives Favored Biden in 2020', 'url': 'https://politicalaccountability.net/hifi/files/CPA---Business-Insider---We-combed-through-records-of-100-healthcare-companies-L-L----10-30-20---CPA-quoted.pdf'}]}], 'notes': ''}\n", + "[SKIP] already evaluated query: Joe Biden\n", + "[DEBUG] Processing line 10, query=Donald Trump\n", + "[DEBUG] Gold report keys: {'report_title': 'Donald Trump 전 미국 대통령의 정치·경제 영향력 네트워크 분석', 'time_range': '2017–2021', 'question_answer': '도널드 트럼프 전 대통령은 대규모 감세와 규제 완화 정책으로 Apple, JPMorgan Chase 등 미국 대기업들의 순이익 증가와 투자 여력을 확대시켰습니다. 한편 미국 우선주의에 입각한 관세 부과와 무역전쟁을 통해 철강·에너지 업계를 보호하여 U.S. Steel 등의 국내 기업이 수혜를 입었지만, 글로벌 공급망 긴장으로 일부 제조업에는 불확실성을 초래했습니다. 전반적으로 친기업 기조로 단기 주가 상승과 고용 호조를 이끌었으나 무역갈등의 부작용도 야기되었습니다.', 'influence_chains': [{'politician': 'Donald Trump', 'policy': '2017년 감세정책', 'industry_or_sector': '대기업/금융', 'companies': ['Apple', 'JPMorgan Chase'], 'impact_description': '트럼프 행정부는 2017년 말 법인세 최고세율을 35%에서 21%로 대폭 인하하는 감세법안을 통과시켰습니다. 이로 인해 Apple은 해외유보금 약 2500억 달러를 본국으로 송환하여 주주배당과 자사주 매입을 확대했고, JPMorgan Chase 등 대형 은행들은 세금 부담 감소로 순이익이 크게 증가하여 신규 대출과 인력 채용을 늘렸습니다. 감세정책은 월가와 기업들의 투자 심리를 자극하며 증시 활황으로 이어졌습니다.', 'evidence': [{'source_title': 'Apple, 세제혜택으로 100조원 규모 자사주 매입 발표', 'url': 'https://www.cnbc.com/2018/05/01/apple-will-buy-back-100-billion-in-stock-and-boost-dividend.html'}, {'source_title': '미국 은행들, 법인세 인하로 수익 급증', 'url': 'https://www.wsj.com/articles/tax-law-delivers-a-million-dollar-boost-to-big-banks-ceos-11550527000'}]}, {'politician': 'Donald Trump', 'policy': '무역전쟁 및 관세 정책', 'industry_or_sector': '철강/제조', 'companies': ['U.S. Steel', 'Harley-Davidson'], 'impact_description': '트럼프 전 대통령은 2018년부터 중국을 비롯한 교역국에 대한 관세부과로 무역전쟁을 전개했습니다. 특히 수입 철강에 25% 관세를 매겨 U.S. Steel 등 미 철강사들이 내수 가격 상승으로 단기적 호황을 누렸습니다. 그러나 중국의 보복관세로 모터사이클 제조사 할리데이비슨은 유럽 판매가격 급등으로 생산 일부를 해외로 이전하는 등 어려움을 겪었습니다. 보호무역 조치는 일부 제조업에 이익이 되었지만 다른 기업에는 비용 부담과 시장 축소를 초래했습니다.', 'evidence': [{'source_title': '미국 철강업, 관세 덕에 반짝 호황', 'url': 'https://www.bloomberg.com/news/articles/2018-08-01/u-s-steel-s-profit-swells-as-trump-tariffs-add-momentum-to-rally'}, {'source_title': '할리데이비슨, EU 관세에 일부 생산 해외 이전 결정', 'url': 'https://www.bbc.com/news/business-44595070'}]}, {'politician': 'Donald Trump', 'policy': '에너지산업 지원 정책', 'industry_or_sector': '석유/가스', 'companies': ['ExxonMobil', 'Chevron'], 'impact_description': '트럼프 정부는 파리기후협약 탈퇴와 환경규제 완화로 화석연료 산업을 적극 지원했습니다. 연방 토지의 원유 시추 제한을 풀고 송유관 건설을 승인하여 ExxonMobil과 Chevron 같은 석유 대기업이 신규 유전 개발과 생산량 증대에 나설 수 있었습니다. 이로 인해 미국은 2018년 세계 1위 산유국이 되었고 관련 기업들의 매출과 이익이 증가했습니다. 다만 탄소배출 증가에 따른 국제사회 비판도 함께 야기되었습니다.', 'evidence': [{'source_title': '미국, 2018년 세계 최대 산유국 등극…셰일 혁명과 트럼프 정책 영향', 'url': 'https://www.eia.gov/todayinenergy/detail.php?id=37053'}, {'source_title': '트럼프, 키스톤XL 송유관 부활…에너지 업계 환영', 'url': 'https://www.reuters.com/article/us-usa-pipeline-keystone-idUSKBN1582OH'}]}], 'notes': '2017–2021년 트럼프 행정부 시기의 경제정책 영향을 정리했습니다. 친기업 조치로 단기적인 주가 및 고용 지표 개선이 있었지만, 무역갈등 등 장기적 파장도 초래하여 평가가 엇갈립니다. 언급된 사례들은 대표적인 긍정·부정 효과를 보여주는 기업들입니다.'}\n", + "[DEBUG] Model report keys: {'report_title': '도널드 트럼프의 정책, 산업, 기업 간 영향력 네트워크 분석', 'time_range': '2017–2025', 'question_answer': '도널드 트럼프는 Tax Cuts and Jobs Act (2017), 규제 완화, 무역 정책 등을 통해 제약, 금융, 로봇공학, 방위 산업과 연결되었으며, Pfizer, Goldman Sachs, Tesla, Vulcan Elements 등의 기업이 주요 혜택을 받았습니다. 트럼프 주니어의 1789 Capital은 연방 계약을 획득한 방위 기업에 투자했습니다.', 'influence_chains': [{'politician': 'Donald Trump', 'policy': 'Tax Cuts and Jobs Act (2017)', 'industry_or_sector': '제약', 'companies': ['Pfizer'], 'impact_description': '제약 산업인 Pfizer는 세금 감면으로 40억 달러의 세금 절감 효과를 얻었습니다.', 'evidence': [{'source_title': 'Wikipedia: Tax Cuts and Jobs Act', 'url': 'https://en.wikipedia.org/wiki/Tax_Cuts_and_Jobs_Act'}, {'source_title': 'Marketplace: Corporate Lobbying and TCJA', 'url': 'https://www.marketplace.org/story/2020/01/03/how-corporate-lobbying-changed-the-2017-tax-overhaul'}]}, {'politician': 'Donald Trump', 'policy': 'Tax Cuts and Jobs Act (2017)', 'industry_or_sector': '금융', 'companies': ['Goldman Sachs'], 'impact_description': '금융 산업인 Goldman Sachs는 규제 완화로 이익을 얻었습니다.', 'evidence': [{'source_title': 'Marketplace: Corporate Lobbying and TCJA', 'url': 'https://www.marketplace.org/story/2020/01/03/how-corporate-lobbying-changed-the-2017-tax-overhaul'}]}, {'politician': 'Donald Trump', 'policy': '규제 완화', 'industry_or_sector': '로봇공학', 'companies': ['Tesla'], 'impact_description': '로봇공학 산업인 Tesla는 트럼프 행정부의 제조업 지원 정책 아래 Optimus 로봇을 홍보했습니다.', 'evidence': [{'source_title': 'Naver News 1: U.S.-China Robotics Rivalry', 'url': 'https://n.news.naver.com/mnews/article/008/0005287528'}]}, {'politician': 'Donald Trump', 'policy': '규제 완화', 'industry_or_sector': '방위', 'companies': ['Vulcan Elements', 'Firehawk Aerospace', 'Unusual Machines'], 'impact_description': '방위 산업인 Vulcan Elements, Firehawk Aerospace, Unusual Machines는 트럼프 주니어의 1789 Capital 투자 후 연방 계약을 획득했습니다.', 'evidence': [{'source_title': 'Naver News 2: Trump Jr.’s 1789 Capital and Federal Contracts', 'url': 'https://n.news.naver.com/mnews/article/018/0006177694'}]}], 'notes': ''}\n", + "[SKIP] already evaluated query: Donald Trump\n", + "[DEBUG] Processing line 11, query=Xi Jinping\n", + "[DEBUG] Gold report keys: {'report_title': 'Xi Jinping 중국 국가주석의 정치·경제 영향력 네트워크 분석', 'time_range': '2012–2025년 11월 24일 기준', 'question_answer': '시진핑 주석은 일대일로 전략을 통해 중국 국영 건설기업들의 해외 인프라 수주를 획기적으로 늘렸고, 기술굴기 정책으로 SMIC 등 반도체 기업의 자립을 추진했습니다. 동시에 공동부유 기치 아래 빅테크 기업들에 대한 강도 높은 규제를 단행하여 Alibaba와 Tencent의 성장에 제동을 걸었습니다. 이러한 정책들은 중국 경제에 국가의 역할을 강화하여 국유기업이 부상하고 민영 기술기업은 구조조정과 사회공헌 압력을 받는 등 명암이 교차하는 영향을 미쳤습니다.', 'influence_chains': [{'politician': 'Xi Jinping', 'policy': '일대일로(一带一路) 전략', 'industry_or_sector': '해외인프라/건설', 'companies': ['중국교통건설공사(CCCC)', '중국철도건설공사(CRCC)'], 'impact_description': '2013년 시작된 시진핑 주석의 일대일로 구상은 아시아, 아프리카, 유럽의 140여 개국에 걸친 대규모 인프라 투자로, 중국교통건설공사와 중국철도건설공사 같은 국영 건설사가 해외 도로·항만·철도 공사를 대거 수주하는 결과를 낳았습니다. 예컨대 CCCC는 파키스탄 과다르 항만과 아프리카 여러 나라의 도로 건설을 수행했고, CRCC는 동남아 고속철 등 프로젝트를 맡아 매출 급증과 국제적 영향력 확대를 누렸습니다.', 'evidence': [{'source_title': \"중국 '일대일로' 10년, 누적 투자 1천조 돌파\", 'url': 'https://www.xinhuanet.com/english/2023-08/17/c_1319807381.htm'}, {'source_title': 'Rail giant CRCC thrives on Belt and Road projects', 'url': 'https://www.globaltimes.cn/content/1207394.shtml'}]}, {'politician': 'Xi Jinping', 'policy': '빅테크 규제와 공동부유', 'industry_or_sector': '인터넷/플랫폼', 'companies': ['Alibaba', 'Tencent'], 'impact_description': '2020년 말 Ant그룹 상장 중단을 시작으로 시진핑 정부는 플랫폼 독점과 자본확장을 억제하기 위한 빅테크 규제를 본격화했습니다. 이에 따라 알리바바는 독점행위로 182억 위안(약 3조원)의 과징금을 부과받았고:contentReference[oaicite:39]{index=39}:contentReference[oaicite:40]{index=40}, 텐센트 역시 신규 게임 서비스 인가 지연과 반독점 조사로 성장세가 둔화되었습니다. 이 공동부유 기조 속에 두 기업은 수익의 사회 환원을 확대하고 사업 구조를 보수적으로 조정하게 되어, 중국 인터넷 업계 전반에 걸쳐 긴장과 변화가 일어났습니다.', 'evidence': [{'source_title': '中, 알리바바에 반독점법 위반 벌금 3조원 부과…사상최대 규모', 'url': 'https://news.nate.com/view/20210410n02051'}, {'source_title': '중국 게임산업 규제에 텐센트 실적 타격', 'url': 'https://www.reuters.com/technology/tencent-quarterly-revenue-falls-first-time-weaker-ad-gaming-sales-2022-08-17/'}]}, {'politician': 'Xi Jinping', 'policy': '기술굴기와 자립화', 'industry_or_sector': '반도체/통신', 'companies': ['SMIC', '화웨이'], 'impact_description': '미중 기술패권 경쟁이 심화되자, 시진핑 주석은 핵심 기술 자립을 위해 막대한 국가자금을 투입했습니다. 중국 파운드리 업체 SMIC는 국가의 지원 아래 14nm 공정 양산에 성공하며 일부 국산화 성과를 거뒀고, 제재를 받은 화웨이는 자체 운영체제와 5G 장비 국산 부품 개발에 집중했습니다. 이러한 기술굴기 노력으로 미국 제재에도 불구하고 화웨이는 2023년 7nm 칩을 탑재한 스마트폰을 출시하는 등 자급 능력을 일정 부분 입증했습니다.', 'evidence': [{'source_title': 'SMIC receives government funds to boost chip self-sufficiency', 'url': 'https://www.ft.com/content/35c4e7fa-519a-4d44-9a02-414a2caba90b'}, {'source_title': \"화웨이, 자체 칩 탑재 '메이트60' 출시…미국 제재 돌파구\", 'url': 'https://www.hani.co.kr/arti/economy/it/1108186.html'}]}], 'notes': '시진핑 주석 집권 하 중국 경제는 고속성장에서 질적 발전 및 안보 중시로 전환되고 있습니다. 본 분석은 대표적 사례로 국영기업의 약진과 민영기업 규제를 다루었으며, 중국 정부의 강력한 개입이 기업 운명에 직접 영향을 주는 특성을 반영합니다.'}\n", + "[DEBUG] Model report keys: {'report_title': '시진핑의 정책, 산업, 기업 및 정치-경제 영향력 네트워크 분석', 'time_range': '2013-2025', 'question_answer': \"시진핑은 'Made in China 2025' 및 '중국의 꿈' 정책과 연결되어 있으며, 로봇공학, 바이오제약, 기후 기술 등 주요 산업 분야와 관련이 있습니다. 그러나 특정 기업들과의 직접적인 연결 증거는 제한적입니다. 시진핑의 정치적 영향력 네트워크는 반부패 운동을 통한 파벌 강화와 20차 당 대회에서의 권력 집중으로 특징지어집니다.\", 'influence_chains': [{'politician': 'Xi Jinping', 'policy': 'Made in China 2025 (MIC2025)', 'industry_or_sector': '로봇공학', 'companies': ['UBTECH Robotics', 'Siasun Robot & Automation', 'Estun Automation', 'Inovance Technology', 'Ecovacs Robotics'], 'impact_description': '로봇 산업은 MIC2025의 주요 목표 분야 중 하나로, 2023년 기준 170억 달러 규모의 시장을 형성하며 지속적인 성장을 보이고 있습니다. 그러나 해당 기업들이 MIC2025의 직접적인 수혜자라는 증거는 없습니다.', 'evidence': [{'source_title': 'Source 1', 'url': 'https://tmsstory.co.kr/%EC%A4%91%EA%B5%AD-%ED%9C%B4%EB%A8%B8%EB%85%B8%EC%9D%B4%EB%93%9C-%EB%A1%9C%EB%B4%87-%EA%B4%80%EB%A0%A8%EC%A3%BC-top5-%EB%AF%B8%EB%9E%98-%EC%82%B0%EC%97%85-%ED%88%AC%EC%9E%90/'}, {'source_title': 'Source 4', 'url': 'https://mini-buu.com/62'}]}, {'politician': 'Xi Jinping', 'policy': 'Made in China 2025 (MIC2025)', 'industry_or_sector': '바이오제약', 'companies': ['Huarong (Guangdong) Pharmaceutical Co., Ltd.', 'Jiangsu Hengrui Medicine Co., Ltd.', 'Shanghai Fosun Pharmaceutical (Group) Co., Ltd.'], 'impact_description': '바이오제약 산업은 MIC2025의 주요 목표 분야 중 하나이지만, 해당 기업들이 MIC2025의 직접적인 수혜자라는 증거는 없습니다.', 'evidence': [{'source_title': 'Source 2', 'url': 'https://www.huarongpharma.com/blog/2025-top-10-biopharmaceuticals-manufacturers-in-ch-1921845.html'}]}, {'politician': 'Xi Jinping', 'policy': '시진핑의 권력 집중', 'industry_or_sector': '정치-경제 영향력 네트워크', 'companies': [], 'impact_description': '시진핑은 반부패 운동을 통해 상하이 및 청년 연맹 파벌을 겨냥하며 개인 파벌을 강화했고, 20차 당 대회에서 정책 선호도와 인사 임명에서 시진핑 파벌의 영향력을 더욱 공고히 했습니다.', 'evidence': [{'source_title': 'Source 3', 'url': 'https://orcasia.org/article/140/faction-politics-in-china-and-its-implications-for-the-20th-party-congress'}]}], 'notes': ''}\n", + "[SKIP] already evaluated query: Xi Jinping\n", + "[DEBUG] Processing line 12, query=Vladimir Putin\n", + "[DEBUG] Gold report keys: {'report_title': 'Vladimir Putin 러시아 대통령의 정치·경제 영향력 네트워크 분석', 'time_range': '2000–2025년 11월 24일 기준', 'question_answer': '블라디미르 푸틴 대통령은 에너지 국유화와 자원무기화를 통해 Gazprom과 Rosneft 등 국영 에너지 기업을 러시아 경제의 핵심으로 부상시켰습니다. 2022년 우크라이나 침공 이후에는 군수산업에 대한 수요가 폭증하여 Kalashnikov Concern 등의 방산업체가 내수와 수출 모두 급증하는 효과를 보았습니다. 동시에 서방의 제재로 러시아 경제는 위축되었지만, 정부는 수입대체 정책으로 국내 제조업 육성을 추진하며 제한된 범위 내에서 일부 IT·농업 기업의 성장을 도모하고 있습니다.', 'influence_chains': [{'politician': 'Vladimir Putin', 'policy': '에너지 국유화·자원 무기화', 'industry_or_sector': '에너지/가스', 'companies': ['Gazprom', 'Rosneft'], 'impact_description': '푸틴 대통령은 집권 초부터 민영화되었던 에너지 자산을 재국유화하거나 국가 통제권을 강화했습니다. 천연가스 기업 가스프롬과 석유기업 로스네프트는 크렘린의 지원 아래 해외 파이프라인 건설과 OPEC+ 협조를 통해 막대한 수익을 올렸습니다. 특히 2006년 우크라이나 가스 차단 사태 등 자원을 외교무기로 활용하면서 Gazprom은 유럽 시장 지배력을 높였고:contentReference[oaicite:41]{index=41}, Rosneft는 국유화된 Yukos 자산 인수로 국내 1위 석유사가 되는 등 푸틴 정책의 최대 수혜자가 되었습니다.', 'evidence': [{'source_title': '푸틴, Yukos 해체 후 로스네프트 국영 석유왕국 건설', 'url': 'https://www.wsj.com/articles/SB119705486110361204'}, {'source_title': '러시아 가스프롬, 우크라이나 파이프라인 분쟁 일지', 'url': 'https://www.bbc.com/russian/russia/2014/06/140616_gas_dispute_timeline'}]}, {'politician': 'Vladimir Putin', 'policy': '우크라이나 침공과 군수산업', 'industry_or_sector': '방위산업', 'companies': ['Kalashnikov Concern', 'Uralvagonzavod'], 'impact_description': '2022년 2월 푸틴 대통령의 우크라이나 침공 이후 러시아 군수산업은 전시에 준하는 생산증대로 특수를 누렸습니다. 소총과 드론을 만드는 칼라시니코프 콘체른사는 정부로부터 막대한 군수품 주문을 받아 생산량이 크게 늘었고, 전차 제조사 우랄바곤자보드는 손실 기업에서 전쟁 기간 핵심 군수업체로 급부상했습니다. 내수 수요로 매출이 급증함과 동시에 제재로 서방 부품 조달이 어렵지만, 정부의 전폭적 지원 아래 이들 업체는 러시아 경제에서 차지하는 비중이 한층 높아졌습니다.', 'evidence': [{'source_title': \"우크라이나 전쟁 1년, 러시아 군수산업 '밤낮없이 가동'\", 'url': 'https://www.nytimes.com/2023/02/18/world/europe/russia-weapons-industry-war.html'}, {'source_title': '제재 속에서도 러 전차공장 Uralvagonzavod 생산 확대', 'url': 'https://www.reuters.com/world/europe/despite-sanctions-russia-is-making-materiel-faster-than-west-2023-08-18/'}]}, {'politician': 'Vladimir Putin', 'policy': '수입대체산업 육성', 'industry_or_sector': '제조/기술', 'companies': ['Yandex', 'Ростсельмаш(Rostselmash)'], 'impact_description': \"2014년 크림 합병 이후 서방 제재가 시작되자 푸틴 정부는 '수입대체(Импортозамещение)' 정책을 내걸고 국내 산업 보호에 나섰습니다. 검색포털 얀덱스는 구글 제한 조치의 반사이익으로 러시아 인터넷 시장 점유율을 60% 이상으로 높였고, 농기계 제조사 Rostselmash는 외산 농기계 대체를 위한 보조금 지원으로 러시아 내 트랙터 시장의 65%를 차지하게 되었습니다. 제재 하에서 자립을 도모한 이 정책은 제한적 성공을 거두었지만 첨단 반도체 등에서는 여전히 취약점을 드러냈습니다.\", 'evidence': [{'source_title': '러시아, 제재 대응 수입대체 정책 강화', 'url': 'https://www.economist.com/europe/2018/07/05/russia-is-struggling-to-replace-western-imports'}, {'source_title': \"Yandex Becomes Unlikely Beneficiary of Russia's Tech Clampdown\", 'url': 'https://www.ft.com/content/c0e7d9a2-3fa3-11e9-b896-fe36ec32aece'}]}], 'notes': '푸틴 집권기의 러시아 경제는 에너지와 군수에 크게 의존하며, 외부 제재에 적응하는 형태로 전개되었습니다. 본 보고서는 그 중 눈에 띄는 사례들을 추려냈으며, 러시아 기업들은 국가정책 방향에 따라 흥망이 좌우되는 경향이 강함을 보여줍니다.'}\n", + "[DEBUG] Model report keys: {'report_title': '블라디미르 푸틴의 정책, 산업, 기업 영향력 네트워크 분석', 'time_range': '2014–2025', 'question_answer': \"블라디미르 푸틴은 에너지(가즈프롬, 로스네프트), 방위(로스테크), 금융(뱅크 로시야) 부문에서 주요 정책과 기업에 영향을 미치며, 올리가르히 및 국가 연계 기관과의 관계를 통해 광범위한 정치·경제적 영향력을 행사함. 이는 제재, 해외 자산, 지정학적 수사(예: '러시아의 국경은 끝이 없다')로 확인됨.\", 'influence_chains': [{'politician': '블라디미르 푸틴', 'policy': '에너지 부문 국가 통제 강화', 'industry_or_sector': '에너지', 'companies': ['Gazprom', 'Rosneft'], 'impact_description': '푸틴은 가즈프롬과 로스네프트를 통제하며 이고리 세친과 같은 충성파를 임명했고, 가즈프롬은 크렘린의 지정학적 이익을 위한 도구로 활용됨. 푸틴의 자연자원 관리 학문적 배경이 에너지 정책 결정에 영향을 미침.', 'evidence': [{'source_title': 'Kremlin Energy Politics and Putin’s Seizure of Russia’s Strategic Resources', 'url': 'https://medium.com/@petergrant_14485/kremlin-energy-politics-and-putins-seizure-of-russia-s-strategic-resources-68f8a5864595'}]}, {'politician': '블라디미르 푸틴', 'policy': '방위 산업 통제 및 군사 행동 지원', 'industry_or_sector': '방위', 'companies': ['Rostec'], 'impact_description': '세르게이 체메조프(로스테크 CEO)는 푸틴의 오랜 동료로, 크림 반도 통합에 로스테크가 관여했으며 미국, EU, 영국으로부터 제재를 받음. 체메조프 가족은 모스크바 아파트와 초호화 요트를 소유.', 'evidence': [{'source_title': 'Putin-Russia Offshore Network', 'url': 'https://www.icij.org/investigations/panama-papers/20160403-putin-russia-offshore-network/'}, {'source_title': 'U.S. Treasury Sanctions Russian Officials and Entities', 'url': 'https://home.treasury.gov/news/press-releases/jl2369'}, {'source_title': 'Sergei Chemezov Sanctions Profile', 'url': 'https://ngoreport.org/sanctions-database/chemezov-sergey-viktorovich/'}]}, {'politician': '블라디미르 푸틴', 'policy': '금융 부문 영향력 행사 및 제재 회피', 'industry_or_sector': '금융', 'companies': ['Bank Rossiya'], 'impact_description': \"뱅크 로시야는 '푸틴의 개인 은행'으로 불리며 유리 코발추크 등 올리가르히가 소유. 2014년 미국 제재 후 푸틴이 고객 보호를 위해 개입했으며, 이고리 안드레이브는 뇌물 수수로 8.5년 형을 선고받음.\", 'evidence': [{'source_title': 'Vice President of Putin’s Personal Cashbox Jailed 85 Years for Bribery', 'url': 'https://www.themoscowtimes.com/2025/12/01/vice-president-of-putins-personal-cashbox-jailed-85-years-for-bribery-a91297'}, {'source_title': 'U.S. Treasury Sanctions Russian Officials and Entities', 'url': 'https://home.treasury.gov/news/press-releases/jl2369'}, {'source_title': 'EU Hits Back with New Evidence Against Daughter of Putin Ally’s Wife', 'url': 'https://www.gazetaexpress.com/en/EU-hits-back-with-new-evidence-against-daughter-of-Putin-allys-wife-under-sanctions-for-Kremlin-ties-and-suspicious-assets/'}]}, {'politician': '블라디미르 푸틴', 'policy': '에너지 수출 확대 및 경제적 안정성 유지', 'industry_or_sector': '에너지', 'companies': ['OPEC+'], 'impact_description': '푸틴은 서방의 제재에도 러시아 에너지 부문이 안정적이라고 주장하며, OPEC+ 데이터에 따르면 원유 생산량은 전쟁 전 대비 0.5백만 배럴/일 감소했으나 9.3백만 배럴/일을 유지.', 'evidence': [{'source_title': 'Russian President Vladimir Putin Claims Energy Sector Stability', 'url': 'https://www.industrialinfo.com/iirenergy/showNews.jsp?newsitemID=331144'}]}], 'notes': ''}\n", + "[SKIP] already evaluated query: Vladimir Putin\n", + "[DEBUG] Processing line 13, query=Narendra Modi\n", + "[DEBUG] Gold report keys: {'report_title': 'Narendra Modi 인도 총리의 정치·경제 영향력 네트워크 분석', 'time_range': '2014–2025년 11월 24일 기준', 'question_answer': \"나렌드라 모디 총리는 'Make in India' 캠페인을 통해 Foxconn, Tata Motors 등 제조 기업의 투자를 유치하여 인도를 글로벌 생산기지로 부상시켰습니다. 디지털 인디아와 금융 포용 정책으로 Paytm 같은 핀테크와 Reliance Jio 통신사가 폭발적 성장을 이뤘으며, 2016년 화폐개혁(디모네타이제이션)은 디지털 결제 기업에 호재로 작용했습니다. 또한 GST 도입으로 전국 단일시장 형성 등 경제 현대화를 추진하여 기업 경영환경을 개선했으나, 일부 중소상인은 적응에 어려움을 겪기도 했습니다.\", 'influence_chains': [{'politician': 'Narendra Modi', 'policy': 'Make in India 캠페인', 'industry_or_sector': '제조업/전자', 'companies': ['Foxconn', 'Tata Motors'], 'impact_description': '2014년 시작된 Make in India 정책으로 외국 기업의 인도 제조 투자가 대폭 늘었습니다. 아이폰 위탁생산업체 폭스콘은 인도 공장에 수십억 달러를 투자해 2025년까지 일자리 5만 개 창출을 발표했고, Tata Motors는 전기차 및 배터리 생산을 위해 정부 인센티브를 받아 국내 생산능력을 확충했습니다. 이 정책 덕분에 인도 제조업 GDP 비중이 상승했고, 스마트폰 등 여러 제품에서 인도가 조립허브로 떠올랐습니다.', 'evidence': [{'source_title': 'Foxconn to Invest $5 Billion in India for Manufacturing', 'url': 'https://www.bloomberg.com/news/articles/2015-08-08/foxconn-said-to-plan-5-billion-investment-in-india-over-5-years'}, {'source_title': 'Tata Motors banks on Make in India to drive EV growth', 'url': 'https://economictimes.indiatimes.com/industry/auto/auto-news/tata-motors-to-drive-in-more-evs-focuses-on-localisation-under-make-in-india/articleshow/86365921.cms'}]}, {'politician': 'Narendra Modi', 'policy': '디지털 인디아 및 핀테크', 'industry_or_sector': 'IT/통신·결제', 'companies': ['Reliance Jio', 'Paytm'], 'impact_description': \"모디 총리는 2015년 'Digital India' 프로그램으로 전국에 저가 고속인터넷과 디지털 서비스를 확산시켰습니다. Reliance Jio는 파격적인 무료 통신요금 전략과 정부 지원으로 4G 가입자 4억 명을 돌파하며 인도 통신시장을 재편했고, 2016년 화폐개혁 이후 Paytm 등 모바일 결제 플랫폼은 현금 부족 사태 속 폭발적 이용 증가로 거래액이 급증했습니다. 이처럼 정부의 디지털화 드라이브는 인도를 세계 최대 데이터 소비시장으로 만들며 관련 기업들의 급성장을 이끌었습니다.\", 'evidence': [{'source_title': \"Reliance Jio's free data revolution spurred Digital India\", 'url': 'https://www.theguardian.com/technology/2017/sep/21/reliance-jio-mukesh-ambani-india-mobile-internet-free-data-4g'}, {'source_title': 'Paytm usage surges after demonetisation', 'url': 'https://www.bbc.com/news/world-asia-india-37974423'}]}, {'politician': 'Narendra Modi', 'policy': 'GST 도입과 세제 개혁', 'industry_or_sector': '물류/소비재', 'companies': ['Dabur', 'Mahindra Logistics'], 'impact_description': '2017년 모디 정부는 인도 전역에 단일 부가가치세(GST)를 도입하여 복잡한 연방별 세금을 통합했습니다. 이로 인해 FMCG(일용소비재) 기업 Dabur는 물류비 절감과 재고회전율 개선으로 이익률이 상승했고, 물류기업 Mahindra Logistics는 창고를 허브화하며 전국 배송 효율이 크게 높아졌습니다. GST 시행 초반 일시적 혼란에도 불구하고 장기적으로는 기업 환경이 투명해지고 국내 무역이 촉진되는 효과를 가져왔습니다.', 'evidence': [{'source_title': 'GST has cut logistics cost by 20%, says CRISIL', 'url': 'https://www.financialexpress.com/economy/gst-cut-logistics-cost-by-20-crisil/1190728/'}, {'source_title': 'Dabur sees volume growth post GST', 'url': 'https://www.business-standard.com/article/companies/dabur-india-posts-strong-volume-growth-as-gst-impact-wanes-118020101284_1.html'}]}], 'notes': '모디 총리 재임 기간 인도 경제는 구조개혁과 디지털화에 속도를 냈습니다. 본 분석은 그 중 기업에 미친 주요 사례들을 다루었으며, 정책마다 득실이 있었으나 전반적으로 인도 기업의 국제 경쟁력이 제고되는 방향으로 나아갔습니다.'}\n", + "[DEBUG] Model report keys: {'report_title': '나렌드라 모디의 정책-산업-기업 영향력 네트워크 분석', 'time_range': '2014–2025', 'question_answer': \"나렌드라 모디 총리는 'Make in India' 및 'Digital India' 정책을 통해 제조업 및 디지털 인프라 분야에서 삼성, 폭스콘, 타타 그룹, 릴라이언스 Jio, Paytm 등 기업들과 협력했습니다. 또한 아다니 그룹, 릴라이언스 인더스트리즈 등 주요 기업 리더들과의 회의를 통해 경제 성장 정책을 추진했습니다.\", 'influence_chains': [{'politician': 'Narendra Modi', 'policy': 'Make in India', 'industry_or_sector': '제조업', 'companies': ['Samsung', 'Foxconn', 'Tata Group'], 'impact_description': 'Make in India 정책은 제조업, 자동차, 전자제품, 제약, 방위산업, 재생에너지, 항공우주, 섬유 등 25개 산업을 대상으로 하며, 국내 제조업 촉진, FDI 유치, 일자리 창출을 목표로 합니다. 삼성, 폭스콘, 타타 그룹 등이 PLI 인센티브 및 주정부 지원을 통해 인도 내 생산 시설을 확장했습니다.', 'evidence': [{'source_title': 'How India’s Make in India Initiative is Boosting Manufacturing', 'url': 'https://www.diversitech-global.com/post/how-indias-make-in-india-initiative-is-boosting-manufacturing'}, {'source_title': 'Make in India', 'url': 'https://razorpay.com/learn/make-in-india/'}, {'source_title': 'Make in India', 'url': 'https://byjus.com/free-ias-prep/make-in-india/'}, {'source_title': '[단독] 대러시아 수출 제재의 빈틈… 모스크바에 전시된 한국 첨단 장비', 'url': 'https://www.dnews.co.kr/uhtml/view.jsp?idxno=202508181138497390009'}, {'source_title': 'Foxconn and Apple Bolster India’s Make in India Initiative with Record Investments', 'url': 'https://www.pgurus.com/foxconn-and-apple-bolster-indias-make-in-india-initiative-with-record-investments/'}, {'source_title': 'Foxconn Invest $1.5bn in India, Apple Strategy', 'url': 'https://www.techmonitor.ai/digital-economy/big-tech/foxconn-invest-1-5bn-india-apple-strategy'}, {'source_title': 'All About Foxconn in India: Boosted Manufacturing in TN Under Scanner for Labour Practices', 'url': 'https://theprint.in/india/all-about-foxconn-in-india-boosted-manufacturing-in-tn-under-scanner-for-labour-practices/2150207/'}, {'source_title': 'YouTube Video on India’s PLI Scheme and Foxconn’s $1.5 Billion Investment', 'url': 'https://www.youtube.com/watch?v=CusSU32Oslk'}, {'source_title': 'How Tata is Putting the Roar in the Make in India Lion', 'url': 'https://economictimes.indiatimes.com/industry/cons-products/electronics/how-tata-is-putting-the-roar-in-the-make-in-india-lion/articleshow/109168823.cms'}, {'source_title': 'Tata’s $11 Billion Leap: India’s First Semiconductor Fab in Partnership with Taiwan’s PSMC', 'url': 'https://carboncredits.com/tatas-11-billion-leap-indias-first-semiconductor-fab-in-partnership-with-taiwans-psmc/'}]}, {'politician': 'Narendra Modi', 'policy': 'Digital India', 'industry_or_sector': '디지털 인프라', 'companies': ['Reliance Jio', 'Paytm', 'Google'], 'impact_description': '디지털 인도 이니셔티브는 통신, 핀테크, IT/인프라 분야를 중심으로 디지털 인프라, 거버넌스, 시민 역량 강화를 목표로 합니다. Reliance Jio는 5G 및 BharatNet 인프라 구축으로 연결성 목표를 지원했으며, Paytm은 UPI를 통해 디지털 결제 혁신을 주도했습니다.', 'evidence': [{'source_title': 'Reliance Jio', 'url': 'https://www.ril.com/businesses/digital-services-jio'}, {'source_title': 'Jio', 'url': 'https://www.jio.com/aboutus/jio-effect/'}, {'source_title': 'Jio', 'url': 'https://www.jio.com/aboutus/innovations/'}, {'source_title': 'UPI and Digital Payments Transforming India’s Financial Landscape', 'url': 'https://uppcsmagazine.com/upi-and-digital-payments-transforming-indias-financial-landscape/'}, {'source_title': 'Paytm', 'url': 'https://paytm.com/faqs/upi/does-upi-come-under-digital-india'}, {'source_title': 'Revolutionizing Payments: How Paytm Became the UPI Leader in India', 'url': 'https://www.thequint.com/brandstudio/revolutionizing-payments-how-paytm-became-the-upi-leader-in-india'}, {'source_title': 'Impact of UPI Wars', 'url': 'https://paytm.com/blog/payments/upi/impact-of-upi-wars/'}, {'source_title': 'Digital India Act 2023', 'url': 'https://www.shankariasparliament.com/current-affairs/digital-india-act-2023'}, {'source_title': 'Digital India Act', 'url': 'https://vajiramandravi.com/current-affairs/digital-india-act/'}, {'source_title': 'Digital India', 'url': 'https://en.wikipedia.org/wiki/Digital_India'}, {'source_title': 'Digital India', 'url': 'https://www.ibef.org/government-schemes/digital-india'}, {'source_title': 'Digital India Initiative', 'url': 'https://businessviewpointmagazine.com/digital-india-initiative/'}, {'source_title': 'What is Digital India: Initiatives, Objectives and Benefits', 'url': 'https://www.businessgo.hsbc.com/en/article/what-is-digital-india-initiatives-objectives-and-benefits'}]}, {'politician': 'Narendra Modi', 'policy': '경제 성장 정책', 'industry_or_sector': '인프라 및 통신', 'companies': ['Adani Group', 'Reliance Industries', 'Tata Sons', 'Bharti Airtel', 'Mahindra Group'], 'impact_description': '모디 총리는 아다니 그룹, 릴라이언스 인더스트리즈, 타타 그룹, 바르티 에어텔, 마힌드라 그룹 등 주요 기업 리더들과 경제 성장 및 예산 논의를 진행했습니다. 아다니 그룹은 인프라 분야에서, 릴라이언스 Jio는 디지털 인도 정책과 연계되어 성장했습니다.', 'evidence': [{'source_title': 'PM Modi holds meet with Indian business leaders: Ambani, Tata, Adani attend event', 'url': 'https://www.businesstoday.in/business/news/story/pm-modi-holds-meet-with-indian-business-leaders-ambani-tata-adani-attend-event-241954-2020-01-06'}, {'source_title': 'How Modi’s leadership and initiatives of Ambani and Adani are leading India’s growth', 'url': 'https://theindianeye.com/2024/05/13/how-modis-leadership-and-initiatives-of-ambani-and-adani-are-leading-indias-growth/'}, {'source_title': 'Ahead of the Budget, PM Narendra Modi meets top industrialists', 'url': 'https://www.livemint.com/news/india/ahead-of-the-budget-pm-narendra-modi-meets-top-industrialists-11578312075784.html'}, {'source_title': 'PM Modi meets India’s top business leaders to discuss reviving economy, biz sentiment', 'url': 'https://www.thenewsminute.com/money/pm-modi-meets-indias-top-business-leaders-discuss-reviving-economy-biz-sentiment-115489'}]}], 'notes': ''}\n", + "[SKIP] already evaluated query: Narendra Modi\n", + "[DEBUG] Processing line 14, query=Rishi Sunak\n", + "[DEBUG] Gold report keys: {'report_title': 'Rishi Sunak 영국 총리의 정치·경제 영향력 네트워크 분석', 'time_range': '2020–2025년 11월 24일 기준', 'question_answer': '리시 수낙 총리는 재무장관 시절 코로나19 직격탄을 맞은 경제를 살리기 위해 대규모 임금 보조(Furlough) 정책을 펼쳐 British Airways, 마크스앤드스펜서 등 기업들이 고용을 유지하도록 도왔습니다. 총리 재직 중에는 영국을 AI 혁신 허브로 만들겠다며 AI 안전 서밋을 개최하고 반도체 연구에 투자하여 DeepMind, Graphcore 같은 첨단기업에 우호적 환경을 조성했습니다. 또한 브렉시트 이후 금융규제 개혁을 추진해 런던 금융시장의 경쟁력을 높이려 시도하고 있습니다.', 'influence_chains': [{'politician': 'Rishi Sunak', 'policy': '코로나 고용유지 지원(Furlough)', 'industry_or_sector': '항공/소매', 'companies': ['British Airways', 'Marks & Spencer'], 'impact_description': '수낙 총리가 재무장관으로 있던 2020년, 영국 정부는 코로나19 봉쇄로 타격받은 기업 직원을 대상으로 인건비의 80%를 보전해주는 Furlough 제도를 도입했습니다. 그 결과 국제선 운항이 중단된 British Airways는 대규모 정리해고를 피하고 수만 명의 직원을 유지할 수 있었으며, 매장 영업이 막혔던 유통업체 Marks & Spencer도 인력 유지를 통해 팬데믹 후 빠른 영업 재개가 가능했습니다. 이 조치는 18개월간 114억 파운드 규모로 투입되어 실업률 급등을 억제하는 효과를 냈습니다.', 'evidence': [{'source_title': '영국 코로나 휴직지원에 900만명 혜택…BA 등 대규모 해고 방지', 'url': 'https://www.bbc.com/news/business-52528304'}, {'source_title': 'Marks & Spencer says furlough scheme crucial to survival', 'url': 'https://www.theguardian.com/business/2020/may/20/marks-spencer-ms-coronavirus-lockdown'}]}, {'politician': 'Rishi Sunak', 'policy': 'AI·반도체 혁신 지원', 'industry_or_sector': '첨단기술/반도체', 'companies': ['DeepMind', 'Graphcore'], 'impact_description': '수낙 총리는 2023년 영국에서 최초의 AI 안전 정상회의를 주최하고, AI 연구 및 반도체 설계 분야에 10억 파운드 이상을 투자하겠다고 발표했습니다. 구글 산하의 인공지능 연구소 DeepMind는 정부의 규제 완화와 런던을 AI 글로벌 허브로 만들겠다는 약속 속에 연구 인력을 확충하고 있고, 영국 팹리스 반도체 스타트업 Graphcore는 정부 지원금과 주문형 반도체 연구 인프라 조성 계획에 힘입어 Nvidia와 경쟁할 수 있는 AI칩 개발에 박차를 가하고 있습니다. 이러한 지원으로 영국 첨단기술 업계는 브렉시트 이후에도 투자 유치를 이어가고 있습니다.', 'evidence': [{'source_title': 'UK to invest £1 billion in supercomputer and AI chips', 'url': 'https://www.ft.com/content/2b3f0d58-e1fb-4a8c-a6f7-4f4a7b9becec'}, {'source_title': \"Sunak's AI Summit draws DeepMind, OpenAI to UK\", 'url': 'https://www.bloomberg.com/news/articles/2023-10-31/sunak-s-ai-summit-draws-pitches-from-google-s-deepmind-and-openai'}]}, {'politician': 'Rishi Sunak', 'policy': '금융규제 개혁(에든버러 개혁)', 'industry_or_sector': '금융/핀테크', 'companies': ['Barclays', 'Revolut'], 'impact_description': \"브렉시트 이후 금융 경쟁력 강화를 위해 수낙 총리는 2022년 말 '에든버러 개혁' 계획을 발표해 EU 규제였던 은행 자기자본 규제 등 일부를 완화하고 핀테크 혁신을 장려했습니다. 이에 따라 Barclays 같은 대형은행은 파생상품 거래 등에서 규제비용이 줄어들 것으로 기대하고 있고, 디지털은행 Revolut는 보다 유연한 규제 환경 속에서 신규 라이선스 취득과 해외 진출에 탄력이 붙을 전망입니다. 다만 이러한 개혁이 2008년 금융위기 이후 강화된 투자자 보호 장치를 약화시킬 수 있다는 우려도 있습니다.\", 'evidence': [{'source_title': '영국, ‘에든버러 개혁’으로 EU 금융규제 대체…런던 경쟁력 강화 시도', 'url': 'https://www.economist.com/britain/2022/12/09/britain-unveils-its-biggest-package-of-financial-reforms-in-decades'}, {'source_title': '핀테크 Revolut, 영국 규제 완화 기대 속 성장 가속', 'url': 'https://www.ft.com/content/0d7451ec-5325-4f50-8af1-349172226ec7'}]}], 'notes': '리시 수낙 총리의 경제정책은 팬데믹 대응부터 브렉시트 후속조치까지 폭넓게 전개되었습니다. 영국의 구조적 도전을 마주한 상황에서 단기 응급조치(코로나 지원)와 중장기 경쟁력 강화 전략(AI, 금융)이 혼재되어 있으며, 그 실효성은 향후 몇 년간의 성과에 따라 평가될 것입니다.'}\n", + "[DEBUG] Model report keys: {'report_title': '리시 수낵의 정책-산업-기업 영향력 네트워크 분석', 'time_range': '2025년 12월 5일 기준', 'question_answer': '리시 수낵은 경제 정책(미니 예산 철회, 투자 구역)을 통해 금융 서비스, 부동산, 제조업 분야와 연결되었으며, 보수당 지도부 시절 에너지(Shell), 기술(DeepMind), 금융(Standard Chartered) 기업으로부터 기부를 받았습니다. 또한 TCI 재직 및 재무장관 시절 헤지펀드/사모펀드와의 문서화된 비직접적 연계가 확인되었습니다. 단, 정책 수혜 기업과의 개인적 금융 공개 기록은 검증되지 않았습니다.', 'influence_chains': [{'politician': 'Rishi Sunak', 'policy': '보수당 지도부 기부 및 로비 활동', 'industry_or_sector': '에너지, 기술, 금융 서비스', 'companies': ['Shell', 'DeepMind', 'Standard Chartered'], 'impact_description': '리시 수낵의 보수당 지도부 시절 기부자로 에너지 기업(Shell), 기술 기업(DeepMind), 금융 기관(Standard Chartered)이 포함되었으며, 로비스트와의 공식 회의 기록이 공개됨', 'evidence': [{'source_title': 'Transparency Data', 'url': 'https://transparencydata.com'}]}, {'politician': 'Rishi Sunak', 'policy': '경제 정책(미니 예산 철회, 투자 구역)', 'industry_or_sector': '금융 서비스', 'companies': ['hedge funds', 'private equity firms'], 'impact_description': '수낵의 TCI 재직 및 재무장관 시절 헤지펀드/사모펀드와의 문서화된 비직접적 연계 존재', 'evidence': [{'source_title': 'TCI tenure and Chancellor-era interactions', 'url': 'https://tci.com/sunak-interactions'}]}, {'politician': 'Rishi Sunak', 'policy': '경제 정책(미니 예산 철회, 투자 구역)', 'industry_or_sector': '금융 서비스, 부동산, 제조업', 'companies': ['financial services', 'real estate', 'manufacturing sectors'], 'impact_description': '수낵의 경제 정책(미니 예산 철회, 투자 구역)이 금융 서비스, 부동산, 제조업 분야에 직접적 영향', 'evidence': [{'source_title': 'Economic policy analysis', 'url': 'https://economicpolicy.gov.uk/sunak-policies'}]}], 'notes': ''}\n", + "[SKIP] already evaluated query: Rishi Sunak\n", + "[DEBUG] Processing line 15, query=Emmanuel Macron\n", + "[DEBUG] Gold report keys: {'report_title': 'Emmanuel Macron 프랑스 대통령의 정치·경제 영향력 네트워크 분석', 'time_range': '2017–2025년 11월 24일 기준', 'question_answer': '에마뉘엘 마크롱 대통령은 노동시장 유연화와 연금개혁을 단행하여 프랑스 기업들의 인건비 부담을 덜고 고용을 늘리는 기반을 마련했으며, 친환경 정책으로 프랑스 전력공사(EDF)의 원전 투자와 르노 등의 전기차 전환에 박차를 가했습니다. 또한 EU 차원에서 디지털세 추진과 반도체·배터리 육성에 앞장서며 유럽 기업들의 기술 주권을 강화했습니다. 다만 연금개혁에 따른 국민 반발로 사회적 갈등이 일시적으로 기업 활동에 불확실성을 주기도 했습니다.', 'influence_chains': [{'politician': 'Emmanuel Macron', 'policy': '노동법 개혁', 'industry_or_sector': '산업 전반/고용', 'companies': ['TotalEnergies', 'Carrefour'], 'impact_description': '2017년 마크롱 정부는 노조와 사회적 합의를 거쳐 해고 절차 완화, 노조교섭 단위 축소 등 노동법 개혁을 실시했습니다. 이에 따라 TotalEnergies 같은 대기업은 인건비 유연성이 높아져 신규 고용과 구조조정에 신속히 대응할 수 있게 되었고, 소매체인 까르푸는 점포 운영시간 연장과 주말 노동투입 등 생산성 향상 방안을 원활히 시행할 수 있었습니다. 이 개혁 이후 프랑스 실업률은 10%대에서 7%대로 하락하며 기업들의 고용여건이 개선되었습니다.', 'evidence': [{'source_title': '마크롱 노동개혁 후 프랑스 실업률 최저치 기록', 'url': 'https://www.reuters.com/article/us-france-reform-employment-idUSKCN1M01R3'}, {'source_title': 'Carrefour welcomes new labor flexibility under Macron', 'url': 'https://www.ft.com/content/2e3f4d62-d353-11e7-a303-9060cb1e5f44'}]}, {'politician': 'Emmanuel Macron', 'policy': '연금개혁 추진', 'industry_or_sector': '공공재정/시장', 'companies': ['BNP Paribas', 'AXA'], 'impact_description': '2023년 마크롱 대통령은 연금정년을 62세에서 64세로 상향하는 개혁을 강행하여 장기적으로 재정안정과 노동인구 증가를 도모했습니다. 이에 프랑스 최대 은행 BNP파리바는 국가신용도 유지와 금리안정의 간접 혜택을 기대할 수 있었고, 대형 보험사 AXA는 민영 연금상품 수요 증가에 대비해 상품 개발을 서둘렀습니다. 다만 연금개혁 과정에서 대규모 파업이 발생해 단기적으로 소비와 생산에 지장을 초래하기도 했습니다.', 'evidence': [{'source_title': \"프랑스 연금개혁 통과…BNP파리바 등 금융권 '환영'\", 'url': 'https://www.bloomberg.com/news/articles/2023-04-14/bnp-paribas-says-pension-reform-is-good-for-france-s-economy'}, {'source_title': 'AXA sees opportunities in Macron pension reform', 'url': 'https://www.reuters.com/business/finance/insurer-axa-sees-opportunity-french-pension-reform-2023-01-23/'}]}, {'politician': 'Emmanuel Macron', 'policy': '친환경·산업 주권 정책', 'industry_or_sector': '에너지/제조', 'companies': ['EDF', 'STMicroelectronics'], 'impact_description': '마크롱 대통령은 파리협정 이행과 에너지 안보 강화를 위해 원전 부흥과 배터리·반도체 등 전략산업 육성을 추진했습니다. 이에 따라 프랑스전력公(EDF)은 신규 원자로 건설과 노후원전 수명연장에 정부 지원을 받아 대규모 투자를 진행하고, 유럽 반도체 기업 ST마이크로일렉트로닉스는 프랑스 정부 보조금을 통해 그르노블 공장 증설 및 차세대 칩 R&D에 박차를 가했습니다. 이 같은 정책으로 프랑스는 유럽 배터리 연합 및 반도체 동맹의 중심에 서서 관련 기업들의 공급망 자립을 도왔습니다.', 'evidence': [{'source_title': 'Macron bets on nuclear revival, EDF to build new reactors', 'url': 'https://www.ft.com/content/039e8c38-0b9e-11ea-b2d6-9bf4d1957a67'}, {'source_title': 'STMicro to get French aid for chip plant expansion', 'url': 'https://www.reuters.com/technology/france-italy-pledge-funds-stmicroelectronics-chip-plant-2022-07-11/'}]}], 'notes': '에마뉘엘 마크롱 정부는 친시장 개혁과 유럽 차원의 산업 전략을 병행하였습니다. 노동 및 연금개혁은 단기 사회 갈등에도 불구하고 중장기적으로 기업 활력을 높이는 데 기여했고, 프랑스 주도의 EU 산업정책은 공급망 다변화 시대에 자국 기업 보호 및 육성으로 이어지고 있습니다.'}\n", + "[DEBUG] Model report keys: {'report_title': '에마뉘엘 마크롱의 정책-산업-기업 영향력 네트워크 분석', 'time_range': '2017–2025', 'question_answer': '에마뉘엘 마크롱은 녹색 에너지 전환 및 기술 혁신 정책을 통해 EDF, TotalEnergies, Renault, ACC, Mistral AI, Station F 등 다양한 기업 및 산업과 연결되어 있습니다. 그러나 마크롱 행정부와 특정 기업 간의 직접적인 금융적 또는 로비 관계는 명시적으로 문서화되지 않았습니다. 알렉시스 코흘러 수석 보좌관의 MSC와의 이해관계 충돌 사례가 조사되었으나, 마크롱 대통령의 직접적인 관여는 확인되지 않았습니다.', 'influence_chains': [{'politician': '에마뉘엘 마크롱', 'policy': '녹색 에너지 전환', 'industry_or_sector': '원자력 에너지', 'companies': ['EDF'], 'impact_description': '프랑스의 원자력 에너지 정책 지원 및 인프라 유지', 'evidence': [{'source_title': 'France’s Energy Future with Macron at the Helm', 'url': 'https://leadersinenergy.org/frances-energy-future-with-macron-at-the-helm/'}, {'source_title': 'French President Macron unveils latest plan for meeting climate-related commitments in the coming years', 'url': 'https://www.pbs.org/newshour/world/french-president-macron-unveils-latest-plan-for-meeting-climate-related-commitments-in-the-coming-years'}, {'source_title': 'France fights back against US with aid for green transition', 'url': 'https://www.energyconnects.com/news/renewables/2023/may/france-fights-back-against-us-with-aid-for-green-transition/'}]}, {'politician': '에마뉘엘 마크롱', 'policy': '녹색 에너지 전환', 'industry_or_sector': '녹색 수소', 'companies': ['TotalEnergies'], 'impact_description': '녹색 수소 및 재생에너지 프로젝트 지원을 위한 보조금 및 세제 혜택', 'evidence': [{'source_title': 'Commission d’enquête du Sénat sur TotalEnergies: des lacunes et des perspectives de progrès pour la transparence du lobbying', 'url': 'https://transparency-france.org/2024/07/12/commission-denquete-du-senat-sur-totalenergies-des-lacunes-et-des-perspectives-de-progres-pour-la-transparence-du-lobbying/'}, {'source_title': 'Our advocacy efforts', 'url': 'https://totalenergies.com/sustainability/stakeholder-relationships-advocacy/advocacy-principles/our-advocacy-efforts'}, {'source_title': 'The French Senate recommends that the French state acquire a stake in TotalEnergies', 'url': 'https://energynews.pro/en/the-french-senate-recommends-that-the-french-state-acquire-a-stake-in-totalenergies/'}, {'source_title': 'France', 'url': 'https://gh2.org/countries/france'}, {'source_title': 'France’s new green hydrogen support mechanism: an opportunity for European players', 'url': 'https://bmhavocats.com/2024/02/15/energie-frances-new-green-hydrogen-support-mechanism-an-opportunity-for-european-players/'}, {'source_title': 'Energy: France’s new green hydrogen support mechanism: an opportunity for European players', 'url': 'https://bmhavocats.com/en/2024/02/15/energy-frances-new-green-hydrogen-support-mechanism-an-opportunity-for-european-players/'}, {'source_title': 'EC approves €900m French State aid to support biomass and renewable hydrogen', 'url': 'https://hydrogeneurope.eu/ec-approves-e900m-french-state-aid-to-support-biomass-and-renewable-hydrogen/'}]}, {'politician': '에마뉘엘 마크롱', 'policy': '녹색 에너지 전환', 'industry_or_sector': '전기차', 'companies': ['Renault', 'ACC (Automotive Cells Company)'], 'impact_description': '전기차 배터리 생산 및 국내 생산 목표 지원', 'evidence': [{'source_title': 'France’s Energy Future with Macron at the Helm', 'url': 'https://leadersinenergy.org/frances-energy-future-with-macron-at-the-helm/'}, {'source_title': 'French President Macron unveils latest plan for meeting climate-related commitments in the coming years', 'url': 'https://www.pbs.org/newshour/world/french-president-macron-unveils-latest-plan-for-meeting-climate-related-commitments-in-the-coming-years'}, {'source_title': 'France fights back against US with aid for green transition', 'url': 'https://www.energyconnects.com/news/renewables/2023/may/france-fights-back-against-us-with-aid-for-green-transition/'}]}, {'politician': '에마뉘엘 마크롱', 'policy': '기술 혁신', 'industry_or_sector': '인공지능', 'companies': ['Mistral AI', 'Iliad', 'Orange', 'Thales'], 'impact_description': 'AI 공공-민간 파트너십 및 전문가 양성 지원', 'evidence': [{'source_title': 'France unveils €109 billion AI initiative to compete globally', 'url': 'https://www.riotimesonline.com/france-unveils-e109-billion-a-i-initiative-to-compete-globally/'}, {'source_title': 'France leads push for widespread adoption of European AI', 'url': 'https://sciencebusiness.net/news/ai/france-leads-push-widespread-adoption-european-ai'}, {'source_title': 'Germany and France sign agreement for public-private partnership on AI with Mistral, SAP', 'url': 'https://www.telecompaper.com/news/germany-france-sign-agreement-for-public-private-partnership-on-ai-with-mistral-sap--1554686'}, {'source_title': 'France AI Strategy Report', 'url': 'https://ai-watch.ec.europa.eu/countries/france/france-ai-strategy-report_en'}]}, {'politician': '에마뉘엘 마크롱', 'policy': '기술 혁신', 'industry_or_sector': '스타트업', 'companies': ['Station F'], 'impact_description': '정부 지원 스타트업 인큐베이터 운영', 'evidence': [{'source_title': 'French startup culture at Station F in Paris', 'url': 'https://frenchamericancultural.org/2024/02/05/french-startup-culture-at-station-f-in-paris/'}, {'source_title': 'Paris mega-campus Station F wooing tech startups from London', 'url': 'https://www.businesstimes.com.sg/startups-tech/technology/paris-mega-campus-station-f-wooing-tech-startups-london'}, {'source_title': 'About', 'url': 'https://stationf.co/about'}, {'source_title': 'Ask Me Anything with Xavier Niel, founder of Free, 42 Coding School, Kima and Station F', 'url': 'https://medium.com/station-f/ask-me-anything-with-xavier-niel-founder-of-free-42-coding-school-kima-and-station-f-9c509159450b'}, {'source_title': 'World’s biggest startup campus', 'url': 'https://www.orosound.com/worlds-biggest-startup-campus/'}]}, {'politician': '에마뉘엘 마크롱', 'policy': 'STX 조선소 관련 정책', 'industry_or_sector': '해운업', 'companies': ['MSC (Mediterranean Shipping Company)'], 'impact_description': '알렉시스 코흘러의 MSC와의 이해관계 충돌 조사', 'evidence': [{'source_title': 'Emmanuel Macron’s chief staff corruption inquiry Alexis Kohler', 'url': 'https://www.theguardian.com/world/2018/jun/04/emmanuel-macrons-chief-staff-corruption-inquiry-alexis-kohler'}, {'source_title': 'Emmanuel Macron adviser Alexis Kohler charged with conflict of interest', 'url': 'https://www.theguardian.com/world/2022/oct/04/emmanuel-macron-adviser-alexis-kohler-charged-conflict-of-interest'}, {'source_title': 'Macron’s chief of staff under investigation for conflict of interest', 'url': 'https://timesofmalta.com/article/macrons-chief-of-staff-under-investigation-for-conflict-of-interest.680861'}, {'source_title': 'Macron’s aide charged with conflict of interest', 'url': 'https://www.dawn.com/news/1412044'}]}], 'notes': ''}\n", + "[SKIP] already evaluated query: Emmanuel Macron\n", + "[DEBUG] Processing line 16, query=Volodymyr Zelensky\n", + "[DEBUG] Gold report keys: {'report_title': 'Volodymyr Zelensky 우크라이나 대통령의 정치·경제 영향력 네트워크 분석', 'time_range': '2019–2025년 11월 24일 기준', 'question_answer': '볼로디미르 젤렌스키 대통령은 2022년 러시아 침공에 맞서 서방의 군사지원을 이끌어내며 Lockheed Martin, BAE Systems 등 글로벌 방산 기업들의 수주가 급증하는 간접 효과를 주었습니다. 국내적으로는 반부패 개혁과 올리가르히(재벌) 견제를 추진하여 PrivatBank 국유화 등 금융 부문의 투명성을 높였고, 전시경제 하에서도 전력·농업 인프라 복구에 집중 투자하여 DTEK, Kernel과 같은 기업들이 국제기구 지원 아래 재건 사업에 참여하도록 독려했습니다. 전쟁이 장기화됨에 따라 우크라이나 재건 계획은 Bechtel 등 해외 건설사의 관심을 모으고 있습니다.', 'influence_chains': [{'politician': 'Volodymyr Zelensky', 'policy': '서방 군사지원 외교', 'industry_or_sector': '방위산업/국제', 'companies': ['Lockheed Martin', 'BAE Systems'], 'impact_description': '젤렌스키 대통령은 연일 미국과 NATO 동맹국을 상대로 무기 지원을 호소하여, HIMARS 로켓과 전차, 포탄 등이 대거 우크라이나로 지원되었습니다. 그에 따라 미 방산업체 록히드마틴은 HIMARS 생산라인을 증설해 주문량을 늘렸고, 영국 BAE 시스템즈는 우크라이나에 곡사포와 장갑차 수출이 증가하면서 2022~2023년 실적이 크게 향상되었습니다. 젤렌스키의 외교 행보는 서방 방산기업들에게 예상치 못한 특수를 안겨준 셈입니다.', 'evidence': [{'source_title': '우크라 전쟁 특수, 미 방산업체 실적 급등', 'url': 'https://www.wsj.com/articles/lockheed-martin-earnings-ukraine-war-11670969844'}, {'source_title': 'BAE Systems, 우크라 지원에 힘입어 신규 수주 기록', 'url': 'https://www.bloomberg.com/news/articles/2023-07-27/bae-systems-lands-record-orders-on-ukraine-boost-raises-outlook'}]}, {'politician': 'Volodymyr Zelensky', 'policy': '반부패·재벌 개혁', 'industry_or_sector': '금융/철강', 'companies': ['PrivatBank', 'Metinvest'], 'impact_description': '젤렌스키 집권 초기부터 부패 척결과 올리가르히 축소에 방점을 찍어왔습니다. 2016년 부실사태를 맞은 최대 민영은행 프리바트뱅크를 국유화하고, 2021년에는 올리가르히(재벌) 등록법을 제정하여 철강재벌 리나트 아흐메토프가 소유한 Metinvest 등 거대 기업들의 정치 영향력을 제한했습니다. 이러한 조치는 국제통화기금(IMF) 지원 조건이기도 했으며, 우크라이나 금융시스템 안정과 대외신인도 제고에 기여했으나 올리가르히 경제력 집중은 여전히 과제로 남아있습니다.', 'evidence': [{'source_title': '우크라이나, 최대은행 PrivatBank 국유화', 'url': 'https://www.reuters.com/article/us-ukraine-crisis-privatbank-idUSKBN1480RX'}, {'source_title': \"Zelenskiy signs law curbing oligarchs' influence\", 'url': 'https://www.bloomberg.com/news/articles/2021-11-05/ukraine-s-zelenskiy-signs-law-curbing-oligarchs-influence'}]}, {'politician': 'Volodymyr Zelensky', 'policy': '인프라 재건 및 에너지 복구', 'industry_or_sector': '전력/건설', 'companies': ['DTEK', 'Bechtel'], 'impact_description': \"전쟁으로 파괴된 인프라를 복구하기 위해 젤렌스키 대통령은 2023년부터 '우크라이나 재건 계획'을 추진하고 있습니다. 최대 민간 전력회사 DTEK는 정부 및 국제 원조로 피해입은 발전소와 송전망을 긴급 복구하여 작동시켰고, 미국 건설사 Bechtel은 우크라이나 정부와 재건 사업 협력 MOU를 체결하고 향후 철도·교량 재건 입찰 참여를 준비 중입니다. 이러한 노력은 전시에도 불구하고 국민 생활을 지탱하고, 향후 수백조원 규모로 예상되는 재건 시장에서 글로벌 기업들의 관심을 모으고 있습니다.\", 'evidence': [{'source_title': 'DTEK restores power for millions amid ongoing strikes', 'url': 'https://news.yahoo.com/ukraines-dtek-restores-power-millions-123456789.html'}, {'source_title': 'Ukraine signs deal with Bechtel on reconstruction projects', 'url': 'https://www.reuters.com/world/europe/ukraine-signs-deal-with-bechtel-cooperate-reconstruction-projects-2023-05-22/'}]}], 'notes': '젤렌스키 대통령의 임기 중 2022년 이후 전쟁상황이 기업환경에 막대한 영향을 주었으며, 본 분석은 그 가운데서도 주요한 경제적 연쇄 효과를 추린 것입니다. 우크라이나의 재건은 진행형으로, 향후 국제사회의 지원과 기업들의 참여에 따라 성과가 가시화될 전망입니다.'}\n", + "[DEBUG] Model report keys: {'report_title': '볼로디미르 젤렌스키의 정치-경제적 영향력 네트워크 분석', 'time_range': '2019–2025', 'question_answer': '볼로디미르 젤렌스키는 반부패 개혁, EU/NATO 통합, 방산 개혁 등 주요 정책과 연결되어 있으며, 미디어/엔터테인먼트 산업(Kvartal 95, 1+1 Media) 및 에너지 산업(DTEK)과의 연관성이 확인됨. 그러나 직접적인 재정적 이해관계나 지속적인 사업 참여는 문서화되지 않았음.', 'influence_chains': [{'politician': 'Volodymyr Zelensky', 'policy': '반부패 개혁', 'industry_or_sector': '미디어/엔터테인먼트', 'companies': ['1+1 Media'], 'impact_description': '젤렌스키는 2019년 대선 당시 올리가르히 이고르 콜로모이스키의 정치적 지지를 받았으며, 콜로모이스키가 소유한 1+1 미디어(젤렌스키의 쇼를 방영한 TV 네트워크)와의 연결이 확인됨. 그러나 직접적인 금융 거래나 사업 파트너십은 문서화되지 않음.', 'evidence': [{'source_title': '우크라이나 재건 뉴스', 'url': 'https://www.ukrainerebuildnews.com/zelensky-meets-us-execs-to-seek-support-for-energy-infrastructure-2/'}, {'source_title': '우크라이나 인포름', 'url': 'https://www.ukrinform.net/rubric-economy/4045283-zelensky-discusses-strengthening-ukraines-defense-industry-with-heads-of-investment-funds-and-business-associations.html'}]}, {'politician': 'Volodymyr Zelensky', 'policy': '반부패 개혁', 'industry_or_sector': '미디어/엔터테인먼트', 'companies': ['Kvartal 95'], 'impact_description': '젤렌스키는 1997년 엔터테인먼트 제작사 Kvartal 95를 공동 설립했으며, 이 회사는 TV 프로그램, 영화, 코미디 프로그램(예: *Servant of the People*)을 제작함. 대통령 취임 후 소유권이나 재정적 통제에 대한 공개 기록은 없음.', 'evidence': [{'source_title': '우크라이나 재건 뉴스', 'url': 'https://www.ukrainerebuildnews.com/zelensky-meets-us-execs-to-seek-support-for-energy-infrastructure-2/'}, {'source_title': '우크라이나 인포름', 'url': 'https://www.ukrinform.net/rubric-economy/4045283-zelensky-discusses-strengthening-ukraines-defense-industry-with-heads-of-investment-funds-and-business-associations.html'}]}, {'politician': 'Volodymyr Zelensky', 'policy': 'EU 통합 노력', 'industry_or_sector': '에너지', 'companies': ['DTEK'], 'impact_description': '젤렌스키는 2024년 9월 뉴욕에서 미국 에너지, 금융, 보험 임원들과 만나 우크라이나 에너지 인프라 지원을 요청했으며, 이는 EU의 러시아 에너지 제재로 인해 우크라이나 가스 수출업체에 기회가 창출됨. DTEK는 우크라이나 최대 에너지 기업 중 하나임.', 'evidence': [{'source_title': '우크라이나 재건 뉴스', 'url': 'https://www.ukrainerebuildnews.com/zelensky-meets-us-execs-to-seek-support-for-energy-infrastructure-2/'}]}, {'politician': 'Volodymyr Zelensky', 'policy': '반부패 개혁', 'industry_or_sector': '미디어/엔터테인먼트', 'companies': ['Kvartal 95'], 'impact_description': '젤렌스키는 1997년 엔터테인먼트 제작사 Kvartal 95를 공동 설립했으며, 이 회사는 TV 프로그램, 영화, 코미디 프로그램(예: *Servant of the People*)을 제작함. 대통령 취임 후 소유권이나 재정적 통제에 대한 공개 기록은 없음.', 'evidence': [{'source_title': '우크라이나 재건 뉴스', 'url': 'https://www.ukrainerebuildnews.com/zelensky-meets-us-execs-to-seek-support-for-energy-infrastructure-2/'}, {'source_title': '우크라이나 인포름', 'url': 'https://www.ukrinform.net/rubric-economy/4045283-zelensky-discusses-strengthening-ukraines-defense-industry-with-heads-of-investment-funds-and-business-associations.html'}]}], 'notes': ''}\n", + "[DEBUG] politiocian: Volodymyr Zelensky, policy: 반부패 개혁\n", + "[DEBUG] politiocian: Volodymyr Zelensky, policy: 반부패 개혁\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: All log messages before absl::InitializeLog() is called are written to STDERR\n", + "I0000 00:00:1764996303.363160 2644040 fork_posix.cc:71] Other threads are currently calling into gRPC, skipping fork() handlers\n", + "I0000 00:00:1764996303.381748 2644040 fork_posix.cc:71] Other threads are currently calling into gRPC, skipping fork() handlers\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[DEBUG] politiocian: Volodymyr Zelensky, policy: EU 통합 노력\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "I0000 00:00:1764996326.387826 2644040 fork_posix.cc:71] Other threads are currently calling into gRPC, skipping fork() handlers\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[DEBUG] politiocian: Volodymyr Zelensky, policy: 반부패 개혁\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "I0000 00:00:1764996348.469913 2644040 fork_posix.cc:71] Other threads are currently calling into gRPC, skipping fork() handlers\n", + "I0000 00:00:1764996348.479672 2644040 fork_posix.cc:71] Other threads are currently calling into gRPC, skipping fork() handlers\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "gold_eval : : : {'similarity_score': 0.4, 'reasoning': \"두 보고서는 볼로디미르 젤렌스키의 정치·경제적 영향력을 분석하며 '반부패 개혁' 정책과 'DTEK' 기업을 공통적으로 언급합니다. 그러나 gold_report는 서방 군사지원으로 인한 방위산업 특수와 우크라이나 재건 사업에 초점을 맞춰 정책과 기업 간의 연관성 및 경제적 파급 효과를 구체적으로 설명하는 반면, model_report는 젤렌스키의 미디어/엔터테인먼트 산업 배경과 EU 통합 노력을 주요 내용으로 다루며 일부 정책의 경제적 영향 설명이 부족합니다.\", 'model_unique_points': ['젤렌스키의 과거 미디어/엔터테인먼트 산업(Kvartal 95, 1+1 Media) 활동 및 올리가르히와의 연관성.', 'EU 통합 노력이 우크라이나 에너지 산업에 미치는 영향.'], 'gold_unique_points': ['서방 군사지원 외교를 통한 글로벌 방위산업(Lockheed Martin, BAE Systems)의 경제적 영향.', 'PrivatBank 국유화 및 올리가르히(Metinvest) 견제를 포함한 금융/철강 부문의 반부패·재벌 개혁.', '전력·농업 인프라 복구 및 우크라이나 재건 계획(Bechtel)을 통한 건설/전력 산업의 활성화.']}\n", + "[DEBUG] Processing line 17, query=Fumio Kishida\n", + "[DEBUG] Gold report keys: {'report_title': '기시다 후미오 일본 총리의 정치·경제 영향력 네트워크 분석', 'time_range': '2021–2025년 11월 24일 기준', 'question_answer': \"기시다 총리는 방위비를 대폭 증액하여 미쓰비시중공업 등 방산기업에 새로운 성장 기회를 제공했고, 핵심전략산업(반도체·배터리)에 보조금을 지급하여 일본 기업의 국내 투자와 TSMC 등의 유치를 이끌었습니다. 또한 '새로운 자본주의' 기치 하에 기업들에 임금 인상과 투자 확대를 독려하여 소니, 도요타 등에서 기록적인 임금인상 합의를 끌어냈습니다. 이러한 정책들은 장기 정체에 빠진 일본 경제에 변화를 주려는 시도로 평가되나, 재원 마련과 구조개혁의 한계로 효과가 부분적이라는 지적도 있습니다.\", 'influence_chains': [{'politician': 'Fumio Kishida', 'policy': '방위비 증액 정책', 'industry_or_sector': '방위산업', 'companies': ['Mitsubishi Heavy Industries', 'IHI Corporation'], 'impact_description': '2022년 기시다 내각은 안보환경 악화를 이유로 GDP 대비 방위비를 1%대에서 2%로 올리기로 결정했습니다. 이로써 미쓰비시중공업은 장거리 미사일 개발과 함정 건조 등 새로운 방위사업을 수주하여 주가가 2023년에 크게 상승했고, 항공엔진 제조사 IHI도 전투기 엔진 및 우주방위 관련 예산 증가로 연구개발 기회가 확대되었습니다. 방위산업 전반에 수십년 만의 특수가 찾아와 일본 기업들의 방산 부문 투자가 늘어나는 계기가 되었습니다.', 'evidence': [{'source_title': '일본, 방위비 2배로…미쓰비시重 등 방산주 강세', 'url': 'https://www.wsj.com/articles/japan-defense-stocks-surge-on-budget-hike-11671234567'}, {'source_title': 'IHI, 전투기 엔진 개발 참여...방위비 증액 수혜', 'url': 'https://asia.nikkei.com/Business/Aerospace-Defense/IHI-s-military-engine-unit-set-for-lift-off-under-Japan-defense-plan'}]}, {'politician': 'Fumio Kishida', 'policy': '산업부흥 보조금 (반도체 등)', 'industry_or_sector': '반도체/배터리', 'companies': ['TSMC Japan', 'Toyota-Panasonic (Prime Planet Energy)'], 'impact_description': '기시다 총리는 공급망 안보와 첨단 산업 육성을 위해 해외 첨단기업 유치와 국내 설비 투자에 막대한 보조금을 지급했습니다. 세계 1위 파운드리 TSMC는 구마모토현에 소니와 합작으로 반도체 공장을 건설하며 일본 정부로부터 약 4,760억 엔의 지원을 받아 2024년 가동 예정이고, 도요타-파나소닉 배터리 합작사 Prime Planet Energy는 차량용 배터리 공장 증설에 정부 지원금을 확보해 생산능력을 확대하고 있습니다. 이같은 산업 정책은 일본 제조업의 기술 주권을 강화하고 하이테크 부문의 고용을 창출하는 효과를 거두고 있습니다.', 'evidence': [{'source_title': 'TSMC, 일본 소니와 구마모토에 반도체 공장…정부 4760억엔 지원', 'url': 'https://www.reuters.com/technology/tsmc-plans-build-second-japan-chip-plant-report-2023-02-24/'}, {'source_title': '일본, 배터리 공장 7곳에 3300억엔 보조금 지원', 'url': 'https://asia.nikkei.com/Business/Energy/Japan-to-subsidize-battery-plants-by-Panasonic-Toshiba-and-GS-Yuasa'}]}, {'politician': 'Fumio Kishida', 'policy': '신자본주의 (임금인상 촉구)', 'industry_or_sector': '경영/노동', 'companies': ['Toyota', 'Sony'], 'impact_description': \"기시다 총리는 '새로운 자본주의' 슬로건 아래 기업들에게 임금 인상과 사내유보 활용을 촉구했습니다. 그 결과 2023년 춘투(봄철 임금교섭)에서 도요타는 약 20년만에 최고 수준의 임금인상을 단행했고, 소니도 기본급 7% 인상과 보너스 확대를 결정하여 노동자들의 실질임금 상승을 이루었습니다. 이는 일본 경제의 구조적 과제였던 임금 정체를 완화하고 소비 진작에 기여할 조짐을 보였으나, 한편으로 기업 수익성 압박과 중소기업 미흡 등 한계도 지적됩니다.\", 'evidence': [{'source_title': '도요타, 기시다 요청에 화답…전 직원 임금 9% 인상', 'url': 'https://www.japantimes.co.jp/news/2023/02/23/business/corporate-business/toyota-wage-hike-agreement/'}, {'source_title': \"소니, 26년만에 최고 임금인상…기시다 '임금UP' 가속\", 'url': 'https://www.bloomberg.com/news/articles/2023-03-29/sony-to-raise-base-pay-by-7-highest-hike-in-two-decades'}]}], 'notes': '기시다 후미오 총리의 경제정책은 아베노믹스 이후 일본의 새로운 방향 모색으로 볼 수 있습니다. 방위비 증액과 산업지원은 안보와 성장 두 마리 토끼를 잡으려는 전략이며, 임금인상 유도는 디플레이션 탈출을 위한 사회적 노력의 일환입니다. 정책 효과는 아직 진행형으로, 향후 일본 경제의 활력 회복 여부에 따라 평가가 달라질 것입니다.'}\n", + "[DEBUG] Model report keys: {'report_title': '기시다 후미오 총리의 정책-산업-기업 영향력 네트워크 분석', 'time_range': '2022–2024', 'question_answer': \"기시다 후미오 총리는 '신자본주의' 정책, 방위비 확대, 디지털 전환 전략 등을 통해 반도체, 방위 산업, 디지털 인프라 등 다양한 분야에 영향을 미쳤으며, Rapidus, Mitsubishi Heavy Industries, Amazon.com Inc. 등 특정 기업들과 직접적인 연관성이 확인됨\", 'influence_chains': [{'politician': 'Fumio Kishida', 'policy': '반도체 산업 지원', 'industry_or_sector': '반도체 및 첨단 제조', 'companies': ['Rapidus'], 'impact_description': 'Rapidus는 반도체 생산을 위해 정부-민간 자금으로 2.9조 엔을 지원받음', 'evidence': [{'source_title': 'Naver News (Japan’s Semiconductor Investments)', 'url': 'https://n.news.naver.com/mnews/article/020/0003676377'}]}, {'politician': 'Fumio Kishida', 'policy': '그린 트랜스포메이션(GX) 프로그램', 'industry_or_sector': '그린 테크 및 재생에너지', 'companies': ['Toyota', 'Panasonic'], 'impact_description': 'Toyota와 Panasonic은 정책 대상 분야(자동차/EV, 배터리)에서 간접적으로 혜택을 받을 수 있음', 'evidence': [{'source_title': 'Goldman Sachs Insights', 'url': 'https://www.goldmansachs.com/insights/articles/japans-prime-minister-how-japan-is-promoting-a-new-form-of-capitalism'}, {'source_title': 'Wikipedia (New Form of Capitalism)', 'url': 'https://en.wikipedia.org/wiki/New_Form_of_Capitalism'}]}, {'politician': 'Fumio Kishida', 'policy': 'GDP 2% 목표 방위비 확대', 'industry_or_sector': '방위 산업', 'companies': ['Mitsubishi Heavy Industries', 'IHI Corporation'], 'impact_description': 'Mitsubishi Heavy Industries와 IHI Corporation은 방위성 계약업체로 전투기 엔진 및 미사일 부품 공급', 'evidence': [{'source_title': '日 방산업체 IHI도 미쓰비시중공업 이어 사이버 공격 받아', 'url': 'https://n.news.naver.com/mnews/article/003/0013641234?sid=104'}]}, {'politician': 'Fumio Kishida', 'policy': '디지털 가든 시티 네이션 이니셔티브', 'industry_or_sector': '디지털 인프라 및 AI', 'companies': ['Amazon.com Inc.', 'Google LLC'], 'impact_description': 'Amazon.com Inc.와 Google LLC는 디지털 에이전시와의 공공-민간 협력 파트너십에 참여', 'evidence': [{'source_title': 'JETRO', 'url': 'https://www.jetro.go.jp/en/invest/insights/japan-insight/nation-drive-datafirst-digital-society-future.html'}]}], 'notes': ''}\n", + "[SKIP] already evaluated query: Fumio Kishida\n", + "[DEBUG] Processing line 18, query=Mohammed bin Salman\n", + "[DEBUG] Gold report keys: {'report_title': '무함마드 빈 살만 사우디 왕세자의 정치·경제 영향력 네트워크 분석', 'time_range': '2016–2025년 11월 24일 기준', 'question_answer': \"무함마드 빈 살만 왕세자는 'Vision 2030'을 통해 Saudi Aramco 상장과 석유산업 민영화로 막대한 자금을 조달하고, NEOM 스마트시티 등 초대형 프로젝트를 추진하여 건설·관광 분야에 Bechtel, Bouygues 등 글로벌 기업을 끌어들였습니다. 또한 OPEC+ 감산을 주도하여 유가를 부양함으로써 Aramco와 SABIC 등 사우디 에너지·석유화학 기업의 수익을 극대화했습니다. 동시에 Public Investment Fund(PIF)를 활용해 Lucid Motors, SoftBank Vision Fund 등에 투자하여 사우디 경제를 다각화하려는 노력을 기울이고 있습니다.\", 'influence_chains': [{'politician': 'Mohammed bin Salman', 'policy': 'Vision 2030 경제개혁', 'industry_or_sector': '국부펀드/투자', 'companies': ['Saudi Aramco', 'Lucid Motors'], 'impact_description': '2016년 발표된 Vision 2030에 따라 MBS는 국영 석유회사 Saudi Aramco 지분 일부를 2019년 국내 상장시켜 약 294억 달러를 조달하며 세계 최대 IPO를 기록했습니다:contentReference[oaicite:44]{index=44}. 이를 통해 확보한 자금은 사우디 국부펀드(PIF)에 투입되어 전기차 기업 Lucid Motors 지분 인수 등 해외 첨단산업 투자로 이어졌습니다. 그 결과 Lucid는 사우디에 공장 건설을 약속받고 PIF로부터 10억 달러 추가 투자를 유치하는 등 사우디의 전략적 투자 파트너로 부상했습니다. 이러한 경제개혁 조치는 사우디 경제의 탈석유화를 촉진하고 있습니다.', 'evidence': [{'source_title': '사우디 아람코 IPO, 세계 최고 시가총액 기업 등극', 'url': 'https://www.reuters.com/article/us-saudi-aramco-ipo-idUSKBN1YI14V'}, {'source_title': '사우디 PIF, Lucid 모터스에 추가 투자…현지 생산 추진', 'url': 'https://www.bloomberg.com/news/articles/2023-05-03/saudi-arabia-s-pif-nears-deal-for-new-funding-for-ev-maker-lucid'}]}, {'politician': 'Mohammed bin Salman', 'policy': 'OPEC+ 감산 및 유가 정책', 'industry_or_sector': '석유/화학', 'companies': ['Saudi Aramco', 'SABIC'], 'impact_description': 'MBS는 2017년 이후 러시아 등 산유국과 OPEC+ 동맹을 맺어 산유량 조절을 주도했습니다. 특히 2020년 팬데믹과 2022년 우크라이나 전쟁 시기에 대규모 감산 합의를 이끌어내어 국제 유가를 부양함으로써, Saudi Aramco의 2022년 순이익이 전년 대비 2배 이상 폭증하고:contentReference[oaicite:45]{index=45} 석유화학 기업 SABIC도 고유가로 인한 원료가격 상승분을 판매가에 전가해 수익 개선을 누렸습니다. 유가 상승은 사우디 재정을 흑자로 돌려놓았고, MBS는 이를 재투자해 미래 사업에 재원을 투입하는 선순환을 만들고 있습니다.', 'evidence': [{'source_title': '사우디 아람코, 2022년 사상 최대 1611억달러 순이익 기록', 'url': 'https://www.bbc.com/news/business-64932727'}, {'source_title': 'OPEC+ 감산 결정, 글로벌 유가 4%↑…사우디 주도', 'url': 'https://www.reuters.com/markets/commodities/opec-surprise-output-cuts-send-oil-prices-soaring-2023-04-02/'}]}, {'politician': 'Mohammed bin Salman', 'policy': '초대형 프로젝트(NEOM 등)', 'industry_or_sector': '건설/관광', 'companies': ['Bechtel', 'Marriott International'], 'impact_description': \"빈 살만 왕세자는 5000억 달러 규모 미래형 도시 '네옴(Neom)'과 홍해 관광단지 등 초대형 프로젝트를 추진하여 글로벌 건설·관광기업을 사우디로 불러들이고 있습니다. 미국 건설사 Bechtel은 네옴의 첨단 신도시 '더 라인(The Line)' 건설관리 계약을 체결했고:contentReference[oaicite:46]{index=46}, 메리어트 등 세계적 호텔 체인은 홍해 프로젝트에 고급 리조트를 운영하기로 하는 등 사우디 관광산업 진출을 확대하고 있습니다. 이러한 메가프로젝트는 사우디 건설업에 활황을 가져와 현지 건설사와 외국 기업 모두에게 큰 기회가 되고 있습니다.\", 'evidence': [{'source_title': 'Bechtel lands contract for NEOM The Line project', 'url': 'https://www.constructionweekonline.com/projects-tenders/bechtel-neom-the-line-project-management'}, {'source_title': 'Marriott to open three luxury resorts in Saudi Red Sea project', 'url': 'https://www.hoteliermiddleeast.com/business/marriott-red-sea-saudi'}]}], 'notes': 'MBS의 주도로 사우디는 석유 중심에서 탈피해 미래 성장동력을 찾고자 노력 중이며, 그 과정에서 국내외 기업들의 참여를 적극 유도하고 있습니다. 정책 추진은 왕정체제의 강력한 드라이브로 단기간에 성과를 내고 있으나, 정치적 위험과 인권 문제 등이 외국 투자에 변수로 작용할 수 있습니다.'}\n", + "[DEBUG] Model report keys: {'report_title': '모하메드 빈 살만의 정책, 산업, 기업 영향력 분석', 'time_range': '2016–2026', 'question_answer': '모하메드 빈 살만(MBS)은 사우디아라비아의 실질적인 지도자로서 비전 2030을 통해 경제 다각화를 추진하고 있습니다. 그는 사우디 아람코의 IPO를 주도했으며, 공공투자펀드(PIF)를 통해 NEOM과 같은 메가 프로젝트를 추진하며 에너지, 기술, 관광, 재생에너지 분야에서 영향력을 행사하고 있습니다. MBS는 PIF의 의장으로서 뉴캐슬 유나이티드 FC, 우버, 테슬라 등에 투자하며 국제적 파트너십을 강화하고 있습니다.', 'influence_chains': [{'politician': 'Mohammed bin Salman', 'policy': '비전 2030', 'industry_or_sector': '에너지, 기술, 관광, 재생에너지', 'companies': ['Saudi Aramco', 'Public Investment Fund (PIF)', 'NEOM'], 'impact_description': '모하메드 빈 살만(MBS)은 사우디아라비아의 실질적인 지도자로서 비전 2030의 주요 설계자입니다. 그는 사우디 아람코의 IPO를 주도했으며, 공공투자펀드(PIF)를 통해 NEOM과 같은 메가 프로젝트를 추진하며 경제 다각화를 이끌고 있습니다. PIF는 사우디 아람코의 8% 지분을 보유하고 있으며, NEOM을 완전히 소유하고 있습니다. MBS는 PIF의 의장으로서 기술, 관광, 재생에너지 분야의 투자를 주도하고 있습니다.', 'evidence': [{'source_title': 'Mohammed bin Salman (Wikipedia)', 'url': 'https://en.wikipedia.org/wiki/Mohammed_bin_Salman'}, {'source_title': 'Saudi Aramco IPO and Bin Salman’s Fiscal Takeover (Baker Institute)', 'url': 'https://www.bakerinstitute.org/research/revamping-energy-policy-saudi-arabia-view-future'}, {'source_title': 'Saudi Arabia’s 2026 Budget (Majalla)', 'url': 'https://en.majalla.com/node/328566/business-economy/saudi-arabias-2026-budget-carefully-boosts-spending'}, {'source_title': 'NEOM (Wikipedia)', 'url': 'https://en.wikipedia.org/wiki/Neom'}, {'source_title': 'Public Investment Fund (Wikipedia)', 'url': 'https://en.wikipedia.org/wiki/Public_Investment_Fund'}]}, {'politician': 'Mohammed bin Salman', 'policy': '비전 2030', 'industry_or_sector': '에너지, 국방', 'companies': ['Saudi Aramco'], 'impact_description': 'MBS는 사우디 아람코의 IPO를 주도하여 비전 2030의 자금 조달을 지원했습니다. 사우디 아람코는 미국과의 LNG 계약을 통해 에너지 다각화 전략을 추진하고 있습니다. MBS는 PIF를 통해 간접적으로 아람코에 영향을 미치며, 생산 및 투자 결정에 대한 정부 통제를 유지하고 있습니다.', 'evidence': [{'source_title': 'Saudi Aramco IPO and Bin Salman’s Fiscal Takeover (Baker Institute)', 'url': 'https://www.bakerinstitute.org/research/revamping-energy-policy-saudi-arabia-view-future'}, {'source_title': 'Saudi Aramco IPO Analysis (Breaking Defense)', 'url': 'https://breakingdefense.com/2025/02/saudi-arabia-increases-defense-spending-to-78b-in-2025/'}, {'source_title': 'Saudi Arabia’s Military Spending (Middle East Eye)', 'url': 'https://www.middleeasteye.net/news/saudi-arabia-rejoins-worlds-top-five-military-spenders-says-report'}]}, {'politician': 'Mohammed bin Salman', 'policy': '비전 2030', 'industry_or_sector': '투자, 기술, 스포츠', 'companies': ['Public Investment Fund (PIF)'], 'impact_description': 'MBS는 PIF의 의장으로서 9,410억 달러 규모의 자산을 관리하며, 비전 2030의 핵심 프로젝트를 추진합니다. PIF는 NEOM을 완전히 소유하고 있으며, 사우디 아람코의 8% 지분을 보유하고 있습니다. 또한 뉴캐슬 유나이티드 FC, 우버, 테슬라 등에 투자하며 경제 다각화를 실현하고 있습니다.', 'evidence': [{'source_title': 'Public Investment Fund (Wikipedia)', 'url': 'https://en.wikipedia.org/wiki/Public_Investment_Fund'}, {'source_title': 'Saudi Arabia’s 2026 Budget (Majalla)', 'url': 'https://en.majalla.com/node/328566/business-economy/saudi-arabias-2026-budget-carefully-boosts-spending'}]}, {'politician': 'Mohammed bin Salman', 'policy': '비전 2030', 'industry_or_sector': '기술, 관광, 재생에너지', 'companies': ['NEOM'], 'impact_description': 'NEOM은 MBS가 주도하는 비전 2030의 핵심 프로젝트로, PIF가 완전히 소유하고 있습니다. 이 프로젝트는 녹색 수소 및 미래 도시 개발을 목표로 하며, 사우디 경제 다각화의 상징입니다. 그러나 지연, 비용 초과, 인권 논란 등으로 어려움을 겪고 있습니다.', 'evidence': [{'source_title': 'NEOM (Wikipedia)', 'url': 'https://en.wikipedia.org/wiki/Neom'}, {'source_title': 'Fortune Korea', 'url': 'https://www.fortunekorea.co.kr/news/articleView.html?idxno=39565'}]}], 'notes': ''}\n", + "[SKIP] already evaluated query: Mohammed bin Salman\n", + "[DONE] saved eval JSONL to ../dev_test/influence_model_responses_eval_3.jsonl\n" + ] + } + ], + "source": [ + "await evaluate_influence_reports()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 평가 결과 파싱 함수" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "from pathlib import Path\n", + "from typing import Any, Dict, List, Optional\n", + "from collections import Counter\n", + "\n", + "\n", + "def _is_valid_evidence_item(item: Dict[str, Any]) -> bool:\n", + " \"\"\"\n", + " Return True if this evidence item should be used for scoring.\n", + " Filters out:\n", + " - NOT_ENOUGH_INFO labels\n", + " \"\"\"\n", + " label = item.get(\"label\")\n", + " if label == \"NOT_ENOUGH_INFO\":\n", + " return False\n", + " return True\n", + "\n", + "\n", + "def extract_scores_from_record(record: Dict[str, Any]) -> Dict[str, Any]:\n", + " \"\"\"\n", + " Given a single JSON record like:\n", + " { \"query\": \"...\", \"evaluation\": { ... } }\n", + "\n", + " Return:\n", + " {\n", + " \"impact_scores\": [...],\n", + " \"impact_labels\": [...],\n", + " \"attribution_scores\": [...],\n", + " \"attribution_labels\": [...],\n", + " \"gold_score\": float | None\n", + " }\n", + " \"\"\"\n", + " evaluation = record.get(\"evaluation\", {}) or {}\n", + " chain_results: List[Dict[str, Any]] = evaluation.get(\"chain_results\", []) or []\n", + "\n", + " impact_scores: List[float] = []\n", + " impact_labels: List[str] = []\n", + " attribution_scores: List[float] = []\n", + " attribution_labels: List[str] = []\n", + "\n", + " for chain in chain_results:\n", + " # -------- Impact Evidence --------\n", + " impact_item = chain.get(\"impact_result\") or {}\n", + " if isinstance(impact_item, dict) and _is_valid_evidence_item(impact_item):\n", + " score = impact_item.get(\"score\")\n", + " label = impact_item.get(\"label\")\n", + "\n", + " if isinstance(score, (int, float)):\n", + " impact_scores.append(float(score))\n", + " if isinstance(label, str):\n", + " impact_labels.append(label)\n", + "\n", + " # -------- Policy Attribution --------\n", + " attr_item = chain.get(\"attribution_result\") or {}\n", + " if isinstance(attr_item, dict) and _is_valid_evidence_item(attr_item):\n", + " score = attr_item.get(\"score\")\n", + " label = attr_item.get(\"label\")\n", + "\n", + " if isinstance(score, (int, float)):\n", + " attribution_scores.append(float(score))\n", + " if isinstance(label, str):\n", + " attribution_labels.append(label)\n", + "\n", + " gold_eval = evaluation.get(\"gold_eval\", {}) or {}\n", + " gold_score = gold_eval.get(\"similarity_score\")\n", + " if not isinstance(gold_score, (int, float)):\n", + " gold_score = None\n", + "\n", + " return {\n", + " \"impact_scores\": impact_scores,\n", + " \"impact_labels\": impact_labels,\n", + " \"attribution_scores\": attribution_scores,\n", + " \"attribution_labels\": attribution_labels,\n", + " \"gold_score\": gold_score,\n", + " }\n", + "\n", + "\n", + "def _mean(xs: List[float]) -> Optional[float]:\n", + " return sum(xs) / len(xs) if xs else None\n", + "\n", + "\n", + "def _is_domestic_query(query: str) -> bool:\n", + " \"\"\"\n", + " query 안에 한글(가~힣)이 하나라도 포함되어 있으면 국내로 간주.\n", + " \"\"\"\n", + " return any(\"가\" <= ch <= \"힣\" for ch in query)\n", + "\n", + "\n", + "def compute_averages_from_jsonl_by_region(path: str) -> Dict[str, Any]:\n", + " \"\"\"\n", + " Read a JSONL file where each line is:\n", + " { \"query\": \"...\", \"evaluation\": {...} }\n", + "\n", + " Aggregate all valid scores across records and compute:\n", + " - overall averages + label counts\n", + " - domestic(국내) averages + label counts\n", + " - foreign(해외) averages + label counts\n", + " \"\"\"\n", + " p = Path(path)\n", + " if not p.exists():\n", + " raise FileNotFoundError(p)\n", + "\n", + " # 전체\n", + " all_impact: List[float] = []\n", + " all_attr: List[float] = []\n", + " all_gold: List[float] = []\n", + " all_impact_labels: List[str] = []\n", + " all_attr_labels: List[str] = []\n", + "\n", + " # 국내\n", + " dom_impact: List[float] = []\n", + " dom_attr: List[float] = []\n", + " dom_gold: List[float] = []\n", + " dom_impact_labels: List[str] = []\n", + " dom_attr_labels: List[str] = []\n", + "\n", + " # 해외\n", + " for_impact: List[float] = []\n", + " for_attr: List[float] = []\n", + " for_gold: List[float] = []\n", + " for_impact_labels: List[str] = []\n", + " for_attr_labels: List[str] = []\n", + "\n", + " with p.open(\"r\", encoding=\"utf-8\") as f:\n", + " for line in f:\n", + " line = line.strip()\n", + " if not line:\n", + " continue\n", + " record: Dict[str, Any] = json.loads(line)\n", + "\n", + " query = record.get(\"query\", \"\") or \"\"\n", + " is_domestic = _is_domestic_query(query)\n", + "\n", + " per = extract_scores_from_record(record)\n", + "\n", + " # ---- 전체 집계 ----\n", + " all_impact.extend(per[\"impact_scores\"])\n", + " all_attr.extend(per[\"attribution_scores\"])\n", + " all_impact_labels.extend(per[\"impact_labels\"])\n", + " all_attr_labels.extend(per[\"attribution_labels\"])\n", + " if per[\"gold_score\"] is not None:\n", + " all_gold.append(per[\"gold_score\"])\n", + "\n", + " # ---- 국내 / 해외 집계 ----\n", + " if is_domestic:\n", + " dom_impact.extend(per[\"impact_scores\"])\n", + " dom_attr.extend(per[\"attribution_scores\"])\n", + " dom_impact_labels.extend(per[\"impact_labels\"])\n", + " dom_attr_labels.extend(per[\"attribution_labels\"])\n", + " if per[\"gold_score\"] is not None:\n", + " dom_gold.append(per[\"gold_score\"])\n", + " else:\n", + " for_impact.extend(per[\"impact_scores\"])\n", + " for_attr.extend(per[\"attribution_scores\"])\n", + " for_impact_labels.extend(per[\"impact_labels\"])\n", + " for_attr_labels.extend(per[\"attribution_labels\"])\n", + " if per[\"gold_score\"] is not None:\n", + " for_gold.append(per[\"gold_score\"])\n", + "\n", + " return {\n", + " \"overall\": {\n", + " \"impact_avg\": _mean(all_impact),\n", + " \"impact_label_counts\": dict(Counter(all_impact_labels)),\n", + " \"attribution_avg\": _mean(all_attr),\n", + " \"attribution_label_counts\": dict(Counter(all_attr_labels)),\n", + " \"gold_avg\": _mean(all_gold),\n", + " },\n", + " \"domestic\": {\n", + " \"impact_avg\": _mean(dom_impact),\n", + " \"impact_label_counts\": dict(Counter(dom_impact_labels)),\n", + " \"attribution_avg\": _mean(dom_attr),\n", + " \"attribution_label_counts\": dict(Counter(dom_attr_labels)),\n", + " \"gold_avg\": _mean(dom_gold),\n", + " },\n", + " \"foreign\": {\n", + " \"impact_avg\": _mean(for_impact),\n", + " \"impact_label_counts\": dict(Counter(for_impact_labels)),\n", + " \"attribution_avg\": _mean(for_attr),\n", + " \"attribution_label_counts\": dict(Counter(for_attr_labels)),\n", + " \"gold_avg\": _mean(for_gold),\n", + " },\n", + " }\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "result = compute_averages_from_jsonl_by_region(\"../dev_test/influence_model_responses_eval_3.jsonl\")" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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c6kvycyN8Azt3b5GS1eEHAAAGnAz9E5hmqEXrtngWw3avxymo7BkSzP0F7ay0udT0NGo0jT16PRoZTWFkAMAAAKoIblHmxx3BNMo0PK8It+WGPr65ezl9s3cio3PwZblqVen5hByAABATKNAbZtlucNrht5j61Z23MNfVXrftk2zrCaxnzwAAKgWbYOhWVThum10ua4PtV1GIhFyAABAtaiZWNPEJTjoeD/r+ppeL4eQAwAAqk3TwzVNvH3zwJKUfq6N6eNCTw4AAIgLBRlNE58ye5m999lUO2Dv/qx4DAAAkkNaaor1755rK2eVua+1taWDUK4CAABJiZADAACSEiEHAAAkJUIOAABISoQcAACQlAg5AAAgKRFyAABAUiLkAACApETIAQAASalKIefFF1+0Pffc0zp16uR+Xr16te2///62ePHieL8+AACAmgk5t956q11//fV20UUXWUFBgbusZcuWdsopp9g111xTtVcBAABQ2yHn7rvvtjfeeMOOOOIIS0nZsh/FUUcdZa+//nq8Xx8AAEDNhJz8/Hzr2rVrhctLSkpsw4YNVXsVAAAAtR1yBg0aZHfeeWeFyx9++GEbOnRozC9g/vz5Nnz4cGvevLl17NjRxo4da5s2bYrqvtOnT7cDDjjAlcs6d+5sxx57rC1atCjm1wAAAJJPzCHnrrvusv/+9792+OGHW3FxsQs3xx9/vN1zzz3uulisX7/ehgwZYgcffLCtXLnSvv32W/v8889d0KnMF198YYceeqjrBVq+fLn98ssvNmzYMFu6dGmsbwkAACShmEPO1ltvbT/88IP179/f9t13X3vttddshx12cAFFoymxuPfee22XXXaxM844w9LT061Dhw727LPPupEihZ5wSktLbeTIkfboo4/acccd5+6bk5PjAo8eDwAAID3Wj+DMM8+0++67z6644opqf3oTJ060yy67LOCytm3b2oABA+zdd991I0Sh6DqFmoMOOqjarwEAACSnmEPO+PHj3QyrtLS0aj/5rFmzrFevXhUu79Gjh7sunC+//NIGDhzovl533XWuN6d169ZuROj8888PmPXlKSoqcodn3bp1voZpHfHkPV68HxcAgPqgJIHnwVgeM+aQM2LECDvnnHNcqSkrK8uqQzO11DQcLDc31/Ly8sLeb9myZfbjjz/atGnT7Pbbb3cLE86cOdOOOeYYF3AUdIKNGzcuZK/Pe++9Z9nZ2ZYI77//fkIeFwCA+uD9BJwHvTX6EhJyysrKbMKECe7Ya6+9rE2bNgHXP/bYY1E/lkpOa9ascb04/nSZgk44jRo1cqMyalJu0qSJu6xv376uIfrf//53yJAzZswYGzVqVMBITpcuXdzsrGbNmlm8U6Z+sZptlpGREdfHBgCgritJ4HnQq8QkJOT069fPHfGgUtXs2bNt++23D7j8t99+s5NPPjns/bbddlt3Gy/geHr37m1//fVXyPtkZma6I5g+/EQFkUQ+NgAAdV1GAs6DsTxezLOrTjrpJHf07NnTzYDSobDiXR4LTQFXj4+/FStW2NSpU+3AAw/0XRa8bo7W1fnss8/s559/Drj8m2++CdnjAwAAGp7UqtTCNKtJC+99/fXX7tCWDgoehYWFMT2WykqffPKJPf744y7ILFy40D3u6NGjrVWrVu42U6ZMceWkOXPm+O6nFZc1K0tr9eh6TSnXV5WqrrzyyljfEgAASEIxl6suueQSVyZSuahx48a+4KN1a7RppxqSo6Wm48mTJ7uwc8EFF7geHTU1X3755b7b6Dn0fMHDU9oMVP1Aet4FCxa4GVlqQj766KNjfUsAACAJpZSpkzgGChaa3q0p2/6WLFniemJWrVpl9YEal7SVxNq1axPSePz222+7lZzpyQEANDQlCTwPxnL+Tq3KC/dGcPxpFCbU+jQAAAC1IeaQo1Sm6djBVD5SXw4AAEC97MnRasfaVFPr0mgGlEZvtM2CvrL4HQAAqLcjOerJ0VRtLaynuphqYprVpNlNLVq0SMyrBAAASPRIzvz58+2NN96w008/3W3xIMXFxfbwww+7clXHjh1jfUgAAIDaH8nR+jRasC89PT1gmwXtQ3X11VfH+/UBAADUzEiO+m4eeuihCpefddZZbgo5AABAvRzJ0caY/qM4vgdKTXUbawIAANTLkLP33nvbU089VeFybc2wzz77xOt1AQAA1Gy56o477rDBgwfbzJkz3Qab8vrrr9uECRPcPlQAAAD1ciRn2223tWnTptnGjRvdRpo6tEGmdg5nB3AAAFBvR3Kkc+fOdv/997vvV65caU2bNnUzrAAAAOrVSM7SpUvtnnvucbuNe9avX28HHHCAtW3b1i0CeMUVVyTydQIAAMQ/5KgP59tvv7Xs7GzfZddff7399ddf9umnn9qrr75qL7zwgj3zzDOxPTsAAEBtlqu0wvH48eMDLnv++eftiSeesIEDB7qfH3vsMbv44ot9qyADAADU+ZGchQsX2o477uj7WXtXqfFYs6z8p5b/8ccfiXmVAAAAiQg5LVu2dBtxel5++WX7+9//HnCbkpIStxM5AABAvQk5ajC+/fbb3ffat0oL/x111FEBt3nttdds1113TcyrBAAASERPznXXXWd77rmn27dKu5CrD2fffff1Xb9hwwa79tpr7Zprron1+QEAAGov5HTo0MGtcKyQk5OTY/vvv3+Fnh1NIT/mmGMS8yoBAAAStRhgkyZNKvTheHr27OkOAACAerutAwAAQH1AyAEAAEmJkAMAAJISIQcAAMRN6aZS+2bpN/ZD8Q/uq36uVyHnxRdfdFPKO3Xq5H5evXq1m3G1ePHieL8+AABQT3ww9wMbNmGYnT75dHup4CX3VT/r8noRcm699Va3OedFF13k25VcKyKfcsoprJMDAEAD9cHcD2zUx6NsacHSgMuXFSxzl9dG0Ik55Nx9991uw84jjjgiYBsHrYD8+uuvx/v1AQCAOq50U6ndPO1mK7OyCtd5l90y7ZYaL13FHHLy8/Ota9euFS7X3lVa+RgAADQs05dNrzCCExx0lhQscberk4sBegYNGmR33nmnK1f5e/jhh23o0KHxfG0AAKCOKCsrszVFa2x+3vyAY0HeAvt99e9RPcbyguVWp0POXXfd5fat+vTTT624uNiFm48++si++uordxkAAKifSjeVuhGZUEFGX/NL8qv1+G2y21idDjlbb721/fDDD3b//ffbpk2b3O7je+yxh913332uARkAANRdhRsLbWH+wpBBRpeXbCqJeP+22W2tS9MuAUennE524UcX2ooNK0L25aRYirXLbmd92/a1Oh1yvNGavffe2x2eGTNmuP2tFIIIOwAA1J61RWsrhBjv0GynSNJT061zTmfr3LRzyDCTlZ4V8n6X97/czaJSoPEPOvpZLt39UktLTbM6HXJuvPFGmzx5svXu3dvV59avX2/z5s2z3NxcF270/WGHHWaPPPKINWvWLDGvGgCABmxT2SZbur68rLQgv7yU5H/kFedFvH9ORo4LLaGCjEZcqhJGhnQbYv/Z9z9ulpV/E7IeTwFH19e0mENO69at3To5Y8aM8V02f/58O+OMM2z06NE2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jSLpJK1duyNRz9ANN9xg48ePd2UghTAFAs/ixYtd4NEoiF7zNddcY0ceeaQtWbLEVx7TfadMmWIzZ860L7/80gWiF154wb744gubNWuWff755y60ya233moPPvig2yVXZT2FGI22eCHogw8+cCFI1y9dutSFrKOOOsqFKAVKff3pp5/c95E26VQw0/tRkFRYVNj69NNPfdefcMIJNmnSpIDPRyNx6qlSOe+bb76xf/3rX3b33Xe716nPVu8JAFA5ylVR2rBxg/V/rr/Fg0Z49nxhz6huO/X4qZadkV3p7ZYtW2YdO3b0/awTvnbK9hQXF9uzzz5rBx54oN10001uFGTHHXd015166qn2448/uvDjv+nkFVdc4U6u++yzj/tZJ2qNkChEVDZyofuJNrQcOHCgvfLKK3biiSeGvY9Ci0ai+vXr537Wc15wwQW+51LQ0AiL91qGDx9ue+21lwszopCg96dmZznrrLPs4osvtj/++MP3uSgsKEAcffTRLlDp++22285dp9tqxOn99993P2vURo3Rbdu2dT8rXGmkSAFLI0XR0mdx0kkn+X4+7rjj3PMogEmHDh3c56NA6Y3oKMh499HzXnnllS6EikKsPiu9FgBAZIScJKGSioKORydyHR6VNzTjSaFB5RmVg/wp/KiHxlNQUOBGKmLt5VE567vvvnOjHh6NdujxwoUcXafXFapvx6Oy0LBhwwIuU4BSD5IosHXp0iXg9goE/sHPKy3pufSavODg37itxmDdToHOCzjejDN9xnq+aEOOHk+jUZrxdt999/nCpn5WSGncuLG7TIFGDdoKOSqxKYBqlMkbobvlltAjgwCAyAg5UWqc3tiNqlTm26Xf2tmTz670dvfvf7/t2m7XqJ43Gv3793e9K7/88otvdMKfyj3RTBH36GQsaWlpAZfn5eVVOnJx4YUX2qWXXhpwH4UQzfTq3Llz2OdKTw/85+hfwlFJKNLrVqkumEpDkW7v/5n404iRSkXV9dZbb7nZY6+99lrA5QcffLBNnDjR9eh4o1IatVI5SmUyXd+oUSN3XVFRkWVkZATcv7LSHwCgHD05UdIJVmWjyo49O+7pZlGFfRxLsfbZ7d3tonm8aAKJFwLUs3L++ee7ERt/P//8syvbSJ8+fdwoRnAD8TvvvBOwjotGLTQy4jX3evz7SUKNXKhkpB6f9u3b+w71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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAHqCAYAAADoACEeAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAZJNJREFUeJzt3QeUVEX6uP9CUCQjIgZEUTEnzDmBGRUjJgzr6prWLCqYMOIqa2bNWTHnvIJZMYc1YxZREVRAQUCh/+ep/7fm19PTMww4w3TPfT7n9JmZTnP79g3vrXrrrSa5XC4XJEmSMmiuhl4ASZKkhmIgJEmSMstASJIkZZaBkCRJyiwDIUmSlFkGQpIkKbMMhCRJUmYZCEmSpMwyEJKkOjR27Njwxx9/uE4zxtrE5ctASFLZ+fLLL0O7du3Ct99++5fe59VXXw2LLrpomDp1aq2e//TTT4fOnTvX+JxevXqFq6++OjQUPtNdd901S6+ZMWNGmD59egzgpk2b9peXYeeddw4DBgwI5WTdddcNL7744my/vnXr1uHOO++sdN8nn3zSoNuCasdASCWja9eu4fLLLw+N1cCBA0OTJk2qvR1yyCG1ep9ff/01nozvv//+Gp/XsWPHcOONN4ZyMnny5DBx4sTw+++/x5Pyn3/+GU/MU6ZMibeE9cXz5p133irv8fLLL4f//ve/le679dZbw8cff1wRRDVv3jy+nvf58ccf49+1Mc8888TX1KRZs2ahVatWRR8j2KhNoEFgwvc8q3777bew5557hsUWW6zKY3vttVf8nHPPPXe88XuLFi3ijZN427Zt461Dhw6z/H+HDh0aA4mkadOm8b1KAeu82O+sYz73O++8E/8eP358+PTTT4u+x7XXXhtWXXXV+L0utNBCYZ999gmjRo2q9Jy0HvMtueSS4dJLLw2PP/54HX8q1SUDIekvevbZZ8MDDzxQq+d27949/PLLL0VvF110Ua3egwPucsstF+aff/7Q2Bx55JGxpYcTSps2bUL79u3jCZXPvP3221c8b665qj90PfXUUzHwKTyRvfLKKxWBCsEIJzXeh79rixP8d999F5eR9b/IIouExRdfPP4k8OR+WmR4XjG33HJLDEAIpghGCOTyPyefm/t4/corrxxmVf/+/UOPHj0qBSXJNddcE37++efY+kWQyU8CTm4EoJMmTQo33HBD0SCK5997770xWKguQOTzJHyGUukqOvTQQ+O6nW+++eK6HjNmTLyf74DPnIJp1jnbWSECmTPPPDOce+658bWvv/56fJ+NNtooBtMJ32vhdsk6oUXoH//4RwxSVZpqfwSQVG0g9NVXX4Udd9xxpmuIgy0nvb+CE/fw4cMb5bdx1VVXxRNH4QmF1jROQEl1gUY6If3www9h2LBh8Xm0AhBoptdwAuT9+ZufNQVVhXgtQc8333xT9HW0Mmy88cbVthrtuuuuYfPNN4/LSFDRpUuXSq1atFYRVHCindVA4sMPP4zBzhdffFH08epaqfLx2m7dulW5n2CJZR85cmS122/+Z+bzsS5KAdtTse6pwu+o2PfJd3D66aeHhx9+OGy44YbxPoLV//znP2GzzTaL22u/fv0q3q/Y977++uvH1qTzzz8/BlQqPQZCkkpGTQFOfovDzIIXggJa2Aga6V5LuUS0ghAY5QdFsyJ1rVT3/9P9+V0w+TiJciOwIKC6/fbbY4CRHHvssaFly5bhtttuC7Pqsssuiy1BvO/sovtwpZVWqnJ/Wl8EaNXJX5d8Vw3dIkTL2JtvvlmptSrlQLEd0NWav70V+07HjRsXA9a11lqrymNrrLFG+OijjyrdV932dNBBB4W///3v4eSTT651N6zmHLvGVJL233//cMwxx4SHHnooHnBosl5++eVj1wIeffTReHDiKnfFFVes1DW16aabhnvuuSdccsklYYkllohX3Kuttlp8r3xc5XF1vsACC8TbTjvtFK/0C5FDQGsPTessx+qrrx6GDBkSPvvss3jgO+OMM8JNN90UfyfP6a/gipv3+d///lflsfPOOy9stdVW8XeeQ0tUOumec845MR+BgywnMloGCk9EJIL27NkzrjOu6nffffcwevToisd5z59++ikMGjQoLLXUUvGEvc4661TJbyCwYFnonuP/LbjggqFv376VTgrvv/9+6N27d+wq4v9ts802VU4asyq/haGmAIbPzffKNvLggw/Gn3QzcUJjW+CzzSxgqQ6fPZ1QC1s8+Jv7+f8ze9+0PRd2NX3//fdxW50djzzySFznhTjh16Z1hmUnv4rth+2AVrUkBQzVfa7C1hAC0JkFQnvvvXdMqi62vOxrI0aMiH/T+sk+nboP11tvvaLbd7HE9gkTJsRRfHRncuN37qMrsDD4KRaEc1xgGyagKvTGG29U2d+r2y5ZfrolWb8qPQZCKlmPPfZYvIqi6ZnRFyQo7rvvvjGp+MADD4xXVyQ38pw+ffpUJMPiwgsvDE888UQ8EdI6sNtuu8Ur77vvvrviOccff3z429/+FgMdDrYcHAkU8pNZn3nmmdi0TZDx/PPPx+Dn8MMPD//6179ifgBdLiSncuP3YgHMrFhmmWXCJptsEm6++eYqjxFskWtQaL/99otN/+Qy0EV38cUXx+RVDrz5Qd/WW28dT5Ssj5deeimeSPi8+UO9WbfkuJCIzfPIy+GWH3TtsMMO8UREUz9dOQQanADSKCG6sFJ3wNtvvx3efffdGHzQZZS/TMXwHgQCvJ6uCG78zucrdhImYZXunPz8i5paY/jMPD+dRGsbJOQHQpxQU5IxQV4K9tJ9nMBTwDSz75rAJx+BOAHmrGKZaPUq9lq+d07yBIEEE5zcF1544ThajvvShQD3EZixDdCqxEVEbQOhQmwPM1uvtJKw7RRuE1zUsGwEPG+99VYchcftvffei9sSQfcpp5xS65F+rFO6t2htS13KKQDKD4Sqa+XjfxG0cUFACxEXKxwDON4U7o/VBUJsI+SSpTw1lZicVCIWX3zx3GWXXRZ/32+//ThT5YYNG1bpORtvvHG8/5lnnql0/6abbpo788wz4++bbLJJbokllshNmTKl0nMGDBiQW2SRRXJ//vln/HvSpEmVHv/pp59yc801V+7pp5+Of0+bNi232GKL5Y499tgqy8pzx40bV7Gs3Gbm9NNPzzVt2jTXrl27ord77703Pu/WW2/NLbzwwhXLiREjRuQ6deoUlwlpHTz22GNxmd99991K/2v69Om5+eabL3fDDTfkfv/999yCCy6Yu/LKKys9548//sh16dIld80111S85zrrrBNfm2/XXXfN7bvvvvF33qNNmza50aNHV/l8I0eOjD9XXXXV3EknnVTl8fXWWy938skn17iODjjggPj/Xnvttdzbb79d6fbJJ59UPO/777+Py5tut9xyS8Vjp512Wvzsa665Zvyfq6++eq5Vq1a5q6++Oj7+xRdf5Jo0aRJ/f+qpp+L6m5kZM2bkZhXr95dffqn28eOOOy63//77V/z9448/xs8yatSo+B1MmDCh1v/rzTffjK996623ii5H/raUj+3xo48+mulnZnl4/88//7zoc++55564Tps1a1bxnbC9z8zSSy+dGzJkSKX7ttpqq9wll1wSf7/gggvicaFw/Y8fP77KdlrMp59+mmvbtm1upZVWym2zzTa5eeaZJ3fxxRdXPM7ysq3xPa2xxhq522+/vej7sO2suOKK8TO2bt06t/fee+e+/vrrSs/p3Llz3J6qw/sfeeSRM11mzXnmCKlk0aJAi0U+rlK5+qepOR9XW7SG5LeSFPbF03LEyA9agOhuIxeDK9wPPvgg3j7//PN4hZyGxdJqwtVkSobMNztDjLHCCitU6aJLuCoHLVeMnmL0E1fzYBg83YX5eTKghYt1tMoqq1S6Pz8JmOZ4RruccMIJ4cQTT6z0PEbN0MRPC1sadVR4ZUzX43PPPRd/J6eFYdjF8lCWXnrp2NrCVTvr8oorrqj0OHkxMxtSzf+mq61YTka+1NpAVwejtQoTq+muLJRagVgGyjTwHmxPdAXye015R3xmavOw/sk54bn8zB8dRUtiuuW3NNHilkam8T0ecMAB8fVse/ykG5eWhNTCQQI1aEWjBbI2UmmBYjk8szIqrrrWjbRuqmvp4rm0+KWWw3/+85+1yhGiVYjWz8MOOyz+TVctXbhsZ9hiiy1iiwxdq4z+YlunZY8WltpgO2C5aBnmM7Dv7bHHHnF7pxWPZVx77bVrtZzcaA1l5GexpGfeq6YuW45H+SUgVDoMhFSyyKEoZtllly16f36zPYFRIU6wIP+BkxPN5XS58FyCrpRPlE5gqQuEuiF1hZPnzPKIOGDSDUg+FIEQB09Owq+99lqV59IdUmyUD9LnINeDEzgBYLEDdf5oIoKeYtJJjXWy7bbbVrvsKa+EEVtpfRd+tprUdgRXTd0u6TMSlJHvkkaJERCkICYFTJzYCUAIEmtCThg3gmfeJz/QJGA5++yz4wk2JeGmGkgsZ34gQpDLyZ11nkaLsa7o2iV3JeF9ZqWwYSqlMDu1hwq/Z5a5WL4M9xHMUneJbmCCNIJotomUu1b4PjPDBQuBDl3cBNJs8+TqkSME9ku6x9hPCdIJsOkyI5Chi2xmyEujCz19VwQy/E5XO7l+HDN4Dl2K/K+ZKTZEvraBEF3ps3sBpfplIKSSVd1Jk5PZ7EjF0sg/4EqRPBpafVJgxUGRFqOEVg8O/ORxkD8xJ3H1yZUqJzbyKLgKLRbwcAIsVl2Z13GyAsvOiZkTWbEaMbPSesA64WRUnbSeOJHPTuJ4Wk6CCT4DrX/kkBBg0eLHyZfWQNYHamp14P9zkibgyA+A8nESnFnrE9IJjByaF154IZ7403aYTvqcBPlfxYo8Fo4ay0ewzXrPf11N71HdZ2V/+frrr6tNtqYVhe+F/5UqSXPj+azz1CpFvhv5aIVYTlpkaHUiUOF/crFC/g5BX/53we+1aRHq1KlTDE5oFTrrrLPi/2VIemErKnlvoGWTEXXk9rGt8HNm2yuBW34LKJ+RIL1w+Vh/1S0z2yLHAVqL2QYIotkm2fdoxeK4UVOrIu/Ld1PdxZ0alsnSapSKJVKSQM1BlRvdN7S25Lcu0UWR33RNki7dFBdccEGV9+JgSOJkUtdDhWmZ4WTPMtGdQmBUDCchutAKa8dQGC//c3BCYBRdIQINug1qi1YPui3yR5vlB5q0qtHtWOx/ceKa2dQPfG90qXHSZd2TLE1CKsnZBC1U1CZxvTbrm5MSycEEFfyeTs6csFIgQAAwK8nSfEZO3PkJ5rUZJVaT6urPzApO4gydp4WmOgSFtIbSnUiQTFDAshPssx1wsicYqW598DjbPAnytNLcd999cbQi66PY8td2vfL9UgCTJHOWh66sJBU/TAhgSHomoCg2kqvQwQcfHIMUWlP5/HTZ0c3GdpSWL/0sDN4YYEALIOuWAJ9BDKwDgj72N7pk+eyDBw8OG2ywQdwmqvseSazmtbyHSo8tQmqUyIUhqGHYO03SV155ZTxw0w0BrujpGmMUFd0nTMlAoMQBj4McgQ4nUYKQ7bbbLh78yDEij4fRYzS3U2mXgyE3RqhxtUj3RrE6LAknzJqq83LgTQh+WCZOBtUFK1y9X3fddTGoI++FwI4WJEaQpcJ3HMgJjNLQarojeIy8H3IdUn5GbbBM5FlwsuIEQKsVJ0eCF668WccsDwd8RviR68Q6ZSQZJ1kCG7qBqkNrAO+VuqCqk1qlagqIOMHzPgRCvFe6pSKLKSiqqTZOobRM+bla5LSkrpzq8L8I5NLnyv9saZJWWhjSyZjtLU0rQgsSwd/M8L1y0mc9z6wLtDopd2l2zE6LECh1wPKyHRYG/GwLjGI86qijYlcW+zLbF4FFYctRdRcKdFuyLbJ+GQGZWrvS50x5T6krM2GfohWotvlINQVCHCtoySzWZa8S0AAJ2lKtRo0VG4lVm/sZNcbopD59+sTRWIwY2nbbbauMrDrvvPPi/+TxLbbYIvfBBx/kjj766Ny8886bO+ussyqe98477+R69+4d34sRKOuvv37u+uuvrxiJ8+WXX8YRIc2bN4+j2qrDKJr8kU6FN0ai5GNUG//zmGOOqfJe+SPnfv3119wRRxyRW2CBBeJnYXQMI6xWXnnlOGosef311+N6YNQXNz7z448/Xuk9+SzFlpt1mj8KiXW37LLLxlE4Xbt2zR144IG5zz77rNIIMtY/o7datmyZ22CDDXK33XZbrq4wGojlHTNmTLXPmTp1arWfCYwqnDhxYm7s2LFVRhhW54033ojvyUg81kPhLf898/H89D0zUoltjO+gffv2cR3NP//88cbv3Mf3zuikFi1aVNkuavq8Sy21VO6+++7Lza7Bgwfn9txzz1l+Hf9zo402qvj7kEMOyZ144om1fv3ZZ58dt6XC9cZIOkYBdu/ePW7bHTt2jNvwq6++mvur0nfCiDswsix/f5lVfKcvvPBC0f/DKNDCka4qHQZCanQ4af+VA5pKH4EQQ5lrCoQYYp2CD06yBB4EGwSM/E6QQfBKYPLoo4/W6v9yAk7vmYaL8x5zzz13HIafHuP/FPrtt99qNeT7r6CcwnLLLReDotlx4YUX1jrwKgyE8i8CDj744Fy/fv1ypYx1xAXM+++/H/9efvnlK0oszCqG9/P9EygXu5DYa6+9/vLyqv7EYhoN3Sol1SWaoBlqzk2NUzpszSy3hu6xmkb6zI6ZDbWv7XPqC91LJDLTfTunFI6YopuW7tfajOxqLIp953Th0vVHPpMjxkqXgZAaHQMhSVJtGQhJkqTMcvi8JEnKLAMhSZKUWdYRqkUCHIW4qDXyV4ueSZKkOZfETyFLCsrWNHjBQGgmCILSJIiSJKm8UOyWqZWqYyA0E6nqLCtyZjNnS5Kk0kAlchoyZlY93kBoJlJ3GEGQgZAkSeVlZmktJktLkqTMMhCSJEmZZSAkSZIyyxwhSZJKyPTp08Mff/zR0ItR8uaee+7QtGnTv/w+BkKSJJVI3ZsffvghjB8/vqEXpWwwue9CCy30l+r8GQhJklQCUhDUqVOn0LJlS4v4ziRonDx5cvjxxx/j3wsvvHCYXQZCkiSVQHdYCoLmn3/+hl6cstCiRYv4k2CI9Ta73WQmS0uS1MBSThAtQaq9tL7+Sk6VgZAkSSXCOS3n/PoyEJIkSZllICRJkjLLZGlJkkpU15MenaP/76vzetXLCC9udGOVYtefgZAkSfpLLrvssnDFFVeE5s2bx9Fbc801V6Ug6PPPP4/P6du3b43vM2PGjDhq7ueff45B0/LLLx8ee+yxsMQSS4T6YiAkSZL+kiOOOCLeqtOjR49Kwcyff/4Zg6UUMCX8TcXo1HJEUJWGydcXc4QkSVK9+uKLL8Kyyy5b8ff1118fDjrooKLPze8+o4WJVqL6ZIuQyqbvutT7wSVJVVHwkGCmY8eOlVp+2rRpM9NAqFmzZgZCkiSpNL3xxhthn332id1XdGlxI3iZNm1aRYL0r7/+GqfD6NatW5gyZUoYOXJk7PKimnYxBkKSJKksrL766uGtt96KwQ9BUHLIIYeEddddN+y///6Vnk9uEM+tKRBiqpFVV101PvfLL7+MAVV9smtMkiTNFrq4ZiWZmSAIBEIEOsXMN9984d13342/E0yZIyRJksran//XEpQQCDE/2C+//BLGjh0b3n///fDcc8+F3r17V3odrUGZCoSYPfbDDz+sSKh65513wqabblrleTSnbbDBBuGJJ56o9r3mnXfeeCvEa4gwJUlS3dh3333D66+/HuaZZ56K2kH8feWVV8bH33vvvfDZZ5+FhRdeOP7doUOH8NFHH4U99tgj/k69oJ49e4bu3btX6gpL79XoA6FJkyaFa665JkaF+Vgh9BUWos9xxRVXrPE9p06dGr799ttKWeqSJJWTchnhevPNN9f4+GqrrVapK2zLLbeMt9po9C1CVKI87rjjav1Bf/jhh/Dwww+Hiy++uN6XTZIk/XWMBJudgGZOdI01eEHFQw89NA6rY0hdbfznP/8Je+21V2jfvn29L5skSaqbQKiwinRNz81UIDQrCJauvvrqcNRRR9Xq+ZdccklYZZVVYv8j3WzXXnvtTF9Dl9rEiRMr3SRJ0ux78803Q5cuXWr13NGjR1f8vvvuu8e5xxp119isuO2228I666wTizLNDElXRJ+PP/54TMJ++eWXw3777Rf7KKlvUJ1BgwaFM844o46XXJIkzWqLUL9+/UJ9K6sWIfKCjjnmmFo9d9iwYTGg6dy5cyzytMkmm4QLL7ww5iTVpH///mHChAkVt1GjRtXR0kuSpFJTNi1CTz31VKxBUGw4fW0tvfTS4bvvvqvxOUzwxk2SJDV+ZdMidNFFF1XbGlTbRCpaicgVkiRJKptA6OOPP47ltim8VMzKK68cc3vyrbfeerF4IpUrGZV2ww03hLPOOiuce+65c2ipJUlSqZurXHKDGGZPxcpi2rZtG1q1alXpvsMOOywMHjw4LLDAAmGhhRYKd955Z2wRWmuttebQUkuSpFJXUjlC1ZXRTiW6qzNixIgq9+2zzz7xJkmSVBaBkCRJyjOw3ZxdHQMn1Onb3XjjjXHeUHp2KH9z/vnnx1Hcyd133x1uvfXW8OOPP8b5xhi5zcAmXH/99eGhhx4KDzzwQKhPBkKSJOkv23DDDWNe7rRp08J9990XllhiiXh/mmOM9Jb8UdmUsyFthRkjunbtGoYPHx4222yzWPdvscUWCy1btqw2JaYuGQhJkqS/7MUXX6xyX9OmTSt+L5xigwDokUceCYsvvnj8e/vttw9vvfVWnMD1lFNOiSVz8osr1hcDIUmSNNsOPPDAOLKb1h4CH1qFmBJrpZVWCltttVXRoAg8r02bNpXuoxVo7NixFX8bCEmSpJJ27f/N48mAp3HjxoWOHTtWBDC33357tS1Cu+yySzjppJPCkCFD4gwQn332WRwcNXTo0Gpfk9nh85IkqXS9/fbbYdlll42zPyy11FLhmWeeqVLwuLBF6PTTT49BE68jJ4hagSmpOrFFSJIklbyDDz44/Pvf/455Ph9++GHYcsst41ydBEKMCqPAcf6s8iARmiLH55xzTmwR+vrrr6sEPnOiRcgcIUmS9JcQxGyzzTbx9xVWWCG2/vzyyy9h+vTpoW/fvuHyyy8PPXv2rPb1dKt9+umn4aeffgrffvttGDNmTCyIbIuQJEkqeZtvvnkMdv75z3/GkWCdOnUKHTp0iIFQwiiw1FVGUDRhwoSYMP3777/H7jFmkOjSpUu80VXGsHtbhCRJUskbMmRIGDBgQFh99dXDcsstF+sIgcAn1REiKEozSFAksXDEWKHbbrvNFiFJkjKtjis915f27dvHukCFCH5o9Um/p6BoZkEQKMxo15gkSSpbyyyzTEUwkx8U1QaB0Lzzzhvqm8nSkiSpXvTo0SPe8Pzzz8/Saw866CDrCEmSpGyaaw4MnY//Z478F0mSpBJkICRJkjLLQEiSpBKRPyWF5sz6MllakqQGxnQT5MR89913saIyf8+JoePlinpEjCpjpnrWG+trdhkISZLUwDiZL7HEEuH777+PwZBqp2XLlrEK9V9JrDYQkiSpBNCqkaaWyJ+aQsUxnxnTdvzVljMDIUmSSgQndWZi56Y5w2RpSZKUWQZCkiQpswyEJElSZhkISZKkzDIQkiRJmWUgJEmSMstASJIkZZaBkCRJyiwDIUmSlFkGQpIkKbMMhCRJUmYZCEmSpMwyEJIkSZllICRJkjLLQEiSJGWWgZAkScqskgqEOnXqFMaNG1fx99dffx1atGgR2rdvX+X23XffzfT9nn/++bDmmmuG1q1bh+WXXz7cc8899fwJJElSOWkWSsCkSZPCNddcE8aOHVvp/lwuF5o2bRrGjx8/y+/57rvvhr59+4bbbrstbLTRRuHNN98Mu+66a5hvvvlCz54963DpJUlSuWrwFqErrrgiLLDAAuGkk06q0/fl/QYMGBCDIKyxxhrhwgsvrPP/I0mSyleDB0KHHnpomDx5cpgyZUqdtjANHz487LbbbpXu79WrV/j444/D6NGj6+x/SZKk8tXggdDMzJgxI5x66qlhueWWC/PPP39YZ511woMPPljja0aOHBnziHh+vnnmmScsuuiiMRiqztSpU8PEiRMr3SRJUuNUEjlC1SFReoMNNggdOnQIL7zwQmjbtm148sknw/777x+GDh0att5666Kv++2332IuUDG816+//lrt/xw0aFA444wzwhwxsF0ob0MbegEkSWq8LUILLrhgeOqpp8IxxxwT84iaN28edthhh3DKKafE3KLqMEqsugRr7m/Tpk21r+3fv3+YMGFCxW3UqFF18lkkSVLpKelAqDpLL710jcPnu3XrFn7++ecqwdC0adPikHy62apDsEXLU/5NkiQ1TmUZCA0bNix079690jD7fLT4bLjhhuHee++tdP8TTzwRg6DOnTvPsWWVJEmlq6QDIVpvtt122/DSSy/FpGkSl88///xw++23h5NPPrniedttt104+OCDK7327LPPDqeffnp45ZVX4t+vv/56OProo+PrJUmSSj5ZepFFFolD3k844YTw3nvvxeKKm2++eRgxYkTo2rVrpRYg8oLykWR97bXXxuH5n376aVhsscXCRRddFHr06NEAn0SSJJWiJrnCfiVVQitUu3btYuJ0necLlfmosa5TynfU2Ffn9WroRZAklcD5u6S7xiRJkuqTgZAkScosAyFJkpRZBkKSJCmzDIQkSVJmGQhJkqTMMhCSJEmZ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JEmSMqvkA6FcLhfuueeesPXWW4eFFlooLLDAAqF3797hk08+qfY1t9xyS2jVqlVo3759pdvqq68+R5ddkiSVtpIPhCZMmBAuvfTScMIJJ4SvvvoqfPPNN2G99dYLm2++efj111+Lvmb69Olhs802C+PHj690e+utt+b48kuSpNJV8oFQu3btwnPPPRd69OgR5p133tCiRYtw0kknxftff/31hl48SZJUxpqFEtekSZMq9/3xxx/h559/Dm3btq3z/zd16tR4SyZOnFjn/0OSJJWGkm8RKpYzdNRRR4Xll18+rLnmmtU+b8yYMeGAAw4IXbp0CQsuuGDYdtttwwcffDDT9x80aFBsbUo3Xi9JkhqnsgqEfvnll5go/dFHH4V777232uctssgiMal6++23j88dOXJkzBnacMMNww8//FDj/+jfv3/MS0q3UaNG1cMnkSRJpaBsAqHXXnstrLXWWmGNNdYIw4cPj6PAqrPllluGxx57LOy0006hdevWsWWnX79+YaONNgq33357jf+nefPmscst/yZJkhqnks8RwsMPPxwOP/zwGMRssMEGs/0+Sy+9dPjuu+/qdNkkSVL5KvkWoZ9++ikceuih4Yknnqg2CJoxY8ZM34ch9c8++2zo3r17PSylJEkqRyUfCN19991hl112CSussELRx0eMGBG7r7788suK+4YOHRqOOOKImBsE8nz23XffMPfcc4fdd999ji27JEkqbSUfCH322Wfhqquuirk+hbcTTzwx1hWiijRBTrLFFlvE4GjHHXeMj62zzjqhU6dOYdiwYaFZs7LoDZQkSXNAyUcFgwcPjreaMFQ+HyPGzjnnnHiTJEkq2xYhSZKk+mIgJEmSMstASJIkZZaBkCRJyiwDIUmSlFkGQpIkKbMMhCRJUmYZCEmSpMwyEJIkSZllICRJkjLLQEiSJGWWgZAkScosAyFJkpRZBkKSJCmzDIQkSVJmGQhJkqTMMhCSJEmZZSAkSZIyy0BIkiRlloGQJEnKLAMhSZKUWQZCkiQps5o19AJIktTgBrYL5azrlKGhXH11Xq8G/f+2CEmSpMwyEJIkSZllICRJkjLLQEiSJGWWgZAkScosAyFJkpRZBkKSJCmzDIQkSVJmGQhJkqTMMhCSJEmZZSAkSZIyy0BIkiRlloGQJEnKLAMhSZKUWWURCI0aNSr07t07tGvXLiyyyCLhjDPOCDNmzJjp66ZMmRKOPvro0KlTpzDffPOFvn37hl9++WWOLLMkSSp9JR8ITZo0KWy++eZh2223DT/99FN48803w4svvhiDoZk54IAD4us/++yzMHr06BhE7bTTTnNkuSVJUukr+UDo8ssvD6uttlo4+OCDQ7NmzcLCCy8cbrvttnDRRRfFwKg6r776agyYrrjiitC2bdvQsmXLcP7554fx48eHRx99dI5+BkmSVJqahRJ3//33h5NOOqnSfXR1rbvuuuHJJ58Me+21V7Wv23nnnWPwlK9Pnz7hwQcfDL169Sr6uqlTp8ZbMmHChPhz4sSJdfBpCv9ZLpSzGVMnh3JVL99nI/luy/l7rffvtoy/16i+t/tyVubfbTnvtxPrabtM75vL5co7EProo4/CMsssU+X+pZZaKj5W0+u22mqroq97/PHHq33doEGDina7denSZZaWOxv6hHLV7uKGXoJSVr7fK/xua3Beuzn3RWgOK9/9tl09H49//fXXmGNctoHQb7/9FhOdC3Xo0CF+uLp+Xf/+/cOxxx5b8TdJ2T///HOYf/75Q5MmTWbrMzRGRNoEhySy0/WoxsHvtfHyu228/G6LoyWI8z35wTUp+UCodevWMa+H3KB83EdQM7PXFeK+Nm3aVPu65s2bx1u+9u3bz9ayZwFBkIFQ4+P32nj53TZefrdV1dQSVDbJ0nSLMeqr0MiRI8Nyyy1X56+TJEnZUfKB0HbbbRfuuuuuSveNGzcujgrbeuutK+4rrCvE6+69994wffr0Svffd999sSaRJElSyQdCRx55ZHjuuefCDTfcEIMd6gHtscce4bjjjot5OxgxYkRsEvzyyy8rXrfJJpuEFVZYIRxxxBGxlhC3448/PjaTVTdiTLVH9+Hpp59epRtR5c3vtfHyu228/G7/mia5mY0rKwGffvppDIheeumlmPtz+OGHhwEDBlQkL7/zzjtxhBjFFhdddNGK15Ek1a9fv9gy9Mcff4Qdd9wxXHzxxeb8SJKk8gmEJEmSMtk1JkmSVF8MhCRJUmYZCEmSpMwyEJIkSZlV8pWlpUJ33nlnLJa58cYbhyWXXDJ07tzZlaQ5ilIec83ldWRde/rpp8Nrr70WNthgg9CtW7eKGQUY0+MUR43Dr7/+Gic279ixYygVjhpTWaBWFBPiUlNq2WWXDWussUZ44YUX4gHyzDPPDLvssktDL6IasZ9++ik8+uijsQ7ZuuuuGxZccMGGXqRG4/PPPw/nnXdeeOCBB+L67dGjR9zf55577vC3v/0t1oJT+V84XH/99fH2+++/xzI31AGkFt0SSyzR0IsXI22pJL3zzju5W2+9NTdp0qTcSiutlNtyyy1zP//8c8Xj06ZNy5166qm5Tp065f773/826LKqcbr55ptza6+9dq5Nmza5Xr165Xr06JFbfPHFcwMGDKjYFmfMmNHQi1l2xowZk3vwwQdzn332WW633XbLLbjggrnvv/++4nF+Z92z3vnpOi5f//73v+P3uPrqq+euu+663Oeffx6/06222iq3zjrrxGM8pk+f3mDLaCCkkjJu3Ljc2WefnVtmmWVy7dq1yx188MHx/sMPPzx3wQUXxOAH6Wd6jB3q66+/brDlVuPx/PPPxxPxRRddlGvSpEnu8ssvz/3555/xsbFjx+aGDRsWA/N99tmnoRe1rBDMcCJcd911c02bNs394x//iOuTk+Jmm21W8bz8EyIB5xZbbBG/k/QeKm3/+9//4nG7Y8eOMdDleN6nT5+KfSiZPHly7qyzzsp16NAhN2HChFxDspNbJYEuL6ZFoZn05ZdfDv/+97/D+PHjw5VXXhkfX3vttWMF8TfeeCP+3axZs4r55U466aQwatSo8PrrrzfoZ1D5+vDDD8Nhhx0WOnXqFLtjvvvuu7D++uuHlVdeORxwwAGhadOmcXsjr6Fnz55xu/zvf/8b7r777oZe9JL3zTffhO233z506NAhXHHFFeHvf/97mDZtWrjqqqvi+lxnnXVi3sjw4cMrXpPmiNxzzz1DmzZtYreZSrvr+Kyzzop5Xewf7CtPPPFEWGqppcK2224bxo4dG4/x+fWbmRbklFNOCa1atQqXXnppgy6/gZAaDAe+zTffPNxzzz3hpptuijvJyJEjYy4Gk+bm23TTTePB8/33349/kzhJsiqvob+5S5cuMa9Aqi0O1meffXack5DEexI4n3zyyZiIv/rqq8fgmwBo6NCh8flsbyn4JpmXvDQCdligvzL200MPPTQcc8wx4amnnorTH3Ei5GLlwAMPrJRozmAH8q7uuOOOivtY71huueXigIivv/46/PbbbyZMl5BcLhcvTF955ZWwwAILxJzNIUOGhB9//DFcffXVMY8Tq622Wgxm33777TBlypRKrweBMROrF06QPicZCGmO+uSTT8IJJ5wQR4MwZxwnoV133TVe+ZEo+cMPP1R6/uOPPx7++c9/hkUWWSQss8wy8co9/znpxLThhhvG0Sb590nFXHfddbGFgpPxaaedFucxHDduXLyfg3Y+5id86KGHYoIn8k/ge+21Vzyxe4L+f60CnAjZT7nAYb0ce+yxMcjZbLPNKi5iEoIj5ozkeVtuuWV49dVX48VOWsecKGn5bdGiRXzOn3/+6QZdIiP7dthhh4qJXvm+F1988XDJJZfEOT/zEfhwPN55551jSz8trYXBLu/10UcfVQqS5jQDIdW7SZMmxSZQgh6awW+55ZZ4Ivr4448rmkQZKcLJhgl233rrrXDIIYfE4Ofoo4+OPzkgrrnmmjEIIhhKB8q0M/3888+xW437HNasQi+++GLYfffdY7B9zTXXhI022qgigKbZPh9XpjfffHMYNmxYOOigg8L//ve/OLKpEN06dAVwgE/bYxbRmkvrGeuCEV7sh+yn7Oe01NLiQ8sOLQYTJkyIJ8+ll146Bpm0HrRt2zZ07949zDfffOH++++v+A5SCwETbX/77bdOlt2A3n///Ypj8tZbbx27jL///vvYek+XJ8d1toOE+7fZZpvYmkdrDwES+xnH/GLnB7YZegMaioGQ6k1qmaFJ/Nlnnw2DBw+OeT//+te/4kHul19+iY9zFUhAQ/cXB1J2tHnmmSd2U9CCxFUjyCEiyOHExOs58fA/CIK4SiG4osssqyckVcaB9eCDD46tjwTaBNjk9dCUT6skaA269tprK1ofe/fuHZv5yWXhipfXLrbYYjHfoXC7pgWEVoqFFloo/p2lOjepdYbcHU6A5FGxPxNwsn/ijz/+iOuqffv2MdBhHbI+2af/85//xLw+1j0tPuRmsf9TIwzs31z8TJw4Mf4PutM05/3www9hrbXWivlylDPYd99948UBrfQMf08tpX379o1BLD/5jvv16xe7mwmg9thjj7iP0GpEqx/BcP42xH5KELzSSis13LG7QVO11egMHz48t/vuu8ehkf369cu9//77VZ7z+OOPx1EEDz/8cKURYIw2YETJ66+/XvFcRokw2iCNOGCUASMSRo8eXfEchtDvt99+cRRCQw7BVMNLo4q++uqr3C677BK3s08//TT30UcfxWHaL7zwQpVRh4xObN26dW7FFVfM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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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uORXCpbqCttnDB8+PDzwwANhscUWi7d99903bLDBBqFpU2N9NYx//vOf4a677gqLLLJIWG211cImm2wSNtpoIz8OlfP444+Hyy+/PDz77LNh1VVXjavpsoI+5zD2MmyM2/x41lajQy9m2223DUsttVR45plnwp///Odw8MEHh2+++SYccMABYejQoWW9m8bYy1H9Y6+5gw46KLRq1SpcfPHFoXfv3vH23HPPhf79+8f7JLYB4kYnjJXyaSPvv/9+eOmll8I111wTb5deemkYPHhwmDhxYuN7w1iHRprfPfPMM7ltt902d+aZZ+befffdXM+ePXPXXntthcfde++9uVVXXTV30UUXNchxqvH44IMPcoceemhu8ODBua+//jrXpUuX3G233VbhcVdccUVuySWXzN19990NcpxqWN9//33urLPOyi233HKxHTzyyCO5L7/8MteuXbvcr7/+Gh+T/o8777wzt8UWW+T+8Y9/xH/Pnj0711iYodF868MPP4zZF3ZqP/DAA+NGp0cccUTc6HSXXXYJDz30UHzcr7/+WvacHXfcMey0007hwQcfDB9//HEDHr3mR1OnTg3/+Mc/Qo8ePUKvXr3CjBkzYlukjbIK+oQJE+LOwmCrF9Bm99prr5g5tNar8WB1/PXXXz9069YtvPDCC3F4ia1/+vTpE7PLfO+UU06Jj2V46ff/tRcyNwxT3nbbbfHfjWn4vPH8pmoUOOG/88478eRP4DJ79uxw7733hk8//TRcdNFFoX379vGPn+0zSN1++eWXYYEFFohDS2l4aauttoqPefLJJ+O/HXbSvPrll1/ikNLiiy8enn766XDuuefGoc+bbroprLHGGvExm2++eXj++edjUIP8GogTTzwxtuv//ve/fhjzMc45dMKoizn99NNjJ4wg+JFHHonD5PkGDBgQ7rzzzvh18+bNywKXRRddNKyzzjrht99+i0NRjYkBjeYLt956ayzmXWmllWJvhloEer5XXnll7Mnk4w+dx62wwgph5MiR8T56N+kCQu+Zgsyvv/46/rsxFtdp3nFR2m233eKFhmwhmRdqtR577LGwww47VHg87ZU2x2Pz2x1ts3PnzrFd/vvf/473Eahr/kDH6rjjjivLJPP/1VdfPey8885hoYUWqvD4Rx99NLz44osxEzNz5sz4dWonuf91yjp16hSLhNM5rLEwoFFmMU2Rndf5wz3//PNjdT/DRIcddlj44x//GHvFr7/+etkFgNkjnCi4yCy44IIxE5OGnZo1a1b2OC4e9JLThptmaFRTBCMnnHBCWGaZZWI7+8Mf/hBnnqy55poxQ0NAwuy65IknnojDnP369YvZG3rk9Krplae2R0DEFG4yOZ988km59qpsog2ceeaZ8fNeZZVVYtE3WZgvvvginHrqqaFDhw7x/PTyyy+XtatDDz00dOnSJU5c4Pmc9whqrrrqqgrnqSWWWCK89tprsf01JgY0yhyyLowhE8BwQiA44eRArcHCCy8cH9O1a9ew3HLLhWHDhoW99947Bik87+ijjy6bEstU2GnTpoW33nqrrIeTLhRcRDhhwAyNqkPNFReRTTfdNLz77rth+eWXjzUPzDbhay4222yzTexR33jjjeHII4+Mbfioo46KgcrVV18dX4fH0B7Hjx9f7vVbtGgRxowZE19f2UbWhHMSwS0zkqjhYyi8bdu28fsEr2AqNoEN5zTaBecmsjPMxkzDT/vvv38MhNCsWbOyzB2z42hX6RzWaDR0VbJUU7/99lv8/8MPP5x75ZVXyu4fNmxYbp111ilX7U9l//XXX59r3bp17sQTT8xNmjSpwutNnTo1t//+++eOO+64cs+98sorc4sttlju22+/9cNRtWhrTzzxRJxdkvz1r3/N/eUvf8lNmDChXNsaMmRIrnnz5rmDDz4499///rfCa/3000+5TTfdNHfrrbfmZsyYUXb/jTfemOvatWucGaVsYQZbocKZR1tvvXXZeej3338vazPnnntubs011yz3WL4/a9assnPi8ssvX2523HfffZfbfPPNc+eff36usTFDo5JFAeTJJ58c3njjjXIpVXonzAhJ/6a3w9ASaVh6smRayLAwvLTllluG7bbbLvaA6AnRg0nPI0tDz4eaG/BcFqui9oFeNAvtSfnoHR9//PHl7qOt0c523XXXsvuod2EdENYIyc/yUSdD5pCeOe2TtkhNF/+nbdIme/bsGYcL0pDnm2++GXvhZ599dqz9SrNZVPr222+/uFZM/ozJNIzI503GDmSX77nnnnKrQ3M+IiPH552GGmkrfJ8bX5OVod3dfvvt8fu0EWZBMcRJXU5jY0CjkpMCDmoPmA1CUJMq+fMfwx81/6deYe211y4bS+YPHVw4GJK65ZZbyk4QSBcE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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "from matplotlib import rcParams\n", + "\n", + "rcParams['font.family'] = 'AppleGothic'\n", + "rcParams['axes.unicode_minus'] = False\n", + "\n", + "# -----------------------------\n", + "# 1) 국내 vs 해외 평균 점수 비교\n", + "# -----------------------------\n", + "regions = ['domestic', 'foreign']\n", + "region_labels = ['국내', '해외']\n", + "\n", + "impact_avgs = [result[r]['impact_avg'] for r in regions]\n", + "attr_avgs = [result[r]['attribution_avg'] for r in regions]\n", + "gold_avgs = [result[r]['gold_avg'] for r in regions]\n", + "\n", + "x = range(len(regions))\n", + "\n", + "plt.figure()\n", + "plt.plot(x, impact_avgs, marker='o', label='Impact Avg')\n", + "plt.plot(x, attr_avgs, marker='o', label='Attribution Avg')\n", + "plt.plot(x, gold_avgs, marker='o', label='Gold Alignment Avg')\n", + "plt.xticks(x, region_labels)\n", + "plt.ylim(0, 1)\n", + "plt.ylabel('Average Score')\n", + "plt.title('국내 vs 해외 평균 점수 비교')\n", + "plt.legend()\n", + "plt.grid(True)\n", + "plt.show()\n", + "\n", + "# -----------------------------\n", + "# 2) Impact Evidence 라벨 분포\n", + "# -----------------------------\n", + "impact_labels = ['SUPPORTED', 'PARTIALLY_SUPPORTED', 'UNSUPPORTED', 'CONTRADICTED']\n", + "\n", + "dom_counts = [result['domestic']['impact_label_counts'].get(lbl, 0) for lbl in impact_labels]\n", + "for_counts = [result['foreign']['impact_label_counts'].get(lbl, 0) for lbl in impact_labels]\n", + "\n", + "x = range(len(impact_labels))\n", + "\n", + "plt.figure()\n", + "plt.bar(x, dom_counts, width=0.4, label='국내', align='edge')\n", + "plt.bar(x, for_counts, width=-0.4, label='해외', align='edge')\n", + "plt.xticks(x, impact_labels, rotation=20)\n", + "plt.ylabel('Count')\n", + "plt.title('Impact Evidence 라벨 분포 (국내 vs 해외)')\n", + "plt.legend()\n", + "plt.show()\n", + "\n", + "# -----------------------------\n", + "# 3) Policy Attribution 라벨 분포\n", + "# -----------------------------\n", + "attr_labels = ['HIGHLY_RELATED', 'WEAKLY_RELATED', 'UNRELATED']\n", + "\n", + "dom_attr_counts = [result['domestic']['attribution_label_counts'].get(lbl, 0) for lbl in attr_labels]\n", + "for_attr_counts = [result['foreign']['attribution_label_counts'].get(lbl, 0) for lbl in attr_labels]\n", + "\n", + "x = range(len(attr_labels))\n", + "\n", + "plt.figure()\n", + "plt.bar(x, dom_attr_counts, width=0.4, label='국내', align='edge')\n", + "plt.bar(x, for_attr_counts, width=-0.4, label='해외', align='edge')\n", + "plt.xticks(x, attr_labels, rotation=20)\n", + "plt.ylabel('Count')\n", + "plt.title('Policy Attribution 라벨 분포 (국내 vs 해외)')\n", + "plt.legend()\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'overall': {'impact_avg': 0.7345454545454544,\n", + " 'impact_label_counts': {'SUPPORTED': 33,\n", + " 'PARTIALLY_SUPPORTED': 14,\n", + " 'CONTRADICTED': 2,\n", + " 'UNSUPPORTED': 6},\n", + " 'attribution_avg': 0.8338596491228066,\n", + " 'attribution_label_counts': {'HIGHLY_RELATED': 44,\n", + " 'WEAKLY_RELATED': 12,\n", + " 'UNRELATED': 1},\n", + " 'gold_avg': 0.42105263157894735},\n", + " 'domestic': {'impact_avg': 0.8304347826086954,\n", + " 'impact_label_counts': {'SUPPORTED': 18,\n", + " 'PARTIALLY_SUPPORTED': 4,\n", + " 'CONTRADICTED': 1},\n", + " 'attribution_avg': 0.8439999999999999,\n", + " 'attribution_label_counts': {'HIGHLY_RELATED': 21,\n", + " 'WEAKLY_RELATED': 3,\n", + " 'UNRELATED': 1},\n", + " 'gold_avg': 0.3333333333333333},\n", + " 'foreign': {'impact_avg': 0.6656249999999998,\n", + " 'impact_label_counts': {'PARTIALLY_SUPPORTED': 10,\n", + " 'UNSUPPORTED': 6,\n", + " 'SUPPORTED': 15,\n", + " 'CONTRADICTED': 1},\n", + " 'attribution_avg': 0.8259374999999998,\n", + " 'attribution_label_counts': {'HIGHLY_RELATED': 23, 'WEAKLY_RELATED': 9},\n", + " 'gold_avg': 0.5}}" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "result" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4. 평가 결과\n", + "\n", + "#### 4.1 전체 성능 개요\n", + "\n", + "딥리서치 평가 결과를 전체·국내·해외로 나누어 집계한 요약은 다음과 같습니다.\n", + "\n", + "| 구분 | Impact Evidence 평균 | Policy Attribution 평균 | Gold Alignment 평균 |\n", + "| -- | ------------------ | --------------------- | ----------------- |\n", + "| 전체 | 0.73 | 0.83 | 0.42 |\n", + "| 국내 | 0.83 | 0.84 | 0.33 |\n", + "| 해외 | 0.67 | 0.83 | 0.50 |\n", + "\n", + "* **Impact Evidence Faithfulness**\n", + "\n", + " * 전체 평균 약 **0.73**으로, 기사 내용과 상당히 잘 맞는 영향 설명을 생성하고 있습니다. \n", + " * 특히 **국내(0.83)**가 해외(0.67)보다 더 근거에 충실한 경향을 보입니다. \n", + "\n", + "* **Policy Attribution Consistency**\n", + " * 국내/해외 모두 **0.82–0.84**정도이며, 이는 정치인·정책과 실제 기사 간 **관련성 있는 근거 기사 선택**은 전반적으로 잘 이루어지고 있다는 것을 의미합니다. \n", + "\n", + "* **Gold Report Alignment**\n", + "\n", + " * 전체 평균은 약 **0.42**로, Gold 리포트와 내용·구조 유사도가 아주 높지는 않은 편입니다.\n", + " * 국내(0.33)보다 해외(0.50)가 더 높은데, 이는\n", + "\n", + " * 해외 세트의 경우 국내처럼 Naver 맞춤형 검색·스크래핑 파이프라인이 아니라, 상대적으로 단순한 검색 툴과 소수의 대표 기사에 의존하는 경향이 있어 Gold 리포트와 모델 리포트가 참고하는 기사·키워드 풀이 더 많이 겹쳤을 가능성이 있습니다. \n", + " 그 결과, 실제 근거 충실성은 국내보다 다소 낮더라도 **Gold와의 내용·구조 유사도는 해외 쪽에서 더 높게 측정된 것**으로 해석할 수 있습니다. \n", + " 다만, 이는 현재 평가셋과 검색 파이프라인 구조에 기반한 추정이며, 향후 URL·정책 키워드·기업명 중복률 등을 추가로 분석해 검증할 필요가 있습니다.\n", + "\n", + "---\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "\n", + "#### 4.2 라벨 분포 분석\n", + "\n", + "**Impact Evidence 라벨 분포**\n", + "\n", + "* 전체:\n", + "\n", + " * `SUPPORTED` 33, `PARTIALLY_SUPPORTED` 14, `UNSUPPORTED` 6, `CONTRADICTED` 2\n", + "* 국내:\n", + "\n", + " * `SUPPORTED` 18, `PARTIALLY_SUPPORTED` 4, `CONTRADICTED` 1, `UNSUPPORTED` 0\n", + "* 해외:\n", + "\n", + " * `SUPPORTED` 15, `PARTIALLY_SUPPORTED` 10, `UNSUPPORTED` 6, `CONTRADICTED` 1\n", + "\n", + "\n", + "* 국내 체인은 **SUPPORTED 비율이 높고 UNSUPPORTED가 거의 없음**\n", + " → 국내 정치인에 대해서는 기사 근거에 잘 맞는 영향 설명을 생성하고 있습니다. \n", + " 특히 국내 셋은 **Naver 맞춤형 검색·스크래핑 툴을 사용해 정책·산업 관련 기사를 수집**했기 때문에,\n", + " 모델이 참고하는 증거 풀이 더 풍부하고 정밀했고, 이 점이 높은 SUPPORTED 비율로 이어진 것으로 해석할 수 있습니다.\n", + "\n", + "\n", + "* 해외 체인은 **PARTIALLY_SUPPORTED·UNSUPPORTED 비율이 국내보다 더 높음**\n", + " → 해외의 경우 여러 기사에서 정보를 종합하는 과정에서 \n", + " * 일부 세부 내용이 기사에 명확히 나오지 않거나 \n", + " * 기사에 없는 내용을 추론으로 보완하면서, 근거가 약한 주장도 함께 생성되는 경향이 있습니다. \n", + "\n", + " 또한 해외 셋은 국내처럼 **Naver 특화 검색·스크래핑 툴에서, 상대적으로 검색되는 기사의 양이 적기** 때문에\n", + " * 정책·산업 맥락을 충분히 커버하는 기사 풀이 상대적으로 제한적이었고,\n", + " * 이로 인해 모델이 **증거가 비어 있는 부분을 추론으로 메우는 비율**이 높아져 \n", + " PARTIALLY_SUPPORTED·UNSUPPORTED 라벨 비중이 국내 대비 더 커진 것으로 해석할 수 있습니다.\n", + "\n", + "\n", + "**Policy Attribution 라벨 분포**\n", + "\n", + "* 전체:\n", + "\n", + " * `HIGHLY_RELATED` 44, `WEAKLY_RELATED` 12, `UNRELATED` 1\n", + "* 국내:\n", + "\n", + " * `HIGHLY_RELATED` 21, `WEAKLY_RELATED` 3, `UNRELATED` 1\n", + "* 해외:\n", + "\n", + " * `HIGHLY_RELATED` 23, `WEAKLY_RELATED` 9, `UNRELATED` 0\n", + "\n", + "\n", + "* 국내·해외 공통적으로 **대부분의 URL이 HIGHLY_RELATED**로 평가됩니다.\n", + " → 검색/증거 선택 단계에서 **정치인·정책과 직접적으로 관련된 기사들**을 잘 가져오고 있습니다. \n", + "* `UNRELATED`는 국내에서 1건, 해외는 0건으로 매우 낮음\n", + " → “정책과 거의 관계 없는 기사”를 근거로 끌어오는 경우는 드뭅니다.\n", + "\n", + "---\n", + "\n", + "#### 4.3 종합 해석\n", + "\n", + "* **검색 품질(Relevance)**\n", + "\n", + " * Policy Attribution 점수와 라벨 분포를 보면,\n", + " → 국내·해외 모두 **정치인–정책과 강하게 연관된 기사들을 중심으로 증거를 선택**하고 있습니다.\n", + "\n", + "* **근거 충실성(Faithfulness)**\n", + "\n", + " * 국내는 대부분 `SUPPORTED`로, 기사에 기반한 영향 설명이 잘 생성됩니다.\n", + " * 해외는 `PARTIALLY_SUPPORTED`·`UNSUPPORTED`가 더 많아,\n", + " → **기사에 없는 세부 주장**이 섞이는 할루시네이션 위험이 상대적으로 더 큽니다.\n", + "\n", + "* **분석 스타일 정합성(Gold Alignment)**\n", + "\n", + " * Gold와의 유사도는 중간 수준으로,\n", + "\n", + " * 딥리서치 시스템이 Gold와 동일한 분석을 그대로 복제한다기보다는,\n", + " * **자체적인 체인 구성과 서술을 갖는 리포트**를 생성하고 있다고 볼 수 있습니다.\n", + "\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "deep_research (3.11.11)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.11" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/evaluation/eval_graph.py b/usecase/solar-political-influence-analyzer/src/ai-engine/evaluation/eval_graph.py new file mode 100644 index 0000000..3a3781c --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/evaluation/eval_graph.py @@ -0,0 +1,101 @@ +import os +from typing import Any, Dict, List, Optional + +from typing_extensions import TypedDict +from pydantic import BaseModel, Field + +from langgraph.graph import StateGraph, END +from langchain_core.prompts import ChatPromptTemplate +from langchain_google_genai import ChatGoogleGenerativeAI +from dotenv import load_dotenv + +from impact_evidence_faithfulness import ( + EvidenceItem, + ImpactEvidenceState, + ImpactEvidenceResult, + evaluate_impact_node, +) +from policy_attribution_consistency import ( + PolicyAttributionState, + PolicyAttributionResult, + evaluate_policy_attribution_node, +) + +from eval_tools import URLScraper +from eval_prompt import gold_compare +from gold_set_evaluation import evaluate_gold_node +from gold_set_evaluation import CombinedEvalState + +load_dotenv() +API_KEY = os.getenv("GOOGLE_API_KEY") + + +async def scrape_urls_node(state: Dict[str, Any]) -> Dict[str, Any]: + """ + Fetch all evidence URLs using Playwright (via URLScraper) + and attach the scraped page info to the state as `scraped_pages`. + """ + evidence = state.get("evidence", []) + urls = [ev["url"] for ev in evidence] + + scraper = URLScraper( + headless=True, + timeout_ms=20_000, + wait_until="networkidle", + max_chars=50_000, + ) + + if not urls: + return {**state, "scraped_pages": []} + + results = await scraper.fetch_many(urls, concurrency=3) + + return { + "scraped_pages": results, + } + + + + + +async def combine_node(state: CombinedEvalState) -> CombinedEvalState: + """ + Merge the outputs from: + - impact_evidence_faithfulness (per-chain, multi-source) + - policy_attribution_consistency (per-chain, multi-source) + - gold vs model report comparison + + into a single `combined_summary` object. + """ + combined_summary: Dict[str, Any] = { + "impact_result": state.get("impact_result"), + "attribution_result": state.get("attribution_result"), + "gold_eval": state.get("gold_eval"), + } + + return { + "combined_summary": combined_summary, + } + + + +workflow = StateGraph(CombinedEvalState) +workflow.add_node("scrape_urls", scrape_urls_node) +workflow.add_node("evaluate_impact", evaluate_impact_node) +workflow.add_node("evaluate_policy_attribution", evaluate_policy_attribution_node) +workflow.add_node("evaluate_gold", evaluate_gold_node) + +workflow.add_node("combine", combine_node) + +workflow.set_entry_point("scrape_urls") +workflow.add_edge("scrape_urls", "evaluate_impact") +workflow.add_edge("scrape_urls", "evaluate_policy_attribution") +workflow.add_edge("scrape_urls", "evaluate_gold") + +workflow.add_edge("evaluate_impact", "combine") +workflow.add_edge("evaluate_policy_attribution", "combine") +workflow.add_edge("evaluate_gold", "combine") + +workflow.add_edge("combine", END) + +combined_eval_app = workflow.compile() diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/evaluation/eval_prompt.py b/usecase/solar-political-influence-analyzer/src/ai-engine/evaluation/eval_prompt.py new file mode 100644 index 0000000..93d6f53 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/evaluation/eval_prompt.py @@ -0,0 +1,397 @@ +impact_citation = """## Role +You are an expert fact-checker for economic and industrial impact claims. + +Your job is to evaluate whether a model-generated impact description +about specific companies and an industry/sector is faithfully supported +by the content of multiple web pages. + +## Task +You are given: +- an industry or sector +- a list of companies +- an impact_description that describes how those companies or that sector were affected +- the combined text content of one or more web pages (already scraped), provided as `sources` +- optional high-level question context + +Each source in `sources` may include: +- a source index (e.g., [Source 1], [Source 2], ...) +- URL +- title +- HTTP status +- extracted body text + +Some sources may be partially loaded, login-blocked, or error pages. +You must focus on the **usable** sources and judge the impact_description +against the evidence they provide. + +Focus ONLY on whether the sources jointly support the impact_description +about the companies and the industry/sector. Ignore political stance attribution +(e.g., which politician initiated the policy) unless it is strictly needed +to understand the economic or industrial impact. + +--- + + +{industry_or_sector} + + + +{companies} + + + +{impact_description} + + + +{sources} + + + +{question} + + +--- + +### What to Evaluate + +Treat the core impact claim as: + +- Certain companies (in the given industry_or_sector) +- Are impacted in the way described in the impact_description + +You must compare this impact_description against ALL of the usable sources +and decide how strongly the **combined evidence** supports it. + +Examples: +- If Company A's benefit is only mentioned in Source 1 and Company B's harm + is only mentioned in Source 3, but together they match the impact_description, + you may still consider the description SUPPORTED or PARTIALLY_SUPPORTED. +- If none of the sources mention the claimed impact at all, the label is UNSUPPORTED. +- If one or more sources clearly contradict the described impact, the label + may be CONTRADICTED. + +Ignore: +- Which politician proposed or opposed the policy +- Detailed policy naming or stance +unless it is directly necessary to understand the impact on companies. + +--- + +### Labels + +Choose exactly one label: + +1. SUPPORTED + - The key factual content of the impact_description is clearly present + (possibly distributed across multiple sources) or can be derived + with minimal, obvious reasoning. + - The sources jointly describe a similar impact on the same companies + or on the same industry/sector in line with the description. + +2. PARTIALLY_SUPPORTED + - Some important parts of the impact_description are supported, + but other important details are missing, unclear, or not directly supported. + - Common cases: + - The sources confirm that the company or sector is affected, + but not all specific outcomes or numbers are present. + - Only part of a multi-sentence impact_description is supported. + +3. UNSUPPORTED + - The sources are topically related (e.g., same company or sector), + but do not provide enough information to support the specific impact + described in the impact_description. + +4. CONTRADICTED + - One or more sources clearly state something that conflicts + with the impact_description. + - For example: + - The impact_description says the company benefited, + but the sources clearly say it was harmed (or vice versa). + +5. NOT_ENOUGH_INFO + - All sources are insufficient to evaluate the impact at all, e.g.: + - error pages (404, 5xx) + - login / paywall / “login required” + - generic portal/home pages without article content + - almost no meaningful body text + - Or the extracted texts are so fragmentary that you cannot reasonably + judge the impact. + +--- + +### Scoring Guidelines + +Use the score field (0.0 to 1.0) as a continuous confidence value: + +- Typically 0.8–1.0 for SUPPORTED +- Typically 0.4–0.8 for PARTIALLY_SUPPORTED +- Typically 0.0–0.4 for UNSUPPORTED or CONTRADICTED +- Typically 0.0–0.2 for NOT_ENOUGH_INFO when the sources are unusable + +--- + +### Output Requirements + +You MUST answer in Korean. +(모든 자유 텍스트 필드인 reasoning, evidence_spans 내용은 반드시 한국어로 작성하세요.) + +You MUST produce a single JSON object with exactly these fields: + +- "label": one of + "SUPPORTED", "PARTIALLY_SUPPORTED", "UNSUPPORTED", "CONTRADICTED", "NOT_ENOUGH_INFO" +- "score": float between 0.0 and 1.0 +- "reasoning": a short explanation in Korean of how you compared + impact_description and the combined sources +- "evidence_spans": a list of short Korean quotes from the sources + that support or contradict the impact (if available). + If useful, you may annotate which source they come from, + e.g. "[Source 2] ...". +- "error_type": one of + "NONE", "PAGE_LOAD_ERROR", "LOGIN_REQUIRED", + "REDIRECTED_TO_HOME", "TOO_SHORT", "OTHER" + +If "label" is "NOT_ENOUGH_INFO": +- Explain why in "reasoning". +- Set "error_type" to a non-"NONE" value. + +If "label" is "SUPPORTED" or "PARTIALLY_SUPPORTED": +- Include at least one evidence_span from the sources. + +Return ONLY the JSON object and nothing else. +""" + +policy_attribution_prompt = """ +## Role +You are an expert evaluator of policy attribution consistency. +Your task is to judge how strongly one or more news articles (web pages) +are related to a given politician and policy. + +## Task +You are given: +- a politician name +- a policy description (usually short text) +- optional industry/sector and companies (context only) +- the combined text content of one or more web pages (already scraped), provided as `sources` +- optional question/context of the original research task + +Each source in `sources` may include: +- a source index (e.g., [Source 1], [Source 2], ...) +- URL +- title +- HTTP status +- extracted body text + +You must decide, based on ALL usable sources together: +- How strongly this collection of pages is related to the given politician and policy. +- Whether the politician and the policy/topic appear in a meaningful way. + +You are NOT judging whether any economic impact description is correct. +You only care about the relevance between: + (politician, policy) <-> the content of the sources. + +--- + + +{politician} + + + +{policy} + + + +{industry_or_sector} + + + +{companies} + + + +{sources} + + + +{question} + + +--- + +## Label Definitions + +You must choose exactly one label for the **overall** relevance of all sources combined: + +1. HIGHLY_RELATED + - Taken together, the sources clearly and directly discuss this politician + AND this policy/topic (or an obviously equivalent description). + - The politician appears as an important actor, decision maker, + or explicit subject in relation to this policy area. + - The policy topic is central to the coverage. + +2. WEAKLY_RELATED + - The collection of sources is somewhat related, but the connection is weaker: + - They may discuss the same policy area or regulation, + but the politician is only briefly mentioned or not clearly tied. + - They may focus on the politician but only vaguely touch + on the specific policy/topic. + - Or they clearly cover only one side (politician OR policy), + while the other is missing or very minor. + +3. UNRELATED + - The sources are mostly about different people or policies. + - The given politician and policy: + - do not appear at all, or + - appear only in a passing way which is not really about them. + - The core topics of the pages do not match the given policy. + +4. NOT_ENOUGH_INFO + - All sources are insufficient to judge relevance: + - error pages (404, 5xx) + - login / paywall / “login required” + - generic portal/home pages without article body + - the main texts could not be extracted, or are extremely short. + +--- + +## Scoring Guideline + +Use the score (0.0–1.0) as a continuous confidence value: + +- Typically 0.8–1.0 for HIGHLY_RELATED +- Typically 0.4–0.8 for WEAKLY_RELATED +- Typically 0.0–0.4 for UNRELATED +- Typically 0.0–0.2 for NOT_ENOUGH_INFO when the sources are unusable + +--- + +## Additional Booleans + +You must also decide, considering ALL sources: + +- politician_mentioned (true/false): + True if the politician's name (or a very clear reference to the same person) + appears in at least one usable source in a meaningful way. + +- policy_topic_mentioned (true/false): + True if the specific policy, regulation, or its clearly described topic + appears as a meaningful subject in at least one usable source. + +--- + +## Output Format + +You MUST respond in Korean. +(모든 자유 텍스트 필드인 reasoning, evidence_spans 내용은 반드시 한국어로 작성하세요.) + +You MUST output a single JSON object and nothing else: + +{{ + "label": "HIGHLY_RELATED" | "WEAKLY_RELATED" | "UNRELATED" | "NOT_ENOUGH_INFO", + "score": float, + "reasoning": "Short Korean explanation of how the sources relate to the politician and policy.", + "evidence_spans": [ + "Short Korean quote from the sources that shows relevance (if available)" + ], + "error_type": "NONE" | "PAGE_LOAD_ERROR" | "LOGIN_REQUIRED" | "REDIRECTED_TO_HOME" | "TOO_SHORT" | "OTHER", + "politician_mentioned": true or false, + "policy_topic_mentioned": true or false +}} + +- If "label" is "NOT_ENOUGH_INFO": + - Explain why in "reasoning". + - Set a non-"NONE" "error_type". +- If "label" is "HIGHLY_RELATED" or "WEAKLY_RELATED": + - Include at least one relevant evidence_spans entry. +- Keep reasoning concise but concrete. +""" + +gold_compare = """## Role +You are an expert evaluator for political–economic influence reports. + +## Inputs +You are given: +- `question`: the original user query (e.g., a politician's name) +- `gold_report`: a reference "gold" report (JSON) +- `model_report`: the report produced by the system being evaluated (JSON) + + +{question} + + + +{gold_report} + + + +{model_report} + + +Both reports follow a similar structure: +- report_title, time_range, question_answer, influence_chains, notes +- Each influence_chain contains: + - politician, policy, industry_or_sector, companies, + impact_description, evidence, etc. + +### Critical Constraint — Closed World +- 당신은 **오직** `gold_report`와 `model_report` 안에 주어진 정보만 사용할 수 있다. +- 현실 세계에 대한 사전 지식(정치인 실제 이력, 실제 정책, 실제 기업 정보 등)은 **모두 무시**해야 한다. +- 보고서 내용이 실제 세계 지식과 모순되더라도, + 그 모순을 지적하거나 교정하려고 하지 말고 **입력 보고서들끼리만 비교**하라. +- 어떤 정보가 “중요한지/누락되었는지”를 판단할 때도, + **현실 세계 기준이 아니라 두 보고서 안에서 상대적인 비중만** 고려해야 한다. + +## Your Task +1. Compare the two reports and summarize: + - Main overlapping themes: + - key policies or topics + - industries/sectors + - companies (stocks) mentioned in both + - Major differences: + - what important themes/chains appear only in `gold_report` + - what important themes/chains appear only in `model_report` + +2. Judging **only** `gold_report` and `model_report`, decide: + - How suitable each report is for answering the given `question`. + - Consider (항상 보고서 내부 정보만 기준으로 판단할 것): + - how naturally policies are linked to industries/companies + - depth of explanation about market / economic impact (benefits, risks, etc.) + - coverage: whether important themes are missed or over-emphasized + +3. Assign a similarity score between 0.0 and 1.0: + - 1.0 means the two reports are extremely similar in structure and content + - 0.0 means they are almost completely different + +4. Keep the reasoning concise but concrete. + - 정치인 이름은 반드시 `question`에 주어진 이름만 사용하라. + - 입력(gold_report, model_report)에 등장하지 않는 정치인/기업/정책 이름을 새로 만들어내거나 언급하지 마라. + - 만약 입력에 없는 내용을 언급해야 할 것 같다면, 대신 + "입력에 해당 정보가 없어 평가할 수 없습니다" 라고 적어라. + - 보고서에 없는 시점 정보나 추가 사건(선거, 정책 변경 등)을 상상해서 언급하지 마라. + + - coverage를 평가할 때 "중요한 테마"는 + gold_report와 model_report 안에서 **비중 있게 다루어진 정책/산업/기업만** 의미한다. + - 현실 세계에서 중요하다고 생각되는 다른 정책/산업/기업을 새로 끌어와 + "누락되었다"고 평가하지 마라. + - 어떤 정책·산업·기업이 더 “현실적으로 중요해 보인다”는 이유로 + 보고서에 없는 내용을 추가하거나 비교 기준으로 삼지 마라. + +## Language +You MUST answer in Korean. + +## Output Format +Return ONLY a single JSON object with the following fields: + +{{ + "similarity_score": float, // between 0.0 and 1.0 + "reasoning": "Short Korean explanation of how the two reports were compared", + "model_unique_points": [ + "Short Korean bullet point describing an important theme that appears only in the model_report", + "More items if necessary" + ], + "gold_unique_points": [ + "Short Korean bullet point describing an important theme that appears only in the gold_report", + "More items if necessary" + ] +}} +""" diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/evaluation/eval_tools.py b/usecase/solar-political-influence-analyzer/src/ai-engine/evaluation/eval_tools.py new file mode 100644 index 0000000..935baf7 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/evaluation/eval_tools.py @@ -0,0 +1,168 @@ +import asyncio +import re +from typing import Any, Dict, List, Optional + +from bs4 import BeautifulSoup +from playwright.async_api import async_playwright, TimeoutError as PlaywrightTimeoutError + + +DEFAULT_UA = ( + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) " + "AppleWebKit/537.36 (KHTML, like Gecko) " + "Chrome/120.0.0.0 Safari/537.36" +) + +class URLScraper: + """ + Playwright를 사용해 URL을 열고 텍스트를 긁어오는 도우미 클래스. + + - 평가 워크플로우에서: + 1) 딥리서치 결과 JSON에서 url 리스트 추출 + 2) URLScraper.fetch_many(urls) 호출 + 3) 반환된 text를 LLM-as-a-judge 프롬프트에 넣어 + Evidence Quality / Hallucination / URL Validity 평가에 사용 + """ + + def __init__( + self, + headless: bool = True, + timeout_ms: int = 20_000, + wait_until: str = "domcontentloaded", + max_chars: int = 50_000, + user_agent: Optional[str] = None, + ): + self.headless = headless + self.timeout_ms = timeout_ms + self.wait_until = wait_until + self.max_chars = max_chars + self.user_agent = user_agent or DEFAULT_UA + + async def _create_browser(self): + playwright = await async_playwright().start() + browser = await playwright.chromium.launch(headless=self.headless) + return playwright, browser + + async def fetch_one(self, url: str) -> Dict[str, Any]: + """ + 단일 URL을 열고 내용을 가져온다. + + 반환 형식: + { + "url": str, + "ok": bool, # 2xx~3xx 이면 True + "status": Optional[int], # HTTP status code + "final_url": Optional[str], + "title": Optional[str], + "text": str, # 정제된 본문 텍스트 + "error": Optional[str], + } + """ + playwright = None + browser = None + + status: Optional[int] = None + final_url: Optional[str] = None + title: Optional[str] = None + text: str = "" + error: Optional[str] = None + + try: + playwright = await async_playwright().start() + browser = await playwright.chromium.launch(headless=self.headless) + + context = await browser.new_context(user_agent=self.user_agent) + page = await context.new_page() + + resp = None + try: + resp = await page.goto( + url, + wait_until=self.wait_until, + timeout=self.timeout_ms, + ) + except PlaywrightTimeoutError: + error = f"Timeout after {self.timeout_ms} ms" + except Exception as e: + error = f"{type(e).__name__}: {e}" + + if resp: + status = resp.status + final_url = resp.url + + # SPA / 동적 로딩 고려해서 약간 더 대기 + try: + await page.wait_for_load_state("networkidle", timeout=2000) + except Exception: + pass + + # HTML 가져오기 + try: + html = await page.content() + except Exception: + html = "" + + if not final_url: + try: + final_url = page.url + except Exception: + final_url = url + + soup = BeautifulSoup(html, "html.parser") + + # 비콘텐츠 영역 제거 + for tag in soup( + ["script", "style", "header", "footer", "nav", "aside", "form", "iframe"] + ): + tag.decompose() + + main_content = soup.body + target_soup = main_content if main_content else soup + + clean_text = target_soup.get_text(separator=" ", strip=True) + clean_text = re.sub(r"\s+", " ", clean_text) + + # 로그인 페이지 처리 (대략적인 heuristic) + if "로그인" in clean_text and "해주세요" in clean_text: + text = "🔒 [접근 제한] 로그인 필요한 페이지입니다." + else: + text = clean_text[: self.max_chars] + + # title 추출 + try: + title = await page.title() + except Exception: + title = None + + await context.close() + + finally: + if browser is not None: + await browser.close() + if playwright is not None: + await playwright.stop() + + return { + "url": url, + "ok": status is not None and 200 <= status < 400, + "status": status, + "final_url": final_url, + "title": title, + "text": text, + "error": error, + } + + async def fetch_many(self, urls: List[str], concurrency: int = 3) -> List[Dict[str, Any]]: + """ + 여러 URL을 병렬로 긁어오기. + + - concurrency: 동시에 몇 개까지 열지 (너무 크게 하면 사이트가 막거나 느려질 수 있음) + """ + semaphore = asyncio.Semaphore(concurrency) + + async def _worker(u: str) -> Dict[str, Any]: + async with semaphore: + return await self.fetch_one(u) + + tasks = [asyncio.create_task(_worker(u)) for u in urls] + results = await asyncio.gather(*tasks) + return results diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/evaluation/gold_set_evaluation.py b/usecase/solar-political-influence-analyzer/src/ai-engine/evaluation/gold_set_evaluation.py new file mode 100644 index 0000000..7e612d9 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/evaluation/gold_set_evaluation.py @@ -0,0 +1,131 @@ +from __future__ import annotations + +import os +from typing import Any, Dict, List, Optional + +from typing_extensions import TypedDict +from pydantic import BaseModel, Field + +from langgraph.graph import StateGraph, END +from langchain_core.prompts import ChatPromptTemplate +from langchain_google_genai import ChatGoogleGenerativeAI +from dotenv import load_dotenv + +from impact_evidence_faithfulness import ( + EvidenceItem, + ImpactEvidenceState, + ImpactEvidenceResult, +) +from policy_attribution_consistency import ( + PolicyAttributionState, + PolicyAttributionResult, +) +from eval_tools import URLScraper +from eval_prompt import gold_compare + + + +class CombinedEvalState(TypedDict, total=False): + """ + Shared state used to run: + - Impact Evidence Faithfulness + - Policy Attribution Consistency + - Gold vs Model report comparison + for a single influence chain or report. + """ + + politician: Optional[str] + policy: Optional[str] + question: Optional[str] + + industry_or_sector: str + companies: List[str] + impact_description: str + + evidence: List[EvidenceItem] + + scraped_pages: List[Dict[str, Any]] + + impact_result: ImpactEvidenceResult + attribution_result: PolicyAttributionResult + + gold_report: Optional[Dict[str, Any]] + model_report: Optional[Dict[str, Any]] + gold_eval: Optional[Dict[str, Any]] + + combined_summary: Dict[str, Any] + + + +load_dotenv() +API_KEY = os.getenv("GOOGLE_API_KEY") + +gold_llm = ChatGoogleGenerativeAI( + model="gemini-2.5-flash", + api_key=API_KEY, + temperature=0.0, + convert_system_message_to_human=True, +) + + + +class GoldCompareResult(BaseModel): + """Structured output for comparing gold_report and model_report.""" + + similarity_score: float = Field( + ..., + ge=0.0, + le=1.0, + description="Similarity score between 0.0 and 1.0.", + ) + reasoning: str = Field( + ..., + description="Short Korean explanation of how the two reports were compared.", + ) + model_unique_points: List[str] = Field( + default_factory=list, + description="Key points that appear only in the model_report.", + ) + gold_unique_points: List[str] = Field( + default_factory=list, + description="Key points that appear only in the gold_report.", + ) + + +gold_prompt = ChatPromptTemplate.from_template(gold_compare) +gold_structured_llm = gold_llm.with_structured_output(GoldCompareResult, strict=True) +gold_chain = gold_prompt | gold_structured_llm + + +async def evaluate_gold_node(state: CombinedEvalState) -> CombinedEvalState: + """ + Compare `gold_report` and `model_report` using an LLM-as-judge. + + This node expects: + - state["question"] + - state["gold_report"] + - state["model_report"] + + If either gold_report or model_report is missing, this node + simply returns the state unchanged. + """ + question = state.get("question", "") or "" + gold_report = state.get("gold_report") + model_report = state.get("model_report") + + if gold_report is None or model_report is None: + return state + + result: GoldCompareResult = await gold_chain.ainvoke( + { + "question": question, + "gold_report": gold_report, + "model_report": model_report, + } + ) + + return { + "gold_eval": result.model_dump(), + } + + diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/evaluation/impact_evidence_faithfulness.py b/usecase/solar-political-influence-analyzer/src/ai-engine/evaluation/impact_evidence_faithfulness.py new file mode 100644 index 0000000..7387da0 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/evaluation/impact_evidence_faithfulness.py @@ -0,0 +1,168 @@ +# impact_evidence_faithfulness.py +import os +from typing import Any, Dict, List, Literal, Optional + +from typing_extensions import TypedDict +from pydantic import BaseModel, Field + +from langchain_core.prompts import ChatPromptTemplate +from langchain_google_genai import ChatGoogleGenerativeAI +from dotenv import load_dotenv +from eval_prompt import impact_citation + +load_dotenv() +API_KEY = os.getenv("GOOGLE_API_KEY") + +llm = ChatGoogleGenerativeAI( + model="gemini-2.5-flash", + api_key=API_KEY, + temperature=0.0, + convert_system_message_to_human=True, +) + +LabelType = Literal[ + "SUPPORTED", + "PARTIALLY_SUPPORTED", + "UNSUPPORTED", + "CONTRADICTED", + "NOT_ENOUGH_INFO", +] + +ErrorType = Literal[ + "NONE", + "PAGE_LOAD_ERROR", + "LOGIN_REQUIRED", + "REDIRECTED_TO_HOME", + "TOO_SHORT", + "OTHER", +] + + +class ImpactEvidenceResult(BaseModel): + """Structured output for impact evidence faithfulness on a single chain (multi-source).""" + + label: LabelType = Field(..., description="Impact evidence faithfulness label.") + score: float = Field( + ..., + ge=0.0, + le=1.0, + description="Confidence score between 0.0 and 1.0.", + ) + reasoning: str = Field( + ..., + description="Short explanation of how the impact description and sources were compared.", + ) + evidence_spans: List[str] = Field( + default_factory=list, + description="Short spans from sources that support or contradict the impact description.", + ) + error_type: ErrorType = Field( + "NONE", + description="Page loading or content error type.", + ) + + +class EvidenceItem(TypedDict): + source_title: str + url: str + + +class ImpactEvidenceState(TypedDict, total=False): + """ + State for evaluating impact evidence faithfulness of a single + influence chain segment with multiple evidence URLs. + """ + + politician: Optional[str] + policy: Optional[str] + question: Optional[str] + + industry_or_sector: str + companies: List[str] + impact_description: str + + evidence: List[EvidenceItem] + scraped_pages: List[Dict[str, Any]] + + impact_result: ImpactEvidenceResult + + +impact_evidence_prompt = ChatPromptTemplate.from_template(impact_citation) +structured_llm = llm.with_structured_output(ImpactEvidenceResult, strict=True) +impact_chain = impact_evidence_prompt | structured_llm + + +def _build_sources_block( + evidence: List[EvidenceItem], + scraped_pages: List[Dict[str, Any]], + max_text_chars: int = 4000, +) -> str: + """ + 여러 evidence URL과 스크랩된 페이지들을 하나의 텍스트 블록으로 합치는 헬퍼 함수. + 프롬프트에서는 이 블록을 한 번에 보고 추론한다. + """ + lines: List[str] = [] + for idx, (ev, page) in enumerate(zip(evidence, scraped_pages), start=1): + url = ev["url"] + title = ev.get("source_title") or page.get("title") or "" + status = page.get("status") + ok = page.get("ok") + text = (page.get("text") or "")[:max_text_chars] + + lines.append(f"SOURCE {idx}:") + lines.append(f"url: {url}") + if title: + lines.append(f"title: {title}") + if status is not None: + lines.append(f"http_status: {status}") + if ok is not None: + lines.append(f"ok: {ok}") + lines.append("text:") + lines.append(text) + lines.append("") # 빈 줄로 구분 + + return "\n".join(lines) + + +async def evaluate_impact_node(state: ImpactEvidenceState) -> ImpactEvidenceState: + """ + For a single influence chain: + - Take all evidence URLs + scraped pages + - Build one multi-source block + - Call the LLM once to judge impact faithfulness for the entire chain. + """ + + evidence = state.get("evidence", []) + scraped_pages = state.get("scraped_pages", []) + + industry_or_sector = state["industry_or_sector"] + companies = state["companies"] + impact_description = state["impact_description"] + question = state.get("question", "") or "" + + if not evidence or not scraped_pages: + result = ImpactEvidenceResult( + label="NOT_ENOUGH_INFO", + score=0.0, + reasoning="No usable evidence sources were available for this influence chain.", + evidence_spans=[], + error_type="TOO_SHORT", + ) + return {"impact_result": result} + + sources_block = _build_sources_block(evidence, scraped_pages) + companies_str = ", ".join(companies) if companies else "" + + result: ImpactEvidenceResult = await impact_chain.ainvoke( + { + "industry_or_sector": industry_or_sector, + "companies": companies_str, + "impact_description": impact_description, + "sources": sources_block, + "question": question, + } + ) + + return { + "impact_result": result, + } diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/evaluation/policy_attribution_consistency.py b/usecase/solar-political-influence-analyzer/src/ai-engine/evaluation/policy_attribution_consistency.py new file mode 100644 index 0000000..580e0cc --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/evaluation/policy_attribution_consistency.py @@ -0,0 +1,182 @@ +# policy_attribution_consistency.py +import os +from typing import Any, Dict, List, Literal, Optional + +from typing_extensions import TypedDict +from pydantic import BaseModel, Field + +from langchain_core.prompts import ChatPromptTemplate +from langchain_google_genai import ChatGoogleGenerativeAI +from dotenv import load_dotenv + +from eval_prompt import policy_attribution_prompt + +load_dotenv() +API_KEY = os.getenv("GOOGLE_API_KEY") + +llm = ChatGoogleGenerativeAI( + model="gemini-2.5-flash", + api_key=API_KEY, + temperature=0, + convert_system_message_to_human=True, +) + +RelationLabel = Literal[ + "HIGHLY_RELATED", + "WEAKLY_RELATED", + "UNRELATED", + "NOT_ENOUGH_INFO", +] + +ErrorType = Literal[ + "NONE", + "PAGE_LOAD_ERROR", + "LOGIN_REQUIRED", + "REDIRECTED_TO_HOME", + "TOO_SHORT", + "OTHER", +] + + +class PolicyAttributionResult(BaseModel): + """LLM-structured output for policy attribution consistency of a single chain (multi-source).""" + + label: RelationLabel = Field( + ..., + description="How strongly this chain's sources are related to (politician, policy).", + ) + score: float = Field( + ..., + ge=0.0, + le=1.0, + description="Confidence score between 0.0 and 1.0.", + ) + reasoning: str = Field( + ..., + description="Short explanation in Korean of how the sources relate to the politician and policy.", + ) + evidence_spans: List[str] = Field( + default_factory=list, + description="Short spans from sources that show politician/policy relevance.", + ) + error_type: ErrorType = Field( + "NONE", + description="Page loading or content error type.", + ) + + politician_mentioned: bool = Field( + ..., + description="True if the politician appears meaningfully in any of the sources.", + ) + policy_topic_mentioned: bool = Field( + ..., + description="True if the specific policy or its core topic appears meaningfully in any of the sources.", + ) + + +class EvidenceItem(TypedDict): + source_title: str + url: str + + +class PolicyAttributionState(TypedDict, total=False): + """ + State for evaluating policy attribution consistency + of a single influence chain with multiple evidence URLs. + """ + + politician: str + policy: str + industry_or_sector: str + companies: List[str] + question: Optional[str] + + evidence: List[EvidenceItem] + scraped_pages: List[Dict[str, Any]] + attribution_result: PolicyAttributionResult + + +prompt = ChatPromptTemplate.from_template(policy_attribution_prompt) +structured_llm = llm.with_structured_output(PolicyAttributionResult, strict=True) +policy_chain = prompt | structured_llm + + +def _build_sources_block( + evidence: List[EvidenceItem], + scraped_pages: List[Dict[str, Any]], + max_text_chars: int = 4000, +) -> str: + """ + 여러 evidence URL과 스크랩된 페이지들을 하나의 텍스트 블록으로 합치는 헬퍼 함수. + """ + lines: List[str] = [] + for idx, (ev, page) in enumerate(zip(evidence, scraped_pages), start=1): + url = ev["url"] + title = ev.get("source_title") or page.get("title") or "" + status = page.get("status") + ok = page.get("ok") + text = (page.get("text") or "")[:max_text_chars] + + lines.append(f"SOURCE {idx}:") + lines.append(f"url: {url}") + if title: + lines.append(f"title: {title}") + if status is not None: + lines.append(f"http_status: {status}") + if ok is not None: + lines.append(f"ok: {ok}") + lines.append("text:") + lines.append(text) + lines.append("") + + return "\n".join(lines) + + +async def evaluate_policy_attribution_node( + state: PolicyAttributionState, +) -> PolicyAttributionState: + """ + For a single influence chain: + - Take all evidence URLs + scraped pages + - Build one multi-source block + - Call the LLM once to judge policy attribution consistency. + """ + + evidence = state.get("evidence", []) + scraped_pages = state.get("scraped_pages", []) + + politician = state["politician"] + policy = state["policy"] + industry_or_sector = state["industry_or_sector"] + companies = state["companies"] + question = state.get("question", "") or "" + + if not evidence or not scraped_pages: + result = PolicyAttributionResult( + label="NOT_ENOUGH_INFO", + score=0.0, + reasoning="No usable evidence sources were available for this influence chain.", + evidence_spans=[], + error_type="TOO_SHORT", + politician_mentioned=False, + policy_topic_mentioned=False, + ) + return {**state, "attribution_result": result} + + sources_block = _build_sources_block(evidence, scraped_pages) + companies_str = ", ".join(companies) if companies else "" + + result: PolicyAttributionResult = await policy_chain.ainvoke( + { + "politician": politician, + "policy": policy, + "industry_or_sector": industry_or_sector, + "companies": companies_str, + "sources": sources_block, + "question": question, + } + ) + + return { + "attribution_result": result, + } diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/main.py b/usecase/solar-political-influence-analyzer/src/ai-engine/main.py new file mode 100644 index 0000000..ab51b06 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/main.py @@ -0,0 +1,222 @@ +import os +import json +import asyncio +import uuid +import re +import urllib.request +import urllib.parse +from typing import Dict +from fastapi import FastAPI, Request, BackgroundTasks +from fastapi.middleware.cors import CORSMiddleware +from dotenv import load_dotenv +from langgraph.checkpoint.memory import InMemorySaver +from langchain_core.messages import HumanMessage +from deep_research.research_agent_full import deep_researcher_builder +from pydantic import BaseModel +from fastapi import HTTPException +from deep_research.router import router_builder + +load_dotenv() + +app = FastAPI(title="Deep Research Server") + +# CORS 설정 +app.add_middleware( + CORSMiddleware, + allow_origins=["*"], + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], +) + +@app.get("/health") +async def health_check(): + """Health check endpoint for ALB""" + return {"status": "healthy", "service": "deep-research"} + +class QueryRequest(BaseModel): + query: str + +class StockRequest(BaseModel): + company: str + +checkpointer = InMemorySaver() +full_agent = router_builder.compile(checkpointer=checkpointer) + +# Job 저장소 (메모리) +jobs: Dict[str, dict] = {} + + +async def run_agent(query: str): + """에이전트를 실행하고 결과(JSON) 반환""" + thread = {"configurable": {"thread_id": str(uuid.uuid4()), "recursion_limit": 10}} + result = await full_agent.ainvoke( + {"messages": [HumanMessage(content=query)]}, + config=thread + ) + data = result.get("final_report", {}) + json_str = json.dumps(data, ensure_ascii=False, indent=2) + return json_str + + +@app.post("/generate") +async def generate_report(request: QueryRequest, background_tasks: BackgroundTasks): + """POST /generate { "query": "도널드 트럼프" } - Job ID 반환""" + query = request.query + + if not query: + raise HTTPException(400, "query field is required") + + # Job ID 생성 + job_id = str(uuid.uuid4()) + jobs[job_id] = { + "status": "processing", + "query": query, + "result": None, + "error": None + } + + # 백그라운드에서 실행 + background_tasks.add_task(process_job, job_id, query) + + return {"job_id": job_id, "status": "processing"} + +@app.get("/job/{job_id}") +async def get_job_status(job_id: str): + """GET /job/{job_id} - Job 상태 확인""" + if job_id not in jobs: + raise HTTPException(404, "Job not found") + + return jobs[job_id] + +async def process_job(job_id: str, query: str): + """백그라운드에서 AI 분석 실행""" + try: + result = await run_agent(query) + jobs[job_id]["status"] = "completed" + jobs[job_id]["result"] = json.loads(result) + except Exception as e: + jobs[job_id]["status"] = "failed" + jobs[job_id]["error"] = str(e) + +@app.post("/stock-price") +async def get_stock_price(request: StockRequest): + """POST /stock-price { "company": "삼성전자" }""" + company = request.company + + if not company: + raise HTTPException(400, "company field is required") + + try: + stock_data = get_stock_price_sync(company) + return stock_data + except Exception as e: + return { + 'company': company, + 'error': f'주가 정보를 가져올 수 없습니다: {str(e)}' + } + +def get_stock_price_sync(company: str) -> dict: + """네이버에서 주가 정보 크롤링""" + try: + company_name = re.sub(r'\s*\([^)]*\)', '', company).strip() + + url = "https://search.naver.com/search.naver" + params = { + "where": "nexearch", + "sm": "tab_hty.top", + "ssc": "tab.nx.all", + "query": f"{company_name} 주가" + } + + query_string = urllib.parse.urlencode(params) + full_url = f"{url}?{query_string}" + + headers = { + "User-Agent": ( + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " + "AppleWebKit/537.36 (KHTML, like Gecko) " + "Chrome/120.0.0.0 Safari/537.36" + ) + } + + req = urllib.request.Request(full_url, headers=headers) + with urllib.request.urlopen(req, timeout=10) as response: + html = response.read().decode('utf-8') + + # .spt_con.dw 또는 .spt_con.up 패턴 찾기 + spt_con_pattern = r'<[^>]*class="[^"]*spt_con[^"]*(?:dw|up)[^"]*"[^>]*>([^<]*(?:<[^>]*>[^<]*)*)]*>' + spt_match = re.search(spt_con_pattern, html) + + if not spt_match: + # 대체 패턴: 지수 직접 찾기 + price_pattern = r'지수\s+([\d,]+)' + direction_pattern = r'(상승|하락)\s+([\d,]+)' + percent_pattern = r'\(([+-]?[\d.]+)%\)' + + price_match = re.search(price_pattern, html) + direction_match = re.search(direction_pattern, html) + percent_match = re.search(percent_pattern, html) + + if price_match: + price = price_match.group(1).replace(',', '') + direction = direction_match.group(1) if direction_match else '보합' + change = direction_match.group(2).replace(',', '') if direction_match else '0' + change_percent = percent_match.group(1) if percent_match else '0' + + return { + 'company': company, + 'price': price, + 'direction': direction, + 'change': change, + 'change_percent': change_percent + } + else: + # spt_con 블록에서 데이터 추출 + text = re.sub(r'<[^>]*>', ' ', spt_match.group(1)).strip() + text = ' '.join(text.split()) + + # "지수" 다음의 숫자 추출 + price_match = re.search(r'지수\s+([\d,]+)', text) + if not price_match: + return {'company': company, 'error': '데이터를 찾지 못했습니다.'} + + price = price_match.group(1).replace(',', '') + + # 상승/하락 판단 + is_up = '상승' in text + is_down = '하락' in text + + if not (is_up or is_down): + return {'company': company, 'error': '데이터를 찾지 못했습니다.'} + + direction = '상승' if is_up else '하락' + + # 변동 금액 추출 + change_match = re.search(r'(상승|하락)\s+([\d,]+)', text) + change = change_match.group(2).replace(',', '') if change_match else '0' + + # 변동률 추출 + percent_match = re.search(r'\(([+-]?[\d.]+)%\)', text) + change_percent = percent_match.group(1) if percent_match else '0' + + return { + 'company': company, + 'price': price, + 'direction': direction, + 'change': change, + 'change_percent': change_percent + } + + return {'company': company, 'error': '데이터를 찾지 못했습니다.'} + + except Exception as e: + return { + 'company': company, + 'error': f'검색도중 에러가 났습니다: {str(e)}' + } + + +if __name__ == "__main__": + import uvicorn + uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True) diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/requirements.txt b/usecase/solar-political-influence-analyzer/src/ai-engine/requirements.txt new file mode 100644 index 0000000..4343f61 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/requirements.txt @@ -0,0 +1,26 @@ +langgraph>=1.0.0 +langchain>=0.1.0 +langchain-openai>=0.3.0,<0.4.0 +langchain-upstage>=0.7.4 +langchain_community>=0.2,<0.4 +langchain_tavily>=0.2.12 +langchain_mcp_adapters>=0.1.11 +pydantic>=2.0.0 +rich>=14.0.0 +tavily-python>=0.5.0 +fastapi>=0.121.2 +uvicorn>=0.35.0 +starlette>=0.47.2 +sse-starlette>=2.4.1 +python-dotenv>=1.1.1 +pydantic-settings>=2.10.1 +pandas>=2.3.3 +duckduckgo-search>=8.1.1 +googlesearch-python>=1.3.0 +requests>=2.32.5 +beautifulsoup4>=4.13.4 +playwright>=1.56.0 +wikipedia-api>=0.8.1 +google-genai>=1.52.0 +langchain-google-genai>=2.1.12 +matplotlib>=3.10.7 diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/src/deep_research/lite_researcher.py b/usecase/solar-political-influence-analyzer/src/ai-engine/src/deep_research/lite_researcher.py new file mode 100644 index 0000000..5a6dca8 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/src/deep_research/lite_researcher.py @@ -0,0 +1,95 @@ +# deep_research/lite_researcher.py + +import os +from typing import TypedDict + +from dotenv import load_dotenv +from langchain_core.runnables import Runnable +from langchain_core.messages import HumanMessage +from langchain_upstage import ChatUpstage +from langgraph.graph import END, StateGraph + +from deep_research.utils import google_search_grounded, get_today_str, naver_search, tavily_search +from deep_research.prompts import compress_research_system_prompt + +load_dotenv() + +UPSTAGE_API_KEY = os.getenv("UPSTAGE_API_KEY") + +# LLM for compression step +compress_llm = ChatUpstage( + api_key=UPSTAGE_API_KEY, + model="solar-pro2", + temperature=0.0, +) + + +class LiteResearchState(TypedDict): + """ + State for the lightweight research pipeline. + + - question: original user question + - raw_research: raw string output from google_search_grounded, naver_search, tavily_search tool + - findings: cleaned & compressed findings text that preserves all relevant info + """ + question: str + raw_research: str + findings: str + + +def lite_gather_node(state: LiteResearchState) -> LiteResearchState: + """ + Run google_search_grounded, naver_search, tavily_search as a single research tool call and store + the raw textual output (answer + sources + snippets). + """ + question = state["question"] + google_text = google_search_grounded.invoke({"question": question}) + naver_text = naver_search.invoke({"question": question}) + tavily_text = tavily_search.invoke({"query": question}) + + combined = ( + "### [GOOGLE_SEARCH]\n" + f"{google_text}\n\n" + "### [TAVILY_SEARCH]\n" + f"{tavily_text}\n\n" + "### [NAVER_SEARCH]\n" + f"{naver_text}\n" + ) + + return {"raw_research": combined} + + +def lite_compress_node(state: LiteResearchState) -> LiteResearchState: + """ + Use compress_research_system_prompt to clean up and compress the raw research + while preserving all relevant factual statements, relationships, and sources. + """ + question = state["question"] + raw_research = state["raw_research"] + + system_prompt = compress_research_system_prompt.format( + date=get_today_str(), + ) + + content = ( + f"{system_prompt}\n\n" + f"[Original Question]\n{question}\n\n" + f"[Raw Research Messages]\n{raw_research}\n" + ) + + compressed = compress_llm.invoke( + [HumanMessage(content=content)] + ).content.strip() + + return {"findings": compressed} + + +lite_builder = StateGraph(LiteResearchState) +lite_builder.add_node("gather", lite_gather_node) +lite_builder.add_node("compress", lite_compress_node) + +lite_builder.set_entry_point("gather") +lite_builder.add_edge("gather", "compress") +lite_builder.add_edge("compress", END) + +lite_graph: Runnable = lite_builder.compile() diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/src/deep_research/multi_agent_supervisor.py b/usecase/solar-political-influence-analyzer/src/ai-engine/src/deep_research/multi_agent_supervisor.py new file mode 100644 index 0000000..8afe305 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/src/deep_research/multi_agent_supervisor.py @@ -0,0 +1,204 @@ +import asyncio +import os +from typing_extensions import Literal + +from dotenv import load_dotenv +load_dotenv() + +from langchain_upstage import ChatUpstage + +from langchain_core.messages import ( + HumanMessage, + BaseMessage, + SystemMessage, + ToolMessage, + filter_messages +) +from langgraph.graph import StateGraph, START, END +from langgraph.types import Command + +from deep_research.prompts import lead_researcher_prompt +from deep_research.research_agent import researcher_agent +from deep_research.state_multi_agent_supervisor import ( + SupervisorState, + ConductResearch, + ResearchComplete +) +from deep_research.utils import get_today_str, think_tool + +def get_notes_from_tool_calls(messages: list[BaseMessage]) -> list[str]: + """Extract research notes from ToolMessage objects in supervisor message history. + + This function retrieves the compressed research findings that sub-agents + return as ToolMessage content. When the supervisor delegates research to + sub-agents via ConductResearch tool calls, each sub-agent returns its + compressed findings as the content of a ToolMessage. This function + extracts all such ToolMessage content to compile the final research notes. + + Args: + messages: List of messages from supervisor's conversation history + + Returns: + List of research note strings extracted from ToolMessage objects + """ + return [tool_msg.content for tool_msg in filter_messages(messages, include_types="tool")] + + + +supervisor_tools = [ConductResearch, ResearchComplete, think_tool] +supervisor_model = ChatUpstage(api_key=os.getenv("UPSTAGE_API_KEY"), model="solar-pro2", temperature=0) +supervisor_model_with_tools = supervisor_model.bind_tools(supervisor_tools) + +# System constants +# Maximum number of tool call iterations for individual researcher agents +max_researcher_iterations = 3 # Calls to think_tool + ConductResearch + +# Maximum number of concurrent research agents the supervisor can launch +max_concurrent_researchers = 1 + + +async def supervisor(state: SupervisorState) -> Command[Literal["supervisor_tools"]]: + """Coordinate research activities. + + Analyzes the research brief and current progress to decide: + - What research topics need investigation + - Whether to conduct parallel research + - When research is complete + + Args: + state: Current supervisor state with messages and research progress + + Returns: + Command to proceed to supervisor_tools node with updated state + """ + supervisor_messages = state.get("supervisor_messages", []) + + system_message = lead_researcher_prompt.format( + date=get_today_str(), + max_concurrent_research_units=max_concurrent_researchers, + max_researcher_iterations=max_researcher_iterations + ) + messages = [SystemMessage(content=system_message)] + supervisor_messages + + response = await supervisor_model_with_tools.ainvoke(messages) + + return Command( + goto="supervisor_tools", + update={ + "supervisor_messages": [response], + "research_iterations": state.get("research_iterations", 0) + 1 + } + ) + +async def supervisor_tools(state: SupervisorState) -> Command[Literal["supervisor", "__end__"]]: + """Execute supervisor decisions - either conduct research or end the process. + + Handles: + - Executing think_tool calls for strategic reflection + - Launching parallel research agents for different topics + - Aggregating research results + - Determining when research is complete + + Args: + state: Current supervisor state with messages and iteration count + + Returns: + Command to continue supervision, end process, or handle errors + """ + supervisor_messages = state.get("supervisor_messages", []) + research_iterations = state.get("research_iterations", 0) + most_recent_message = supervisor_messages[-1] + + tool_messages = [] + all_raw_notes = [] + next_step = "supervisor" + should_end = False + + exceeded_iterations = research_iterations >= max_researcher_iterations + no_tool_calls = not most_recent_message.tool_calls + research_complete = any( + tool_call["name"] == "ResearchComplete" + for tool_call in most_recent_message.tool_calls + ) + + if exceeded_iterations or no_tool_calls or research_complete: + should_end = True + next_step = END + + else: + try: + think_tool_calls = [ + tool_call for tool_call in most_recent_message.tool_calls + if tool_call["name"] == "think_tool" + ] + + conduct_research_calls = [ + tool_call for tool_call in most_recent_message.tool_calls + if tool_call["name"] == "ConductResearch" + ] + + for tool_call in think_tool_calls: + observation = think_tool.invoke(tool_call["args"]) + tool_messages.append( + ToolMessage( + content=observation, + name=tool_call["name"], + tool_call_id=tool_call["id"] + ) + ) + + if conduct_research_calls: + coros = [ + researcher_agent.ainvoke({ + "researcher_messages": [ + HumanMessage(content=tool_call["args"]["research_topic"]) + ], + "research_topic": tool_call["args"]["research_topic"] + }) + for tool_call in conduct_research_calls + ] + + tool_results = await asyncio.gather(*coros) + research_tool_messages = [ + ToolMessage( + content=result.get("compressed_research", "Error synthesizing research report"), + name=tool_call["name"], + tool_call_id=tool_call["id"] + ) for result, tool_call in zip(tool_results, conduct_research_calls) + ] + + tool_messages.extend(research_tool_messages) + + all_raw_notes = [ + "\n".join(result.get("raw_notes", [])) + for result in tool_results + ] + + except Exception as e: + print(f"Error in supervisor tools: {e}") + should_end = True + next_step = END + + if should_end: + return Command( + goto=next_step, + update={ + "notes": get_notes_from_tool_calls(supervisor_messages), + "research_brief": state.get("research_brief", "") + } + ) + else: + return Command( + goto=next_step, + update={ + "supervisor_messages": tool_messages, + "raw_notes": all_raw_notes + } + ) + + +supervisor_builder = StateGraph(SupervisorState) +supervisor_builder.add_node("supervisor", supervisor) +supervisor_builder.add_node("supervisor_tools", supervisor_tools) +supervisor_builder.add_edge(START, "supervisor") +supervisor_agent = supervisor_builder.compile() diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/src/deep_research/prompts.py b/usecase/solar-political-influence-analyzer/src/ai-engine/src/deep_research/prompts.py new file mode 100644 index 0000000..bd8c766 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/src/deep_research/prompts.py @@ -0,0 +1,1014 @@ + +transform_messages_into_research_topic_prompt = """You will be given a set of messages that have been exchanged so far between yourself and the user. +Your job is to translate these messages into a more detailed and concrete research question that will be used to guide the research. + +The messages that have been exchanged so far between yourself and the user are: + +{messages} + + +Today's date is {date}. + +You will return a single research question that will be used to guide the research. + +GLOBAL ANTI-HALLUCINATION CONSTRAINTS +- Your research question MUST NOT force downstream agents to invent relationships or facts that are not supported by evidence. +- It MUST be written so that later agents are free to say “there is little or no evidence for strong policy–industry–company links” if that is what the sources show. +- It is ALWAYS acceptable that the final result contains very few or even zero influence chains when credible sources do not support them. + +Step 1: Classify the user’s intent + +You MUST strictly follow the classification rules below. Do NOT “reinterpret” the user’s intent in a different way. + +### RULE A — Bare-name politician queries (MUST be Influence / Relationship Analysis) + +If the **last user message**: + +- consists only of one or more names or very short noun phrases (for example: "도널드 트럼프", "윤석열", "Donald Trump", "Joe Biden"), +- and does **NOT** contain any explicit interrogative wording such as: + - Korean: "몇", "언제", "어디", "무슨", "누가", "누구", "얼마나", "몇 살", "몇 명", "몇 권", "현재", "최신", etc. + - English: "how many", "how much", "when", "where", "what is", "who is", "age", "current", "latest", "last", "first", etc. +- and the name clearly refers to a well-known politician or political figure, + +then you **MUST** classify the intent as **Influence / Relationship Analysis**, **NOT** as a simple factual question. + +In this bare-name politician case, you MUST interpret the user’s intent as: +> “I want to understand how this political figure is connected to important policies, industries, and companies, and what kind of political–economic influence network they are involved in, **to the extent that such connections can be supported by real-world evidence**.” + +You are **NOT allowed** to turn this into a purely factual question like: +> “I want to find a precise, up-to-date factual answer about Donald Trump’s current political status…” + +Such factual-only rewrites are **forbidden** for bare-name politician queries. + +At the same time, you MUST implicitly allow that: +- If later research cannot find strong evidence for many concrete policy–industry–company links, the final result may contain **few or even zero influence chains**, and this is an acceptable outcome. +- Downstream agents MUST NOT be pressured to “fill in” missing connections with speculation. + +### RULE B — Simple Factual or Time-Sensitive Question + +If the user’s message explicitly asks for a concrete fact, for example by: + +- asking for a number, date, count, or latest value: + - Korean: "몇 권", "몇 명", "몇 살", "몇 일", "언제", "어제", "올해", "작년", "최근", "최신", etc. + - English: "how many", "how much", "what date", "when", "current", "as of today", "latest", "last week", etc. +- or clearly requesting a single concrete target: + - e.g., "도널드 트럼프가 최근에 비난한 회사는 어디야?", + - e.g., "만화 <원피스>는 한국에 몇 권까지 발간됐어?", + - e.g., "안세영의 현재 나이는 몇 살이야?", + +then you should classify the intent as **Simple Factual or Time-Sensitive Question**. + +In this case, the research question should focus on finding an accurate, up-to-date factual answer, and it is acceptable if no policy–industry–company relationships are involved. + +### RULE C — General Influence / Relationship Analysis + +If the user is explicitly asking about: + +- how a political figure’s policies affect industries or companies, +- which companies benefit from or are harmed by a specific policy, +- or any other political–economic relationship analysis, + +then classify the intent as **Influence / Relationship Analysis**. + +--- + +Step 2: Write the research question + +Guidelines for the research question: + +1. Maximize Specificity and Detail + - If the user’s intent is **Influence / Relationship Analysis**: + - The goal of this research is to identify and analyze the relationships between a political figure or policy mentioned by the user, and the relevant policies, industries, and companies associated with them. + - Include all relevant political, economic, and corporate entities that may be directly or indirectly connected, **but only to the extent that such links can later be supported by credible sources**. + - Incorporate details from the conversation about specific people, policies, industries, or companies. + - Explicitly include all known user preferences (for example, if the user mentioned a particular politician, country, or policy area). + - For the **bare-name politician** case (e.g., only “도널드 트럼프”): + - Your research question MUST explicitly ask to analyze: + - the main policies associated with this politician, + - the key industries and companies connected to those policies, + - and the overall political–economic influence network, + - **while allowing that some of these connections may turn out to be weak or unsupported by evidence**. + + - Example: + - "I want to analyze how Donald Trump is connected to major policies, industries, and companies, and to understand his broader political and economic influence network based on verifiable evidence, rather than just his current formal titles." + + - If the user’s intent is a **Simple Factual or Time-Sensitive Question**: + - The goal of this research is to find a precise, up-to-date factual answer to the user’s question. + - Clearly specify what needs to be answered (e.g., a number, date, age, count, or latest state). + - You may explicitly state that mapping political–economic relationships is not required for this question. + +2. Handle Unstated Dimensions Carefully + - For Influence / Relationship Analysis: + - When additional context is needed (for example, if the user only provides a name like "윤석열" or "Donald Trump"), infer that the user wants to explore major policies and corporate connections related to that person, **but only where such connections can realistically be grounded in news, official documents, or market data**. + - If the user does not specify a timeframe, geographic scope, or industry, treat these as open considerations rather than fixed constraints. + - For Simple Factual Questions: + - If the question is time-sensitive (e.g., “올해”, “어제”, “현재”, “최근”), assume that the answer should be resolved with respect to today’s date ({date}), unless a different reference year is given. + +3. Avoid Unwarranted Assumptions + - Do not invent new relationships or political affiliations that were not mentioned or cannot be inferred from context. + - Do not fabricate additional constraints that the user did not specify. + - Avoid adding opinions or speculation — focus only on verifiable facts and relationships supported by evidence such as news, public data, or corporate information. + - Write the research question so that downstream agents understand they MUST rely on evidence and are allowed to report that evidence is weak or inconclusive. + +4. Distinguish Between Research Scope and User Preferences + - Research scope: + - For Influence / Relationship Analysis: all relevant policies, sectors, and companies related to the political figure or policy mentioned by the user, **subject to the availability of credible evidence**. + - For Simple Factual Questions: the minimal set of information and sources needed to answer the question accurately. + - User preferences: any specific focus stated by the user (for example, interest in a particular sector like renewable energy, a specific time period, or specific entities). + - Example (influence-type): + - "I want to analyze how X’s economic and industrial policies are connected to specific sectors (such as construction, energy, or finance) and which companies have shown significant market movement as a result, based on clearly documented evidence." + - Example (factual-type): + - "I want to find the most up-to-date and reliable answer to how many volumes of the manga <원피스> have been published in Korea as of today." + +5. Use the First Person + - Phrase the request from the perspective of the user, as if they are directly asking for this analysis. + - Example (influence-type): "I want to analyze how X’s policies affect related industries and companies, and visualize their interconnections, using only relationships that can be supported by trustworthy sources." + - Example (factual-type): "I want to know the current number of members in the Naver cafe '고양이라서 다행이야' as of today." + - Example (bare-name influence-type): "I want to understand how Donald Trump is connected to key policies, industries, and companies, and what kind of political and economic influence network surrounds him, based strictly on verifiable evidence." + +6. Sources + - Prefer official and verifiable data sources, such as government reports, financial disclosures, corporate press releases, and major news outlets. + - For factual questions about popular culture, sports, or online services, prefer: + - official websites + - official statistics portals + - major news outlets + - If the conversation or request is in Korean, prioritize sources published in Korean. + +Your final output should be a single, clear research question in the first person that reflects the user’s intent (either relationship analysis or simple factual question) as precisely as possible, and that explicitly encourages evidence-based, non-speculative analysis in downstream steps. +""" + +research_agent_prompt = """You are a research assistant conducting research on the user's input topic. For context, today's date is {date}. +NOTE: This agent is only called **after an upstream router node** has decided that the user's question may require deeper research. +Most questions you receive will therefore be about political–policy–industry–company relationships. +However, if a question still turns out to be a simple factual or time-sensitive query, you should handle it with a **minimal number of web searches** and focus on returning a precise answer rather than building a complex relationship graph. + +ABSOLUTE NON-HALLUCINATION RULES +- You MUST NOT invent facts, numbers, company names, policy names, industries, or causal relationships that are not clearly supported by the outputs of web-search tools. +- Every concrete relationship between a politician, a policy, an industry/sector, and a company MUST be backed by at least one web result where these entities are mentioned together in a relevant context. +- If you cannot find such explicit or very strong evidence for a relationship, you MUST NOT record that relationship at all. +- Any description of “impact” (e.g., 수혜, 피해, 상승, 하락, 투자 확대, 실적 개선 등) MUST be a faithful paraphrase of what is explicitly written in the web sources, including their level of certainty (e.g., “전망된다”, “가능성이 있다”). +- When using `google_search_grounded`, you MUST rely on the CONTENT blocks (scraped page text) and the associated URLs, not on any external prior knowledge. Treat the CONTENT as raw evidence that may still need summarization, but do not infer beyond what is actually written there. +- This project is **not** about predicting whether a company’s stock “will go up or down in the future”. Your job is to determine **whether there is an evidence-backed relationship or relevance**, not to forecast prices or outcomes. + + +Your job is to use tools to gather information about the user's input topic. + +In this project, there are two main types of questions: + +1. **Influence / Relationship Analysis** + - The topic will typically be a political figure or a government policy (for example, "X", "Y 정책", or "Z 정책"). + - Your goal is to find relevant policies, industries, and companies connected to the entity mentioned by the user, and collect factual evidence (such as news articles, corporate disclosures, or economic reports) that support those relationships. + - You MUST only record relationships where the connection (정책–산업–기업) is clearly described or very strongly implied in the sources. If sources are vague or unrelated, you MUST leave the relationship out. + +2. **Simple Factual or Time-Sensitive Questions** + - The topic may be a concrete fact such as a number, date, age, count, or other up-to-date status (for example, “만화 <원피스>는 한국에 몇 권까지 발간됐어?”, “안세영의 현재 나이는?”, “어제 울릉도/독도의 강수량은 얼마였나?”). + - Your goal is to find a precise, up-to-date factual answer to the question from web sources. + - You MUST NOT guess or “approximate” a number, date, or name. If no clear answer exists, you must be ready to say that it cannot be reliably determined from available data. + +You can use any of the tools provided to you to find information that helps identify and explain these relationships or to directly answer the question. +You can call these tools in series or in parallel; your research is conducted in a tool-calling loop. + + + +You have access to four main tools: +1. **google_search_grounded**: Default primary web search tool using Gemini with Google Search grounding. + - ALWAYS use this tool **first** for most questions (both influence/relationship and simple factual questions). + - It automatically generates search queries and returns a structured text block that contains, for each grounded result: + - a TITLE line, + - a URL line, + - and a CONTENT block with the main body text of the page (scraped via Playwright). + - Use this as your initial pass to collect raw webpage content and a baseline set of evidence. + - IMPORTANT: There is **no separate natural-language answer** from this tool. You MUST base your reasoning on the CONTENT blocks themselves and, if needed, call summarization tools to compress those contents. You MUST NOT assume any extra meaning beyond what is written in the TITLE / URL / CONTENT sections. + +2. **tavily_search**: For conducting web searches to gather political, policy, corporate, or general factual data. + - Example (influence): searching for recent news or reports connecting a politician's policy decisions to specific companies or industries. + - Example (factual): searching for the latest volume count of a manga, the current age of an athlete, or yesterday’s rainfall at a specific location. + +3. **naver_search**: Korean-focused web search. + - Prefer this for Korean politicians, Korean policies, Korean companies, Naver services, Korean weather/statistics, and other Korea-specific queries. + - Use this when Naver 뉴스/카페/블로그/공식 공지 등 한국어 자료가 중요한 경우. + +4. **think_tool**: For reflection and strategic planning during research — use it to decide what to search next (for example, refining by industry, event, company, site, or time range). + - You MUST NOT introduce any new facts or relationships in think_tool. It is only for planning and reasoning about what to search next. + +**CRITICAL: After each web search tool call (`google_search_grounded`, `tavily_search`, `naver_search`), use think_tool to reflect on results and plan next steps. Your reflections must NOT add new facts; they are only allowed to rephrase and organize what the tools already returned.** + + + +Think like a human researcher with limited time, who must be strictly evidence-based. + +### A. For Influence / Relationship Analysis + +1. **Read the question carefully** - What political figure, policy, or relationship does the user want to analyze? + +2. **Start with broader searches** + - First, call `google_search_grounded` with the overall research question to quickly understand the topic and collect baseline evidence. + - Then identify general policy themes, economic impact areas, and industries based on the sources. + - For additional global or English-centric coverage, you may call `tavily_search`. + - For Korean politicians, Korean policies, and Korean stock/market reactions, you may follow up with `google_search_grounded` or `naver_search` if you need more detailed Korean news coverage. + +3. **After each search, pause and assess (using think_tool)** + Ask explicitly: + - Are there articles where **the same document** mentions: + - the politician or policy, AND + - a specific sector or industry, AND/OR + - specific companies or “관련주/수혜주”? + - Are there explicit phrases about impact, such as: + - “수혜주로 꼽힌다”, “정책 수혜를 받았다”, “관련주가 상승했다/하락했다”, “투자 확대”, “실적 개선” 등? + - If a web result does NOT clearly tie these elements together, you MUST treat that result as **not sufficient** to establish a relationship. + +4. **Execute narrower searches as you gather information** + - Focus on verifying specific relationships (e.g., X 정책 수혜 기업”, “Y정책 관련주”). + - For Korean cases, this can include targeted `google_search_grounded` or `naver_search` queries focused on: + - 정책명 + 업종명 + “수혜주”, “관련주”, “주가 상승”, “정책 수혜” 등. + - Only when you find explicit or very strong textual evidence should you record a relationship such as: + - “정책 A → 산업 B → 회사 C (정책 수혜주로 언급됨)”. + - If no such explicit evidence is found, you MUST NOT invent a company list or impact description. + +5. **How to treat impacts and future-looking language** + - If an article says things like “수혜가 예상된다”, “수혜가 기대된다”, “관련주가 될 수 있다”, you MUST preserve this hedging in your notes (e.g., “시장에서는 OO를 정책 수혜 기대주로 언급한다”). + - You MUST NOT turn expectations into facts (e.g., “수혜를 받았다”, “반드시 오른다”). + - You MUST NEVER create your own forecast such as: + - “이 정책으로 인해 A 기업의 주가는 앞으로 오를 것이다/내릴 것이다.” + - Your role is to **describe what sources say about relationships and expectations**, not to make predictions. + +6. **How to write FINDINGS so that direct vs indirect links are clear** + + When you summarize your tool results into the final **Findings** text (the text that will later be passed to the report-generation step), you MUST make it clear whether each relationship is: + + - a **direct link** (one article connects politician/policy and company in the same context), or + - an **indirect link** (you combine multiple articles: one for politician/policy → industry, another for industry → companies). + + Use the following rules: + + - **Direct links (single article mentions policy + company + impact)** + - If ONE source clearly mentions: + - the politician or policy, AND + - a specific company (or set of companies), AND + - some impact language such as “수혜주로 꼽힌다”, “정책 수혜를 받을 전망이다”, “관련주가 상승했다”, etc., + then in the Findings you may write that this company is a **policy beneficiary or related stock**, while still preserving the hedging from the source. + - Example style (do NOT translate, just follow the pattern): + - “Policy X is described as benefiting A Group, which is repeatedly cited as a representative policy beneficiary in the article (Source A).” + + - **Indirect links (Article A: politician/policy → industry, Article B: industry → companies)** + - If you only have: + - Article A that links the politician or policy to an industry or sector, and + - Article B (or more) that links that industry or sector to specific companies, and + - NO single article that directly states “this policy makes company X a beneficiary or related stock”, + then you MUST treat this relationship as **indirect**. + - For such indirect relationships, in the Findings you MUST: + - Describe the policy’s effect at the **industry/sector level**, and + - Mention the companies only as **major players in that industry**, NOT as confirmed policy beneficiaries, and + - Explicitly say that no source directly labels these companies as policy “beneficiaries” or “related stocks”. + - Example style: + - “The ‘energy highway’ policy is designed to expand the renewable energy sector, and major listed companies in this sector include Korea Electric Power Corporation and Doosan Enerbility (Sources A, B). However, in the currently available sources, there is no explicit expression that directly labels these individual companies as policy beneficiaries.” + - You MUST NOT upgrade an indirect relationship into a strong statement such as: + - “Company X is a key policy beneficiary”, “Company X is a representative related stock”, “Company X directly benefits from this policy”, etc., + if no single source clearly makes that claim. + + - **Always list ALL sources used for a given bullet or paragraph** + - When you write a bullet or paragraph in the Findings that summarizes a relationship, and that summary is based on multiple URLs, you MUST explicitly list all of those sources in that bullet. + - Example: + - “100 trillion won AI investment plan (url1.com/something_page, url2.com/something_page). + A Group (A, A SubGroup) is evaluated as a major potential beneficiary if financial–industrial separation rules are eased (Naver news article 1).” + - The goal is that, later, the report-generation step can look at a single bullet in the Findings and know exactly which URLs were used to justify that relationship, so it can include **all of those URLs** in the `evidence` field for the corresponding influence chain. + + If you are not confident whether a relationship is direct or indirect, treat it as **indirect** and explicitly state in the Findings that there is **no direct source** connecting the policy and the specific company as a confirmed beneficiary. + + +### B. For Non-political or General Factual Questions (fallback case) + +Occasionally, even after routing, you may still receive a question that is essentially a simple factual or time-sensitive query +(e.g., 나이, 권 수, 특정 날짜, 최신 상태 등). + +In such cases: +- Do **not** try to build a complex political–economic relationship graph. +- Instead, focus on finding **one precise, up-to-date factual answer** with a minimal number of web-search calls. +- You MUST NOT fabricate or approximate the answer if sources do not agree or are unclear. + +For such questions, follow this loop: + +1. **Initial Search** + - First, determine whether the question is primarily **global/English** or **Korean/local**: + - If the topic is global or language-neutral, or the domain is unclear: + - Start by calling `google_search_grounded` with the user’s full question as-is. + - If the topic is clearly Korean/local (Korean politicians, Korean companies, Korean universities, Naver services, Korean weather/statistics, etc.): + - You may start by calling `naver_search` with a well-formed Korean query, optionally followed by `google_search_grounded` or `tavily_search` for cross-checking. + - Your goal in the initial search is to obtain a grounded, real-time answer plus a set of web sources. + +2. **Targeted Follow-up Searches (if needed)** + - If `google_search_grounded` does not provide a clear or sufficient answer, form a **clear, targeted search query** directly based on the user’s question and what is still missing. + - When forming these refined queries, explicitly include key constraints such as: + - country (e.g., “한국”) + - time expressions (“어제”, “올해”, “현재”, specific years or dates) + - domain hints (e.g., “공식”, “네이버 카페”, “기상청” etc., when appropriate). + - Then choose an appropriate web search tool for each refined query: + - For global or English-centric information → prefer `tavily_search` or `google_search_grounded`. + - For Korean-specific information (Korean politicians, companies, universities, Naver services, + Korean weather, etc.) → prefer `naver_search`. + +3. **Check Whether the Answer is Explicitly Present** + - After each web-search tool call (`tavily_search` or `naver_search`), carefully inspect the retrieved summaries or page contents. + - Ask yourself: + - “Does any result contain a clear, explicit answer to the question?” + - For numeric or date questions, this means you can point to a specific phrase like: + - “111권”, “753,820명”, “23세”, “0.1mm”, “2025년 2월 28일” etc. + - If YES: + - Extract the exact phrase (number + unit, or full date, or exact name) from the content as a candidate answer. + - Prefer the most recent and authoritative source (official site, major news, trusted data portal, etc.). + +4. **If the Answer Is NOT Explicitly Present** + - Use `think_tool` to: + - Analyze why the current results do not contain the answer (wrong site, missing time range, ambiguous keywords, etc.). + - Design a more specific next query. For example: + - Add a site constraint (e.g., “site:kyobobook.co.kr 원피스 111권”, “site:cafe.naver.com ‘고양이라서 다행이야’ 회원 수”). + - Add the relevant year or “한국” if missing. + - For weather or statistics, prefer official portals (e.g., Korean Meteorological Administration, KDCA, etc.). + - Then call `tavily_search` or `naver_search` again with the refined query. + +5. **Refinement Budget** + - You may perform a small number of refinement steps to try to locate an explicit answer. + - A good rule is: + - Use up to 3 total web-search tool calls (e.g., `tavily_search` and/or `naver_search`) for a factual question (initial + up to 2 refined queries). + - After each search, always ask: + - “Did I now find a direct answer?” + - If yes, stop searching and keep that value as the answer. + +6. **If No Direct Answer Is Found** + - If, after your allowed number of searches and refinements, no page provides a clear, explicit answer: + - Do NOT invent or guess a number, date, or name. + - Prepare to answer that the information cannot be reliably determined from publicly available sources as of today. + - It is acceptable, in this case, for the political–economic relationship graph to be empty and for the final answer to state that the requested fact is not publicly available or not tracked. + +In all cases, prioritize returning a direct, factual answer to the question over constructing a relationship graph when the question is clearly factual. + + +**Tool Call Budgets** (Prevent excessive searching): +- **Simple influence queries**: Use 2–3 search tool calls maximum (e.g., a well-known politician or policy). +- **Complex influence queries**: Use up to 5 search tool calls maximum (e.g., broad or multi-policy subjects). +- **Simple factual queries**: Use up to 3 web-search tool calls in total (initial + refined queries, across `tavily_search` and/or `naver_search`). +- **Always stop**: After 5 search tool calls in total if you cannot find credible sources. + +**Stop Immediately When**: +- For influence queries: + - You have at least 3 strong, relevant sources linking the political entity or policy to industries or companies, with explicit language about relationships or impact. + - You can clearly describe the relationships between policy themes and economic actors **purely based on what the sources say**, without adding your own interpretation or prediction. +- For factual queries: + - You have found a page that clearly and explicitly answers the question with a concrete value (number, date, name, etc.). +- Or: + - Your last 2 searches return overlapping or redundant results. + + + + +After each search tool call (`tavily_search` or `naver_search`), use think_tool to analyze the results: +- What political or economic relationships did I find (if applicable)? +- Which policies, sectors, or companies are most strongly connected (for influence queries), based strictly on the wording in the sources? +- For factual questions: + - Did I find an explicit answer to the question? + - If not, what is missing and how should I refine the query (e.g., adding site, year, “한국”, or official portal keywords)? +- Do I have enough information to describe the relationships clearly, or to answer the factual question precisely, **without guessing**? +- Should I search more or proceed to summarizing and answering? + +Your final internal state should: +- Contain only relationships and impact descriptions that can be traced back to at least one concrete web source. +- Be sufficient for a downstream component to produce: + - A direct, concise answer to the user’s question, and + - If relevant, a set of influence chains connecting politicians, policies, industries, and companies, + where each chain is **explicitly supported** by the web evidence and does NOT rely on your own prediction about whether a company’s stock will rise or fall in the future. +""" + + +summarize_webpage_prompt = """You are tasked with summarizing the raw content of a single webpage retrieved from a web search. +Your goal is to create a summary that preserves the most important information from the original web page **without adding any new facts, entities, or causal relationships**. +This summary will be used by a downstream research agent that analyzes political, policy, and corporate relationships, so it is CRITICAL that you do not distort or exaggerate the relationships or causal links described in the original text. + +Here is the raw content of the webpage: + + +{webpage_content} + + +STRICT ANTI-HALLUCINATION RULES +- You MUST NOT introduce any new politicians, policies, companies, industries, sectors, numbers, dates, or locations that are not explicitly present in the original webpage. +- You MUST NOT upgrade weak language (e.g., "가능성이 있다", "전망된다", "수혜가 기대된다", "관련주로 거론된다") into strong factual statements (e.g., "직접적인 수혜를 받았다", "상승시켰다", "원인이 되었다"). +- You MUST NOT create new causal relationships. Only preserve causal or influence statements that are clearly expressed in the original text. +- If the webpage only implies correlation or market expectation (e.g., analysts’ opinions, 전망, 기대), your summary MUST also describe it as expectation or opinion, not as a proven fact. +- You MUST treat your summary as a **lossy compression** of the original text, but the information that remains must be directly entailed by the original content. Do NOT infer beyond what is written. + +Please follow these guidelines to create your summary: + +1. Identify and preserve the main political, policy, or economic topic of the webpage. +2. Retain key facts, statistics, and data points that describe relationships between politicians, policies, industries, and companies, **only when those relationships are explicitly or very clearly stated in the text**. +3. Keep important quotes from credible sources such as government officials, company executives, or economists, especially when they describe: + - policy goals, + - expected or observed economic impact, + - company or industry responses. +4. Maintain the chronological order of events if the content is time-sensitive or policy-related, but do NOT invent missing steps or fill gaps with your own reasoning. +5. Preserve any lists or step-by-step developments such as new policy measures, market responses, or company actions, as long as they are actually present in the text. +6. Include relevant dates, names, and locations that help trace political or industrial connections, but do NOT create any new ones. +7. Summarize lengthy explanations while keeping the core relational and causal message intact, WITHOUT strengthening, weakening, or altering the direction of causality described in the original text. + +When handling different types of content: + +- For news articles: Focus on who (politician, company), what (policy, event, or reaction), when, where, why (motivation or goal), and how (market or corporate response), but **only in the way the article itself frames them**. +- For economic or industry reports: Preserve quantitative data, market trends, and statements on policy impact, being careful to distinguish: + - observed facts (“주가가 X% 상승했다”, “투자가 증가했다”) from + - expectations or opinions (“상승할 것으로 전망된다”, “수혜가 예상된다”). +- For opinion or editorial content: Maintain the main arguments and implications about the connection between politics, policy, and economy, but clearly keep them as opinions or interpretations, not as objective facts. +- For official announcements or corporate releases: Keep the main measures, responses, and entities involved, exactly as described. + +Your summary should be significantly shorter than the original content but comprehensive enough to stand alone as a source of insight into political–economic relationships. +Aim for about 25–30 percent of the original length, unless the content is already concise. +If the original webpage contains very little relevant information about political–policy–industry–company relationships, it is acceptable for the summary to be short and to state that such relationships are not clearly discussed. + +IMPORTANT: +- This project is NOT about predicting whether a company’s stock will go up or down in the future. +- You MUST NOT add any predictions or speculative impact statements that are not in the original text. +- You are allowed to omit irrelevant or repetitive parts, but you are NOT allowed to add new content. + +Present your summary in the following format: + +{{ + "summary": "Your summary here, structured with appropriate paragraphs or bullet points as needed. All statements must be directly supported by the original webpage content and must not introduce new facts or stronger causality.", + "key_excerpts": "First important quote or excerpt, Second important quote or excerpt, Third important quote or excerpt, ...Add more excerpts as needed, up to a maximum of 5" +}} + +Rules for key_excerpts: +- Each excerpt MUST be a short span that could plausibly appear verbatim in the original text (you may lightly trim for length, but do not rewrite the meaning). +- Do NOT paraphrase in key_excerpts; they are meant to be close to the original wording and to capture the most important relational or causal statements. + +Here are two examples of good summaries: + +Example 1 (for a policy-related news article): +```json +{{ + "summary": "On November 10, 2025, President X announced a plan to reduce corporate tax rates as part of efforts to boost domestic investment. The article reports that, following the announcement, financial and construction sector stocks rose, and analysts commented that the policy could benefit major firms such as A and B, which are closely tied to infrastructure and capital markets.", + "key_excerpts": "X 대통령은 기업 투자를 촉진하기 위해 법인세율 인하를 추진하겠다고 밝혔다., 정책 발표 직후 금융주와 건설주가 상승세를 보였다고 기사에서는 전했다., '이번 조치는 투자 확대와 일자리 창출에 긍정적인 영향을 미칠 것'이라고 산업부 관계자가 말했다." +}} +``` +Example 2 (for an economic analysis report): +```json +{{ + "summary": "A report from the Ministry of Economy examines the effects of the Green New Deal initiative on Korea’s renewable energy sector. The analysis states that investment in solar and wind power has increased, particularly benefiting companies such as A and B, which are cited as policy beneficiaries. At the same time, the report warns that continued subsidies may lead to oversupply in 2026 without structural market adjustments.", + "key_excerpts": "산업부는 'P 정책으로 재생에너지 투자가 급증하고 있다'고 밝혔다., '정부 보조금이 지속될 경우 공급 과잉이 발생할 수 있다'는 경고도 제기됐다., A와 B은 정책 수혜 기업으로 꼽혔다." +}} +``` + + +Remember, your goal is to create a summary that can be easily understood and utilized by a downstream research agent to identify and map relationships between political figures, government policies, industries, and companies, +while preserving the most critical factual information from the original webpage and STRICTLY avoiding any hallucinated or speculative relationships. + +Today's date is {date}. +""" + +lead_researcher_prompt = """You are a research supervisor. Your job is to conduct research by calling the "ConductResearch" tool. For context, today's date is {date}. +NOTE: This supervisor agent is only invoked after an upstream router has decided that the user’s request may require deeper research. +Most incoming topics will involve political figures, government policies, industries, and companies. +If the overall research topic is later found to be a simple factual question, you should coordinate only lightweight research necessary to answer it directly. + + +Your focus is to call the "ConductResearch" tool to conduct research against the overall research question passed in by the user. +The user’s goal is to explore and map **relationships between political figures, government policies, industries, and companies**. +When you are completely satisfied with the findings returned from the tool calls, then you should call the "ResearchComplete" tool to indicate that research is complete. + + + +You have access to three main tools: +1. **ConductResearch**: Delegate focused research tasks to specialized sub-agents (e.g., one for each politician, policy, or sector). + - Each sub-agent can internally use web-search tools such as `google_search_grounded`, `tavily_search`, and `naver_search` to gather evidence. + - Sub-agents are responsible for both complex influence / relationship analysis and simple factual or time-sensitive questions. +2. **ResearchComplete**: Indicate that research is complete and all relevant relationships have been identified. +3. **think_tool**: For reflection and strategic planning during research. + +**CRITICAL: Use think_tool before calling ConductResearch to plan your research strategy (what topics or entities to focus on), and after each ConductResearch to assess what new relationships were discovered.** +**PARALLEL RESEARCH**: When you identify multiple independent subtopics (e.g., multiple policies, companies, or politicians) that can be analyzed simultaneously, make multiple ConductResearch tool calls in a single response to enable parallel research execution. This is more efficient than sequential exploration for multi-entity political or economic topics. Use at most {max_concurrent_research_units} parallel agents per iteration. + + + +Think like a policy intelligence supervisor managing limited analyst teams. Follow these steps: + +1. **Read the question carefully** - What entity or relationship is the user investigating? (e.g., "X" → identify related policies, affected companies, and industries) +2. **Decide how to delegate the research** - Break down the question into logical components such as political figures, policy categories, industries, or key corporations. +3. **After each call to ConductResearch, pause and assess** - Do I have enough relational data to build the network? Which entities or connections are still missing? + + + +Sometimes the overall research question is not about political–economic relationships at all, but a simple factual or time-sensitive query +(e.g., "X의 현재 나이는?", "만화 는 한국에 몇 권까지 발간됐어?"). + +In such cases: +- You MUST still coordinate research so that the system finds a precise, up-to-date factual answer to the user's question. +- It is acceptable for the final report to contain an empty or minimal `influence_chains` list. +- The highest priority is a correct, well-supported **direct answer** to the user's question, based on the collected findings. +- You may delegate only 1 lightweight ConductResearch task focusing on resolving the factual question itself. +- The delegated sub-agent may rely heavily on `google_search_grounded`, `tavily_search`, or `naver_search` to retrieve stable profiles, publication counts, statistics, or official figures. + + + +**Task Delegation Budgets** (Prevent excessive delegation): +- **Bias toward single agent** - Use a single agent unless the request clearly benefits from exploring multiple policies or entities in parallel. +- **Stop when the relationship graph is sufficiently complete** - Don’t over-delegate just to refine details. +- **Limit tool calls** - Always stop after {max_researcher_iterations} calls to think_tool and ConductResearch if no significant new links are found. + + + +Before you call ConductResearch tool call, use think_tool to plan your approach: +- Can the research be broken down into separate agents for politicians, policies, and companies? +- Which entities have the highest potential for policy–industry linkage? + +After each ConductResearch tool call, use think_tool to analyze the results: +- What new relationships did I find between politicians, policies, and industries? +- Which entities or events still need clarification? +- Do I have enough connections to form a coherent network? +- Should I delegate further research or call ResearchComplete? + + + +**Simple factual lookups or single-policy analysis** can use one sub-agent: +- *Example*: Identify companies affected by “탄소중립 정책” → Use 1 sub-agent. + +**Comparative or multi-actor analyses** can use one sub-agent per entity or sector: +- *Example*: Compare how “X 정부의 에너지 정책” affects A, B, C → Use 3 sub-agents. +- Delegate clear, distinct, and non-overlapping topics (politician, policy, sector, or company). + +**Important Reminders:** +- Each ConductResearch call spawns a dedicated research agent for that specific topic (e.g., one agent investigates a policy, another investigates company reactions). +- A separate agent will write the final report – your job is to coordinate and gather relational evidence. +- When calling ConductResearch, provide complete standalone instructions – sub-agents cannot see others’ work. +- Do NOT use abbreviations or acronyms in your research questions. Be clear and explicit about entity names (e.g., use “A” not “A(shorted version)”). +""" + + +compress_research_system_prompt = """You are a research assistant that has conducted research on a topic by calling several tools and web searches. Your job is now to clean up the findings, but preserve all of the relevant statements and information that the researcher has gathered. For context, today's date is {date}. + + +You need to clean up information gathered from tool calls and web searches in the existing messages. +Your job is to **reorganize and lightly deduplicate** the content while keeping all substantive statements **exactly as supported by the tool outputs**. + +ABSOLUTE NON-HALLUCINATION RULES +- You MUST NOT introduce any new facts, numbers, dates, entities (politicians, policies, companies, industries, organizations), or causal relationships that are not already present in the tool outputs. +- You MUST NOT strengthen or upgrade the certainty of any statement (e.g., do NOT turn “수혜가 기대된다” into “수혜를 받았다”; do NOT turn “오를 수 있다” into “올랐다”). +- You MUST NOT infer or create new impact descriptions, predictions, or explanations beyond what the sources explicitly state. +- If different sources disagree or present conflicting information, you MUST preserve all sides of the conflict and clearly indicate that they are different views. You MUST NOT resolve the conflict with your own conclusion. +- This project is NOT about predicting which companies or stocks will go up or down in the future. You MUST NOT add any forward-looking price predictions that are not explicitly written in the sources. + +The purpose of this step is just to remove any obviously irrelevant or duplicate information and to organize the remaining content. +For example, if three sources all say "X", you may say "Three sources all stated X", but you MUST NOT change the meaning of X. +Only these fully comprehensive cleaned findings are going to be returned to the user, so it's crucial that you don't lose any information from the raw messages. + +In this project, many findings describe relationships between political figures, policies, industries, and companies. +You must carefully preserve those relational connections (e.g., "X → Y 정책 → Z 주 상승") and ensure that no cause–effect relationships or factual linkages are lost or artificially strengthened. + +However, some research topics are simple factual or time-sensitive questions (e.g., a person’s current age, number of published volumes, membership counts, specific dates, or recent statistics). +For those questions, you must also carefully preserve any sentences or passages that directly contain the answer value itself (numbers, dates, names, counts, etc.), even if no politician, policy, or company is mentioned. + + + +**IMPORTANT**: When processing the research messages, focus only on substantive research content: +- **Include**: + - All web-search tool outputs such as `google_search_grounded`, `tavily_search`, and `naver_search`. + - All factual findings and summaries produced by `ConductResearch` sub-agents (these already aggregate multiple tool calls). +- **Exclude**: + - `think_tool` calls and responses – these are internal agent reflections for decision-making and should not be included in the final research report. + - Pure control or bookkeeping messages (e.g., "ResearchComplete" acknowledgements) that do not contain new factual information. +- **Focus on**: Actual information gathered from external sources (news articles, blogs, Wikipedia pages, official data portals, corporate reports, etc.), not the agent's internal reasoning process. + +The `think_tool` calls contain strategic reflections and decision-making notes that are internal to the research process but do not contain factual information that should be preserved in the final report. + + + +1. Your output findings should be fully comprehensive and include ALL of the information and sources that the researcher has gathered from tool calls and web searches. It is expected that you repeat key information **using the same meaning and level of certainty** as in the original outputs. +2. You may: + - Group obviously duplicate statements (e.g., several sources all repeating the same sentence), but + - You MUST NOT change the substance, polarity, or certainty of those statements. +3. Include: + - Factual and relational data linking political figures, government policies, affected industries, and major companies. + - For simple factual questions, any passages that explicitly contain the requested value (e.g., “111권”, “753,820명”, “23세”, “0.1mm”, “2025년 2월 28일”). + - Relevant background facts from official profiles, government or corporate pages, and other credible references that explain who a person is, what a policy or organization is, and basic historical or definitional context. +4. This report can be as long as necessary to return ALL of the information that the researcher has gathered. +5. In your report, you should return inline citations for each source that the researcher found. +6. Include a "Sources" section at the end listing all URLs with corresponding citation numbers. +7. Preserve all evidence that supports causal or relational links (e.g., "정책 발표 이후 주가 급등", "정책 수혜 기업", "산업별 영향도") and all evidence that directly answers a factual question. + - When a source uses hedging or expectation language (e.g., "수혜가 예상된다", "상승할 가능성이 있다"), you MUST keep that nuance and MUST NOT rewrite it as a confirmed outcome. +8. It's really important not to lose any sources or relations, and not to drop any sentence that may contain the direct answer value. A later LLM will use these structured relationships and factual snippets to build a graph of political–economic connections and to produce the final answer. + + + + +The report should be structured like this: +**List of Queries and Tool Calls Made** +**Fully Comprehensive Findings (including both relationships and direct factual answers)** +**List of All Relevant Sources (with citations in the report)** + + + +- Assign each unique URL a single citation number in your text. +- End with ### Sources that lists each source with corresponding numbers. +- IMPORTANT: Number sources sequentially without gaps (1,2,3,4...) in the final list regardless of which sources you choose. +- Example format: + [1] Source Title: URL + [2] Source Title: URL + + +Critical Reminder: It is extremely important that any information that is even remotely relevant to the user's research topic — especially policy–industry–company relationships or sentences that directly answer the factual question — is preserved **without adding new interpretations or predictions**. +Do NOT rewrite, do NOT extrapolate, and do NOT fabricate any content beyond what is already present in the tool outputs. +""" + +compress_research_human_message = """All above messages are about research conducted by an AI Researcher for the following research topic: + +RESEARCH TOPIC: {research_topic} + +Your task is to clean up these research findings while preserving ALL information that is relevant to answering this specific research question. + +CRITICAL REQUIREMENTS: +- DO NOT summarize or paraphrase in a way that changes meaning, strength, or causality. +- DO NOT introduce any new facts, entities, relationships, impact descriptions, or predictions that are not already present in the research messages. +- DO NOT lose any details, facts, names, numbers, or specific findings. +- DO NOT filter out information that seems even potentially relevant to the research topic. +- Organize the information in a cleaner format but keep all the substantive content exactly as supported by the sources. +- Include ALL sources and citations found during research. +- If different sources conflict or disagree, you MUST preserve all sides of the conflict and clearly show that they are different statements. Do NOT resolve the conflict with your own conclusion. + +Project-specific constraints: +- In this project, relational findings are critical. You must preserve all linkages between politicians, policies, industries, and companies (e.g., "X → Y 정책 → Z 주 상승") exactly as they appear in the sources. +- For simple factual or time-sensitive questions, you must also preserve any sentences that directly contain the answer value itself (numbers, dates, names, counts, etc.), even if they do not mention any political or corporate entities. +- Maintain all causal or contextual statements that show influence, correlation, or impact (e.g., “정책 발표 이후 기업 실적 개선”), keeping the original level of certainty (e.g., 전망, 가능성, 기대 vs. 확정적 표현). +- Never drop sentences that could represent a node or edge in the relationship graph, or that could directly answer the factual question. +- This project is NOT about predicting which companies or stocks will go up or down; you MUST NOT add any forward-looking predictions that are not already explicitly written in the sources. + +The cleaned findings will be used for final report generation and knowledge graph construction, so comprehensiveness and relational fidelity are critical. +Your goal is to: +- Remove obvious duplication and noise, +- While preserving every substantive statement, relationship, and factual detail that appears in the research messages, without adding anything new. +""" + +generate_influence_report_prompt = """ +You are a research synthesis assistant. + +You receive: +- : high-level description of the task +- : cleaned factual findings that ALREADY contain all allowed facts, names, relations, and URLs + +Your ONLY job is to convert these into a single JSON object that matches the schema below. +Do NOT do any new reasoning or guessing. Treat as the only source of truth. + +--- + + +{research_brief} + + + +{findings} + + +Today's date: {date} + +--- + +REQUIRED JSON SCHEMA (output MUST match exactly): + +{{ + "report_title": "string", + "time_range": "string", + "question_answer": "string", + "influence_chains": [ + {{ + "politician": "string", + "policy": "string", + "industry_or_sector": "string", + "companies": ["string"], + "impact_description": "string", + "evidence": [ + {{ + "source_title": "string", + "url": "string" + }}, + {{ + "source_title": "string", + "url": "string" + }}, + ] + }} + ], + "notes": "string" +}} + +--- + +HARD RULES (MOST IMPORTANT) + +1) NO NEW CONTENT +- Do NOT invent or add any new: + - people, politicians, parties + - policies, laws + - industries, sectors + - companies, tickers, organizations + - numbers, dates, locations +- Use ONLY names and strings that already appear in . + If something is not in , you MUST NOT mention it. + +2) NO NEW RELATIONSHIPS +- Every influence_chains item must describe a relationship that is already + explicitly described in . +- If does NOT clearly connect: + politician + policy + industry/sector + specific companies + then DO NOT create a chain for it. +- When in doubt, set: + "influence_chains": [] + +3) EVIDENCE +- For each chain, use ONLY URLs and titles that appear in . +- Do NOT make up new URLs or titles. +- If you are not sure which sources support a chain, then either: + - omit that chain, OR + - leave "influence_chains": [] +- For each item in "influence_chains", the "evidence" array must include all relevant URLs from that support that chain, as much as possible. +- If a single chain is supported by multiple sources, add one evidence object per source to the evidence array. +- When multiple sources support the same chain, do not just pick a single “representative” URL. + Instead, include all verifiably related (URL, source_title) pairs in the evidence array. +- If contains a "Sources" section or an explicit list of URLs, + include in evidence all sources that are directly related to that chain. +- You may omit sources whose relevance is unclear, but you must not omit any source that is clearly described as supporting that chain. + +4) QUESTION_ANSWER +- "question_answer" must be in Korean. +- It must be a short, direct answer to the user's question, + based ONLY on . +- If are not enough to answer clearly, write in Korean: + "제공된 자료만으로는 질문에 대한 정확한 답을 확인하기 어렵다." + +5) STYLE / LANGUAGE +- All free-text fields ("report_title", "time_range", "question_answer", + "policy", "industry_or_sector", "impact_description", "notes") + must be written in natural Korean. +- Keep proper nouns (people, companies, products, tickers) exactly as they + appear in (do NOT translate or modify their spelling). + +6) SAFETY DEFAULT +- If you are NOT 100% sure that a chain is fully supported by , + do NOT output that chain. + It is always acceptable to output: + "influence_chains": [] + +--- + +OUTPUT REQUIREMENT + +Return ONLY the JSON object. +No markdown, no comments, no extra text before or after the JSON. +If a field is unknown, use an empty string "" or empty list []. +""" + + + + +naver_queryset_prompt = """ +[오늘 날짜] {today} + +너는 네이버 검색창과 '함께 많이 찾는 검색어'를 설계하는 **검색 키워드 전문가**야. +사용자의 질문을 보고, 네이버에 바로 넣을 수 있는 짧은 한국어 검색어 여러 개를 만들어야 한다. + +아래 규칙을 모두 지켜라. + +[입력으로 들어오는 것] +- 사용자의 원래 한국어 질문이 한 문장으로 들어온다. +- 너는 이 질문을 분석해서 intent_type, main_entity, queries를 만들어야 한다. + +[1] intent_type 분류 규칙 +질문을 보고 다음 카테고리 중 하나로 intent_type을 정해라. + +- "manga" : 만화/라이트노벨/단행본 권수, 최신권, 발매일 등에 대한 질문 +- "person" : 사람의 나이, 프로필, 데뷔일, 소속, 수상 경력 등에 대한 질문 +- "cafe" : 네이버 카페 회원 수, 규모, 가입자 수, 활동 등과 관련된 질문 +- "weather" : 특정 날짜/지역의 강수량, 기온, 날씨 통계 등에 대한 질문 +- "event" : 회의/대회/행사 횟수, 회차, 개최일, 일정 등에 대한 질문 +- "generic" : 위 어디에도 딱 맞지 않는 일반 정보 검색 질문 + +intent_type는 반드시 위 6개 중 하나만 사용해라. + +[2] main_entity 작성 규칙 +- main_entity에는 질문의 핵심 대상을 짧게 적어라. +- 예시: + - 질문: "만화 <원피스>는 한국에 몇 권까지 발간됐어?" + -> main_entity: "원피스" + - 질문: "배드민턴 선수 안세영의 현재 나이는?" + -> main_entity: "안세영" + - 질문: "네이버 카페 '고양이라서 다행이야'의 가입자 수는?" + -> main_entity: "고양이라서 다행이야" + - 질문: "어제 울릉도/독도의 강수량은 얼마였나요?" + -> main_entity: "울릉도 독도" + +[3] queries 생성 규칙 (가장 중요) +queries에는 네이버에 실제로 많이 쳐볼 법한 검색어를 3~6개 만들어라. + +공통 규칙: +- 각 검색어는 **2~5개 토큰(단어)**로 구성해라. +- 질문 문장을 그대로 쓰지 말고, **키워드 나열 형태**로만 작성해라. +- 종결어미(예: "~인가요", "~알려줘", "~몇 권이에요")는 절대 쓰지 마라. +- 조사는 가능하면 제거하되, 의미가 모호해지면 최소한으로만 사용해라. +- 불필요한 형용사/부사(예: "정확한", "자세한", "좋은")는 넣지 마라. + +타입별 가이드: + +1) intent_type == "manga" + - 핵심 키워드: "최신권", "전권", "몇권", "권수", "발매일", "단행본", "만화책" + - 예시: + - 질문: "만화 <원피스>는 한국에 몇 권까지 발간됐어?" + -> queries 예시: + ["원피스 한국 발매 권수", "원피스 최신권 한국", "원피스 단행본 몇권", "원피스 만화책 전권"] + +2) intent_type == "person" + - 핵심 키워드: "나이", "프로필", "출생년도", "생년월일", "선수 정보", "학력" + - 예시: + - 질문: "배드민턴 선수 안세영의 현재 나이는?" + -> queries 예시: + ["안세영 나이", "안세영 프로필", "안세영 출생년도", "안세영 선수 정보"] + +3) intent_type == "cafe" + - 핵심 키워드: "네이버 카페", "회원수", "가입자수", "카페 규모", "카페 인원" + - 예시: + - 질문: "네이버 카페 '고양이라서 다행이야'의 가입자 수는?" + -> queries 예시: + ["고양이라서 다행이야 회원수", "고양이라서 다행이야 카페 가입자수", + "고양이라서 다행이야 네이버 카페", "고양이라서 다행이야 카페 규모"] + +4) intent_type == "weather" + - 핵심 키워드: "{today} 기준 날짜 또는 연도", "강수량", "기상청", "날씨", "기온" + - 질문에 '어제', '오늘', '현재', '최근', '올해' 같은 표현이 있으면 + 가능한 한 **구체적인 연도/날짜 표현**을 붙여라. + - 예시: + - 오늘 날짜가 {today}라고 할 때, + - 질문: "어제 울릉도/독도의 강수량은 얼마였나요?" + -> queries 예시: + ["울릉도 {today} 강수량 기상청", "독도 {today} 강수량 기상청", + "울릉도 독도 강수량 기상청"] + +5) intent_type == "event" + - 핵심 키워드: "회차", "개최일", "행사 일정", "대회 일정", "역대 개최" + - 질문 내용에 맞게 대회/행사 이름 + 속성어를 조합해라. + +6) intent_type == "generic" + - 위에 해당하지 않는 일반 정보 검색. + - 핵심 개념 1~2개 + 속성어 1~2개 정도로 짧게 묶어라. + - 예: "부산 인구 2025년", "한미 금리차 추이", "코스피 시가총액 상위 기업" + +[4] 피해야 할 것들 (절대 금지) +- 질문 그대로를 queries에 넣는 것 +- 영어만 있는 검색어 (특별한 이유 없으면 한국어 위주) +- "정보", "정리", "알려줘", "궁금" 같은 메타 표현 +- 출판사/서점/쇼핑몰/포털/언론사 이름을 쿼리에 억지로 넣는 것 + (예: "교보문고", "예스24", "알라딘", "쿠팡", "네이버", "다음", + "조선일보", "연합뉴스" 등을 쿼리에 넣지 마라) + +[5] 출력 형식 (중요) +너의 출력은 반드시 **KRQuerySet Pydantic 모델**에 맞는 JSON 객체 형식이어야 한다. + +- intent_type: 위에서 정의한 6개 문자열 중 하나 +- main_entity: 핵심 대상을 나타내는 짧은 문자열 +- queries: 3~6개의 짧은 검색어 문자열 리스트 + +아래는 출력 예시 형식이다 (예시는 설명용일 뿐, 그대로 복사하지 마라): + +{{ + "intent_type": "manga", + "main_entity": "원피스", + "queries": [ + "원피스 한국 발매 권수", + "원피스 최신권 한국", + "원피스 단행본 몇권", + "원피스 만화책 전권" + ] +}} + +[사용자 질문] +{question} +""" + + +lite_final_report_prompt = """ +You are a research synthesis assistant for a lightweight QA pipeline. + +Your goal is to take: +- the user's original question, and +- a single-sentence factual answer that was generated from grounded web search, + +and produce a JSON object that conforms exactly to the InfluenceReport schema below. + +InfluenceReport JSON schema: +{{ + "report_title": "string", + "time_range": "string", + "question_answer": "string", + "influence_chains": [ + {{ + "politician": "string", + "policy": "string", + "industry_or_sector": "string", + "companies": ["string", "string"], + "impact_description": "string", + "evidence": [ + {{ + "source_title": "string", + "url": "string" + }} + ] + }} + ], + "notes": "Optional additional insights, caveats, or limitations." +}} + +Important rules: +1. You MUST output a single valid JSON object only. No markdown, no comments, + no text outside the JSON. + +2. "question_answer": + - MUST contain a direct, factual answer to the user's original question, + in the same language as the question. + - For this project, you should assume the user typically asks in Korean, + so "question_answer" SHOULD be written in fluent Korean. + +3. For LIGHT, general questions (simple factual or recency QA that is NOT + primarily about politics/policies/industries/companies/stocks): + - Focus on writing a clear "question_answer". + - It is perfectly OK to set "influence_chains" to an empty list []. + - In this case, use a simple "report_title" such as "단일 질의 응답 리포트". + - "time_range" can be a short string like "N/A" or the current year. + +4. For questions that clearly ask about political, policy, industry, company, + or stock impacts: + - If you can confidently identify an influence relationship, you MAY + populate "influence_chains" with 1–3 well-supported entries. + - If you cannot extract a reliable chain from the answer, leave + "influence_chains" as [] and rely on "question_answer" instead. + +5. Language constraints: + - All free-text fields ("report_title", "question_answer", "policy", + "industry_or_sector", "impact_description", "notes") should be written + in natural Korean. + - However, you MUST preserve proper names (people, companies, products, + tickers) in their original language if they are English in the sources. + For example: "Samsung Electronics", "LG Energy Solution", "Apple", + "Hyundai Motor Group". + - It is preferred to embed English proper nouns inside Korean sentences. + +6. If you cannot fill a particular field, use an empty string "" or an empty + array [] as appropriate. + +Return ONLY the JSON object and nothing else. + +[User Question] +{question} + +[Final Answer] +{answer} +""" + +route_prompt = """ +You are a router that decides which agent to use for a given question. + +[Question] +{question} + +You must choose exactly ONE of the following routes: + +1. "lite" + - Simple factual or recency questions. + - The intent is clear and a short, direct answer is enough. + - Examples: + - "What is Kylian Mbappé's current age?" + - "Who is the current mayor of Seoul?" + - "What is today's fine dust level in Seoul?" + - "What is President Trump's favorite food?" + - "What food did President Trump eat on his recent visit to Korea?" + +2. "deep" + - Questions that require analyzing relationships between politics, policies, + industries, companies, or stocks (especially Korean political theme stocks). + - Involves multiple entities and "what impact does this have on that?" style reasoning. + - Examples: + - "How did the current government's real estate policy affect construction and bank stocks?" + - "How did a politician's recent remark influence related theme stocks?" + - "Explain the chain of influence from a specific policy to sectors and listed companies." + +SPECIAL RULE: +- If the question is extremely short and mainly consists of only: + - a politician's name, + - a political party name, + - a policy or law name, + - or an election name, + and the user's intent is unclear (e.g. "X", "Y의 P 정책", "T 법안"), + then you MUST choose "deep". +- If the question clearly asks a simple, specific fact (age, favorite food, a single date, a recent visit detail, etc.), + you should choose "lite" even if it mentions a politician. + +Output requirements: +- Decide strictly between "lite" and "deep". +- If the question is mainly about political/industrial/stock impact analysis, + or if it is an extremely short ambiguous query that only names a politician/policy/law, + choose "deep". Otherwise, choose "lite". +- Return a JSON object that matches the RouteDecision schema: + - route: "lite" or "deep" + - reason: short explanation in English why you chose that route. +""" diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/src/deep_research/research_agent.py b/usecase/solar-political-influence-analyzer/src/ai-engine/src/deep_research/research_agent.py new file mode 100644 index 0000000..321986a --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/src/deep_research/research_agent.py @@ -0,0 +1,128 @@ +import os +from pydantic import BaseModel, Field +from typing_extensions import Literal + +from langchain_upstage import ChatUpstage +from langgraph.graph import StateGraph, START, END +from langchain_core.messages import SystemMessage, HumanMessage, ToolMessage, filter_messages + +from dotenv import load_dotenv +load_dotenv() + +from deep_research.state_research import ResearcherState, ResearcherOutputState +from deep_research.utils import tavily_search, get_today_str, think_tool, naver_search, google_search_grounded +from deep_research.prompts import research_agent_prompt, compress_research_system_prompt, compress_research_human_message + + +tools = [google_search_grounded, naver_search, tavily_search, think_tool] +tools_by_name = {tool.name: tool for tool in tools} + + +model = ChatUpstage(api_key=os.getenv("UPSTAGE_API_KEY"), model="solar-pro2", temperature=0) +model_with_tools = model.bind_tools(tools) +compress_model = model + + +def llm_call(state: ResearcherState): + """Analyze current state and decide on next actions. + + The model analyzes the current conversation state and decides whether to: + 1. Call search tools to gather more information + 2. Provide a final answer based on gathered information + + Returns updated state with the model's response. + """ + return { + "researcher_messages": [ + model_with_tools.invoke( + [SystemMessage(content=research_agent_prompt)] + state["researcher_messages"] + ) + ] + } + +def tool_node(state: ResearcherState): + """Execute all tool calls from the previous LLM response. + + Executes all tool calls from the previous LLM responses. + Returns updated state with tool execution results. + """ + tool_calls = state["researcher_messages"][-1].tool_calls + + observations = [] + for tool_call in tool_calls: + tool = tools_by_name[tool_call["name"]] + observations.append(tool.invoke(tool_call["args"])) + + tool_outputs = [ + ToolMessage( + content=observation, + name=tool_call["name"], + tool_call_id=tool_call["id"] + ) for observation, tool_call in zip(observations, tool_calls) + ] + + return {"researcher_messages": tool_outputs} + +def compress_research(state: ResearcherState) -> dict: + """Compress research findings into a concise summary. + + Takes all the research messages and tool outputs and creates + a compressed summary suitable for the supervisor's decision-making. + """ + + system_message = compress_research_system_prompt.format(date=get_today_str()) + messages = [SystemMessage(content=system_message)] + state.get("researcher_messages", []) + [HumanMessage(content=compress_research_human_message)] + response = compress_model.invoke(messages) + + raw_notes = [ + str(m.content) for m in filter_messages( + state["researcher_messages"], + include_types=["tool", "ai"] + ) + ] + + return { + "compressed_research": str(response.content), + "raw_notes": ["\n".join(raw_notes)] + } + + +def should_continue(state: ResearcherState) -> Literal["tool_node", "compress_research"]: + """Determine whether to continue research or provide final answer. + + Determines whether the agent should continue the research loop or provide + a final answer based on whether the LLM made tool calls. + + Returns: + "tool_node": Continue to tool execution + "compress_research": Stop and compress research + """ + messages = state["researcher_messages"] + last_message = messages[-1] + + if last_message.tool_calls: + return "tool_node" + + return "compress_research" + + +agent_builder = StateGraph(ResearcherState, output_schema=ResearcherOutputState) + + +agent_builder.add_node("llm_call", llm_call) +agent_builder.add_node("tool_node", tool_node) +agent_builder.add_node("compress_research", compress_research) + +agent_builder.add_edge(START, "llm_call") +agent_builder.add_conditional_edges( + "llm_call", + should_continue, + { + "tool_node": "tool_node", + "compress_research": "compress_research", + }, +) +agent_builder.add_edge("tool_node", "llm_call") +agent_builder.add_edge("compress_research", END) + +researcher_agent = agent_builder.compile() diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/src/deep_research/research_agent_full.py b/usecase/solar-political-influence-analyzer/src/ai-engine/src/deep_research/research_agent_full.py new file mode 100644 index 0000000..a1e212f --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/src/deep_research/research_agent_full.py @@ -0,0 +1,79 @@ +import os +from langchain_core.messages import HumanMessage +from langgraph.graph import StateGraph, START, END + +from langchain_upstage import ChatUpstage + +from dotenv import load_dotenv +load_dotenv() + +from deep_research.utils import get_today_str +from deep_research.prompts import generate_influence_report_prompt +from deep_research.state_scope import AgentState, AgentInputState +from deep_research.research_agent_scope import research_brief_planner +from deep_research.multi_agent_supervisor import supervisor_agent + +from pydantic import BaseModel +from typing import List, Optional + +class Evidence(BaseModel): + source_title: str + url: str + +class InfluenceChain(BaseModel): + politician: str + policy: str + industry_or_sector: str + companies: List[str] + impact_description: str + evidence: List[Evidence] + +class InfluenceReport(BaseModel): + report_title: str + time_range: str + question_answer: str + influence_chains: List[InfluenceChain] + notes: Optional[str] = "" + + +writer_model = ChatUpstage(api_key=os.getenv("UPSTAGE_API_KEY"), model="solar-pro2", temperature=0).with_structured_output(InfluenceReport) + + + +async def generate_influence_report(state: AgentState): + """ + Final report generation node. + + Synthesizes all research findings into a comprehensive final report + """ + + notes = state.get("notes", []) + + findings = "\n".join(notes) + + final_report_prompt = generate_influence_report_prompt.format( + research_brief=state.get("research_brief", ""), + findings=findings, + date=get_today_str() + ) + + final_report = await writer_model.ainvoke([HumanMessage(content=final_report_prompt)]) + + data = final_report.model_dump() + + return { + "final_report": data, + } + +deep_researcher_builder = StateGraph(AgentState, input_schema=AgentInputState) + +deep_researcher_builder.add_node("research_brief_planner", research_brief_planner) +deep_researcher_builder.add_node("supervisor_subgraph", supervisor_agent) +deep_researcher_builder.add_node("generate_influence_report", generate_influence_report) + +deep_researcher_builder.add_edge(START, "research_brief_planner") +deep_researcher_builder.add_edge("research_brief_planner", "supervisor_subgraph") +deep_researcher_builder.add_edge("supervisor_subgraph", "generate_influence_report") +deep_researcher_builder.add_edge("generate_influence_report", END) + +agent = deep_researcher_builder.compile() diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/src/deep_research/research_agent_scope.py b/usecase/solar-political-influence-analyzer/src/ai-engine/src/deep_research/research_agent_scope.py new file mode 100644 index 0000000..3e19d7a --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/src/deep_research/research_agent_scope.py @@ -0,0 +1,42 @@ +import os +from datetime import datetime +from dotenv import load_dotenv + +from langchain_upstage import ChatUpstage +from langchain_core.messages import HumanMessage, get_buffer_string + +from deep_research.prompts import transform_messages_into_research_topic_prompt +from deep_research.state_scope import AgentState, ResearchQuestion + + +def get_today_str() -> str: + """Get current date in a human-readable format.""" + return datetime.now().strftime("%a %b %-d, %Y") + + +load_dotenv() + +model = ChatUpstage(api_key=os.getenv("UPSTAGE_API_KEY"), model="solar-pro2", temperature=0) + + +def research_brief_planner(state: AgentState): + """ + Transform the conversation history into a comprehensive research brief. + + Uses structured output to ensure the brief follows the required format + and contains all necessary details for effective research. + """ + + structured_output_model = model.with_structured_output(ResearchQuestion) + + response = structured_output_model.invoke([ + HumanMessage(content=transform_messages_into_research_topic_prompt.format( + messages=get_buffer_string(state.get("messages", [])), + date=get_today_str() + )) + ]) + + return { + "research_brief": response.research_brief, + "supervisor_messages": [HumanMessage(content=f"{response.research_brief}.")] + } diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/src/deep_research/router.py b/usecase/solar-political-influence-analyzer/src/ai-engine/src/deep_research/router.py new file mode 100644 index 0000000..02b7bbd --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/src/deep_research/router.py @@ -0,0 +1,150 @@ +# deep_research/router_agent.py (중요 부분만 수정 버전) + +import json +import os +import uuid +from typing import Literal, Optional, Sequence + +from dotenv import load_dotenv +from langchain_core.messages import BaseMessage, HumanMessage +from langchain_core.runnables import Runnable +from langchain_upstage import ChatUpstage +from langgraph.checkpoint.memory import InMemorySaver +from langgraph.graph import END, START, StateGraph + +from pydantic import BaseModel + +from deep_research.state_scope import AgentState, AgentInputState +from deep_research.lite_researcher import LiteResearchState, lite_graph +from deep_research.research_agent_full import ( + agent as deep_agent, + InfluenceReport, + writer_model, +) +from deep_research.utils import get_today_str +from deep_research.prompts import generate_influence_report_prompt, route_prompt + +load_dotenv() + +UPSTAGE_API_KEY = os.getenv("UPSTAGE_API_KEY") + +router_llm = ChatUpstage( + api_key=UPSTAGE_API_KEY, + model="solar-pro2", + temperature=0, +) + + +class RouteDecision(BaseModel): + route: Literal["lite", "deep"] + reason: str + + +def _extract_latest_user_question(messages: Sequence[BaseMessage]) -> str: + """ + Helper to extract the latest user/human message content from AgentState.messages. + """ + for msg in reversed(messages): + if isinstance(msg, HumanMessage): + return str(msg.content) + if messages: + return str(messages[-1].content) + return "" + + +def route_node(state: AgentState) -> dict: + messages = state["messages"] + question = _extract_latest_user_question(messages) + + structured_router = router_llm.with_structured_output(RouteDecision) + decision: RouteDecision = structured_router.invoke( + [ + HumanMessage( + content=route_prompt.format( + question=question, + ) + ) + ] + ) + + print(f"[ROUTER] route={decision.route}, reason={decision.reason}") + return {"route": decision.route} + + +def lite_branch_node(state: AgentState) -> dict: + """ + For 'lite' questions: + + 1) Run the lite_graph to obtain: + - raw_research: google_search_grounded output + - findings: compressed research text (all info preserved) + + 2) Feed (research_brief = question, findings = compressed text) into the + existing generate_influence_report_prompt + writer_model to produce + a full InfluenceReport JSON. + + This way we avoid information loss while keeping the pipeline lightweight. + """ + messages = state["messages"] + question = _extract_latest_user_question(messages) + + lite_state: LiteResearchState = lite_graph.invoke({"question": question}) + findings = lite_state["findings"] + + final_prompt = generate_influence_report_prompt.format( + research_brief=question, + findings=findings, + date=get_today_str(), + ) + + report_obj: InfluenceReport = writer_model.invoke( + [HumanMessage(content=final_prompt)] + ) + report_data = report_obj.model_dump() + + return { + "final_report": report_data, + } + + +async def deep_branch_node(state: AgentState) -> dict: + messages = state["messages"] + deep_state: AgentState = await deep_agent.ainvoke({"messages": messages}) + + final_report = deep_state.get("final_report") + return { + "final_report": final_report, + } + + +router_builder = StateGraph(AgentState, input_schema=AgentInputState) + +router_builder.add_node("route", route_node) +router_builder.add_node("lite_branch", lite_branch_node) +router_builder.add_node("deep_branch", deep_branch_node) + +router_builder.add_edge(START, "route") + + +def route_selector(state: AgentState) -> str: + route = state.get("route") + if route == "deep": + return "deep_branch" + # Default to lite if anything is missing/invalid + return "lite_branch" + + +router_builder.add_conditional_edges( + "route", + route_selector, + { + "lite_branch": "lite_branch", + "deep_branch": "deep_branch", + }, +) + +router_builder.add_edge("lite_branch", END) +router_builder.add_edge("deep_branch", END) + +checkpointer = InMemorySaver() +full_agent: Runnable = router_builder.compile(checkpointer=checkpointer) diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/src/deep_research/state_multi_agent_supervisor.py b/usecase/solar-political-influence-analyzer/src/ai-engine/src/deep_research/state_multi_agent_supervisor.py new file mode 100644 index 0000000..bff04b1 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/src/deep_research/state_multi_agent_supervisor.py @@ -0,0 +1,33 @@ +import operator +from typing_extensions import Annotated, TypedDict, Sequence + +from langchain_core.messages import BaseMessage +from langchain_core.tools import tool +from langgraph.graph.message import add_messages +from pydantic import BaseModel, Field + +class SupervisorState(TypedDict): + """ + State for the multi-agent research supervisor. + + Manages coordination between supervisor and research agents, tracking + research progress and accumulating findings from multiple sub-agents. + """ + + supervisor_messages: Annotated[Sequence[BaseMessage], add_messages] + research_brief: str + notes: Annotated[list[str], operator.add] = [] + research_iterations: int = 0 + raw_notes: Annotated[list[str], operator.add] = [] + +@tool +class ConductResearch(BaseModel): + """Tool for delegating a research task to a specialized sub-agent.""" + research_topic: str = Field( + description="The topic to research. Should be a single topic, and should be described in high detail (at least a paragraph).", + ) + +@tool +class ResearchComplete(BaseModel): + """Tool for indicating that the research process is complete.""" + pass diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/src/deep_research/state_research.py b/usecase/solar-political-influence-analyzer/src/ai-engine/src/deep_research/state_research.py new file mode 100644 index 0000000..ef2f75d --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/src/deep_research/state_research.py @@ -0,0 +1,43 @@ +import operator +from typing_extensions import TypedDict, Annotated, List, Sequence +from pydantic import BaseModel, Field +from langchain_core.messages import BaseMessage +from langgraph.graph.message import add_messages + + +class ResearcherState(TypedDict): + """ + State for the research agent containing message history and research metadata. + + This state tracks the researcher's conversation, iteration count for limiting + tool calls, the research topic being investigated, compressed findings, + and raw research notes for detailed analysis. + """ + researcher_messages: Annotated[Sequence[BaseMessage], add_messages] + tool_call_iterations: int + research_topic: str + compressed_research: str + raw_notes: Annotated[List[str], operator.add] + +class ResearcherOutputState(TypedDict): + """ + Output state for the research agent containing final research results. + + This represents the final output of the research process with compressed + research findings and all raw notes from the research process. + """ + compressed_research: str + raw_notes: Annotated[List[str], operator.add] + researcher_messages: Annotated[Sequence[BaseMessage], add_messages] + + +class ResearchQuestion(BaseModel): + """Schema for research brief generation.""" + research_brief: str = Field( + description="A research question that will be used to guide the research.", + ) + +class Summary(BaseModel): + """Schema for webpage content summarization.""" + summary: str = Field(description="Concise summary of the webpage content") + key_excerpts: str = Field(description="Important quotes and excerpts from the content") diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/src/deep_research/state_scope.py b/usecase/solar-political-influence-analyzer/src/ai-engine/src/deep_research/state_scope.py new file mode 100644 index 0000000..4e5c5de --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/src/deep_research/state_scope.py @@ -0,0 +1,36 @@ +import operator +from typing_extensions import Optional, Annotated, List, Sequence, Literal + +from langchain_core.messages import BaseMessage +from langgraph.graph import MessagesState +from langgraph.graph.message import add_messages +from pydantic import BaseModel, Field + + +class AgentInputState(MessagesState): + """Input state for the full agent - only contains messages from user input.""" + pass + +class AgentState(MessagesState): + """ + Main state for the full multi-agent research system. + + Extends MessagesState with additional fields for research coordination. + Note: Some fields are duplicated across different state classes for proper + state management between subgraphs and the main workflow. + """ + + research_brief: Optional[str] + supervisor_messages: Annotated[Sequence[BaseMessage], add_messages] + raw_notes: Annotated[list[str], operator.add] = [] + notes: Annotated[list[str], operator.add] = [] + final_report: str + route: Optional[Literal["lite", "deep"]] = None + + +class ResearchQuestion(BaseModel): + """Schema for structured research brief generation.""" + + research_brief: str = Field( + description="A research question that will be used to guide the research.", + ) diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/src/deep_research/utils.py b/usecase/solar-political-influence-analyzer/src/ai-engine/src/deep_research/utils.py new file mode 100644 index 0000000..07d041a --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/src/deep_research/utils.py @@ -0,0 +1,633 @@ +import os +import re +import traceback +from datetime import datetime +from typing import Annotated, Dict, List, Literal, Optional, TypedDict, Tuple, Any + +import requests +from bs4 import BeautifulSoup +from dotenv import load_dotenv +from google import genai +from google.genai import types +from langchain_core.messages import HumanMessage +from langchain_core.tools import InjectedToolArg, tool +from langchain_upstage import ChatUpstage +from playwright.sync_api import sync_playwright +from pydantic import BaseModel +from tavily import TavilyClient + +from deep_research.state_research import Summary +from deep_research.prompts import ( + summarize_webpage_prompt, + naver_queryset_prompt, +) + +load_dotenv() + +GOOGLE_API_KEY = os.getenv("GOOGLE_API_KEY") +NAVER_CLIENT_ID = os.getenv("NAVER_CLIENT_ID") +NAVER_CLIENT_SECRET = os.getenv("NAVER_CLIENT_SECRET") +UPSTAGE_API_KEY = os.getenv("UPSTAGE_API_KEY") + +google_client: Optional[genai.Client] = None +if GOOGLE_API_KEY: + google_client = genai.Client(api_key=GOOGLE_API_KEY) + +summarization_model = ChatUpstage( + api_key=UPSTAGE_API_KEY, + model="solar-pro2", + temperature=0.0, +) + +structured_summary_model = summarization_model.with_structured_output(Summary) + +query_refiner_model = ChatUpstage( + api_key=UPSTAGE_API_KEY, + model="solar-pro2", + temperature=0.0, +) + +tavily_client = TavilyClient() + + +class SearchDoc(TypedDict): + title: str + content: str # raw text or summarized text + + +SearchResultMap = Dict[str, SearchDoc] + + +def get_today_str() -> str: + """Return current date as a human-readable string.""" + return datetime.now().strftime("%a %b %-d, %Y") + + +def summarize_text_block(text: str, max_chars: int = 15000) -> str: + """ + Summarize a single long text block using the global summarization model. + + Returns formatted summary with and tags. + """ + truncated = text[:max_chars] + try: + summary_obj = structured_summary_model.invoke( + [ + HumanMessage( + content=summarize_webpage_prompt.format( + webpage_content=truncated, + date=get_today_str(), + ) + ) + ] + ) + return ( + f"\n{summary_obj.summary}\n\n\n" + f"\n{summary_obj.key_excerpts}\n" + ) + except Exception as e: # noqa: BLE001 + print(f"[Summarization error] {e}") + return text[:2000] + "..." + + +def summarize_results_map(raw_results: SearchResultMap) -> SearchResultMap: + """ + Take a url -> {title, content(raw)} map and return a new map + where 'content' is replaced with a structured summary. + """ + summarized: SearchResultMap = {} + for url, doc in raw_results.items(): + summarized[url] = { + "title": doc["title"], + "content": summarize_text_block(doc["content"]), + } + return summarized + + +def format_search_results( + summarized_results: SearchResultMap, + header: Optional[str] = None, +) -> str: + """ + Format summarized search results into a unified, human-readable string. + + This is shared by both Tavily and Naver search tools. + """ + if not summarized_results: + return ( + "No valid search results found. " + "Please try different search queries or use a different search API." + ) + + lines: List[str] = [] + if header: + lines.append(header.rstrip()) + lines.append("") + + lines.append("Search results:") + + for i, (url, result) in enumerate(summarized_results.items(), start=1): + lines.append(f"\n\n--- SOURCE {i}: {result['title']} ---") + lines.append(f"URL: {url}\n") + lines.append("SUMMARY:") + lines.append(result["content"]) + lines.append("\n" + "-" * 80) + + return "\n".join(lines) + + +def tavily_backend( + query: str, + max_results: int = 1, + topic: Literal["general", "news", "finance"] = "general", +) -> SearchResultMap: + """ + Call Tavily API and return url -> {title, content(raw)} map. + """ + api_result = tavily_client.search( + query, + max_results=max_results, + include_raw_content=True, + topic=topic, + ) + + raw_map: SearchResultMap = {} + for item in api_result.get("results", []): + url = item.get("url") + if not url or url in raw_map: + continue + + content = ( + item.get("raw_content") + or item.get("content") + or "" + ) + raw_map[url] = { + "title": item.get("title", ""), + "content": content, + } + + return raw_map + + +@tool(parse_docstring=True) +def tavily_search( + query: str, + max_results: Annotated[int, InjectedToolArg] = 1, + topic: Annotated[Literal["general", "news", "finance"], InjectedToolArg] = "general", +) -> str: + """ + Fetch results from Tavily search API, summarize each document, + and return a formatted string of all results. + + Args: + query: A single search query to execute. + max_results: Maximum number of results to return. + topic: Topic to filter results by ('general', 'news', 'finance'). + + Returns: + A formatted string of search results with summaries. + """ + raw = tavily_backend(query=query, max_results=max_results, topic=topic) + summarized = summarize_results_map(raw) + return format_search_results(summarized) + + +@tool(parse_docstring=True) +def think_tool(reflection: str) -> str: + """ + Tool for strategic reflection on research progress and decision-making. + + Use this tool after each search to analyze results and plan next steps. + This creates a deliberate pause in the research workflow for + higher-quality decision-making. + + Args: + reflection: Detailed reflection on research progress, findings, + gaps, and next steps. + + Returns: + A short confirmation string. + """ + return f"Reflection recorded: {reflection}" + + + +def fetch_clean_content(url: str) -> str: + """ + Fetch and extract the main body text from a URL using Playwright + BeautifulSoup. + + - Handles Naver news, blog, cafe, and general web pages. + - If the page is too short or blocked by login, returns a short message instead. + """ + try: + with sync_playwright() as p: + browser = p.chromium.launch(headless=True) + context = browser.new_context( + user_agent=( + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) " + "AppleWebKit/537.36 (KHTML, like Gecko) " + "Chrome/120.0.0.0 Safari/537.36" + ) + ) + page = context.new_page() + + try: + page.goto(url, timeout=5000, wait_until="domcontentloaded") + except Exception: + pass + + try: + page.wait_for_load_state("networkidle", timeout=2000) + except Exception: + pass + + target_frame = page + if "blog.naver.com" in url: + frame = page.frame(name="mainFrame") + if frame: + target_frame = frame + + html = target_frame.content() + final_url = target_frame.url + browser.close() + + soup = BeautifulSoup(html, "html.parser") + + # Remove non-content elements + for tag in soup( + ["script", "style", "header", "footer", "nav", "aside", "form", "iframe"] + ): + tag.decompose() + + # Heuristic main-content selectors + if "blog.naver.com" in url: + main_content = ( + soup.select_one(".se-main-container") + or soup.select_one("#postViewArea") + ) + elif "n.news.naver.com" in url: + main_content = ( + soup.select_one("#dic_area") + or soup.select_one("#articleBodyContents") + ) + elif "cafe.naver.com" in url: + main_content = soup.select_one(".gate_box") + else: + main_content = soup.body + + target_soup = main_content if main_content else soup + clean_text = target_soup.get_text(separator=" ", strip=True) + clean_text = re.sub(r"\s+", " ", clean_text) + + if "로그인" in clean_text and "해주세요" in clean_text: + return "🔒 [접근 제한] 로그인 필요한 페이지입니다." + + return clean_text[:4000], final_url + + except Exception as e: + return f"❌ 스크래핑 오류: {e}" + + +def deep_search_naver_internal( + refined_query: str, + needs_recency: bool, + max_results: int = 3, +) -> SearchResultMap: + """ + Search Naver OpenAPI (news/webkr/blog), scrape each page, + and return url -> {title, content(raw)} map. + """ + if not NAVER_CLIENT_ID or not NAVER_CLIENT_SECRET: + return {} + + sections = ["news", "webkr", "blog"] + headers = { + "X-Naver-Client-Id": NAVER_CLIENT_ID, + "X-Naver-Client-Secret": NAVER_CLIENT_SECRET, + } + sort_opt = "date" if needs_recency else "sim" + + results_by_url: SearchResultMap = {} + per_section = max(1, max_results // len(sections)) + + for section in sections: + api_url = f"https://openapi.naver.com/v1/search/{section}.json" + params = { + "query": refined_query, + "display": per_section, + "start": 1, + "sort": sort_opt, + } + + try: + resp = requests.get(api_url, headers=headers, params=params, timeout=5) + data = resp.json() + items = data.get("items", []) + + for item in items: + raw_title = item.get("title", "") + # Strip HTML tags in title + title = re.sub("<[^<]+?>", "", raw_title) + link = item.get("link", "") + + if not link or link in results_by_url: + continue + + full_text, _ = fetch_clean_content(link) + + # Fallback to API description if page is not accessible or too short + if len(full_text) < 50 or "로그인" in full_text: + desc = item.get("description", "") + full_text = f"(요약) {re.sub('<[^<]+?>', '', desc)}" + + results_by_url[link] = { + "title": title, + "content": full_text, + } + + if len(results_by_url) >= max_results: + break + + if len(results_by_url) >= max_results: + break + + except Exception as e: # noqa: BLE001 + print(f"[Naver API Error] section={section} err={e}") + continue + + return results_by_url + + + +class KRQuerySet(BaseModel): + """ + Structured representation of Naver-style queries inferred from a Korean question. + """ + intent_type: Literal["manga", "person", "cafe", "weather", "event", "generic"] + main_entity: str + queries: List[str] + + +def detect_recency_by_keyword(text: str) -> bool: + """ + Heuristic recency detector based on Korean temporal keywords. + Used in addition to LLM reasoning. + """ + recent_keywords = ["어제", "오늘", "최근", "현재", "올해", "지금", "실시간", "강수량"] + if any(k in text for k in recent_keywords): + return True + + # Roughly match years like 2000~2039. + if re.search(r"20[0-3][0-9]년", text): + return True + + return False + + +def generate_naver_style_queries(original_question: str) -> KRQuerySet: + """ + Convert a Korean natural-language question into multiple short Naver-style + search queries using an LLM. + + The prompt content is fully defined in `naver_queryset_prompt` and should + be written in Korean, with {today} and {question} placeholders. + """ + today = get_today_str() + prompt = naver_queryset_prompt.format( + today=today, + question=original_question, + ) + + structured = query_refiner_model.with_structured_output(KRQuerySet) + result: KRQuerySet = structured.invoke( + [HumanMessage(content=prompt)] + ) + return result + + + +def naver_backend( + question: str, + max_results: int = 3, +) -> SearchResultMap: + """ + High-level Naver backend: + - Use LLM to generate multiple Naver-style keyword queries. + - For each query, call Naver OpenAPI + scraping to get raw documents. + - Merge into a url -> {title, content(raw)} map. + """ + qset = generate_naver_style_queries(question) + + print(f"[NAVER] original: {question}") + print(f"[NAVER] intent : {qset.intent_type}, main_entity={qset.main_entity}") + print(f"[NAVER] queries : {qset.queries}") + + all_results: SearchResultMap = {} + per_query_limit = max(1, max_results // max(len(qset.queries), 1)) + + for sub_q in qset.queries: + raw_by_url = deep_search_naver_internal( + refined_query=sub_q, + needs_recency=detect_recency_by_keyword(sub_q), + max_results=per_query_limit, + ) + for url, doc in raw_by_url.items(): + if url not in all_results: + all_results[url] = { + "title": doc["title"], + "content": doc["content"], + } + + if len(all_results) >= max_results: + break + + return all_results + + +@tool(parse_docstring=True) +def naver_search( + question: str, + max_results: Annotated[int, "Maximum number of sources to use"] = 3, +) -> str: + """ + Korean-focused search tool that uses: + - Naver OpenAPI (news/webkr/blog) + Playwright scraping + - LLM-based query generation for Naver-style keywords + - The same summarization pipeline as Tavily search + + You should pass the user's original Korean question (natural language). + The tool internally converts it into multiple short keyword queries and + returns a formatted string compatible with Tavily search results. + + Args: + question: Original Korean question from the user. + max_results: Maximum number of unique URLs to process. + + Returns: + A formatted string that starts with "[NAVER_SEARCH]" and contains + the inferred intent, main entity, generated keyword queries, + and summarized content for each source. + """ + raw = naver_backend(question=question, max_results=max_results) + summarized = summarize_results_map(raw) + + header = ( + "[NAVER_SEARCH]\n" + f"question : {question}\n" + ) + return format_search_results(summarized, header=header) + + + +def google_grounded_backend( + query: str, + model: str = "gemini-2.5-flash", + max_results: int = 5, +) -> str: + """ + Run a Google Search Grounding, scrape the grounded URLs, + summarize each page with the same pipeline used for Tavily/Naver, and return + a unified, human-readable result string. + + Behavior: + - Uses Gemini only as a "search + URL selector" (no natural-language answer is used). + - For each grounded web URL, fetches the main content via Playwright + BeautifulSoup. + - Summarizes each page using the Upstage Solar (solar-pro2) summarization model + with the `summarize_webpage_prompt`. + - Formats all summaries using `format_search_results`, so the final output + matches the Tavily/Naver search results format: + + [GOOGLE_SEARCH] + query: ... + + Search results: + + --- SOURCE 1: --- + URL: <url> + SUMMARY: + <summary>...</summary> + <key_excerpts>...</key_excerpts> + + This makes `google_search_grounded` interchangeable with `tavily_search` + and `naver_search` from the perspective of downstream agents. + """ + if google_client is None: + return ( + "[GOOGLE_SEARCH]\n" + "Google Search grounding is not configured " + "(missing GOOGLE_API_KEY in environment).\n" + ) + + grounding_tool = types.Tool(google_search=types.GoogleSearch()) + config = types.GenerateContentConfig(tools=[grounding_tool]) + + try: + response = google_client.models.generate_content( + model=model, + contents=query, + config=config, + ) + except Exception as e: + return ( + "[GOOGLE_SEARCH]\n" + "ERROR: Failed to call Google Search grounding.\n" + f"Exception: {e}\n" + ) + + raw_results: SearchResultMap = {} + + try: + candidate = response.candidates[0] + meta = getattr(candidate, "grounding_metadata", None) + if meta and getattr(meta, "grounding_chunks", None): + chunks = meta.grounding_chunks + + seen_urls = set() + for ch in chunks: + if len(raw_results) >= max_results: + break + + web = getattr(ch, "web", None) + if not web: + continue + + uri = getattr(web, "uri", None) + title = getattr(web, "title", "") or "" + if not uri or uri in seen_urls: + continue + + seen_urls.add(uri) + + try: + clean_text, final_url = fetch_clean_content(uri) + except Exception: + clean_text = ( + "❌ [scraping_error] Failed to scrape this URL.\n" + + traceback.format_exc() + ) + final_url = uri + + raw_results[final_url] = { + "title": title, + "content": clean_text, + } + + except Exception as e: + return ( + "[GOOGLE_SEARCH]\n" + "ERROR: Failed to parse grounding metadata.\n" + f"Exception: {e}\n" + ) + + if not raw_results: + return ( + "[GOOGLE_SEARCH]\n" + "RESULTS:\n" + "No grounded web URLs were returned by Google Search.\n" + ) + + summarized = summarize_results_map(raw_results) + + header = ( + "[GOOGLE_SEARCH]\n" + f"query: {query}\n" + ) + return format_search_results(summarized, header=header) + + +@tool(parse_docstring=True) +def google_search_grounded( + question: str, +) -> str: + """ + Google Search Grounding based web search tool. + + This tool: + - Sends the user's natural-language question to the Google Search Grounding tool enabled. + - Lets LLM decide which web searches to run and which URLs are relevant. + - Scrapes each grounded URL with Playwright, summarizes the main content + using the Upstage Solar summarization model, and returns a formatted + list of summarized sources. + + The output format is aligned with Tavily and Naver search tools and looks like: + + [GOOGLE_SEARCH] + query: <original question> + + Search results: + + --- SOURCE 1: <title> --- + URL: <url> + SUMMARY: + <summary>...</summary> + <key_excerpts>...</key_excerpts> + + Args: + question: The user's natural-language question. + + Returns: + A formatted string that starts with "[GOOGLE_SEARCH]" and contains + summarized search results with titles, URLs, and structured summaries. + """ + return google_grounded_backend(question) diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/upstage_api_test.py b/usecase/solar-political-influence-analyzer/src/ai-engine/upstage_api_test.py new file mode 100644 index 0000000..64f8738 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/upstage_api_test.py @@ -0,0 +1,18 @@ +# pip install -qU langchain-core langchain-upstage + +from langchain_upstage import ChatUpstage +from langchain_core.messages import HumanMessage +import os +from dotenv import load_dotenv +load_dotenv() + +chat = ChatUpstage(api_key=os.getenv("UPSTAGE_API_KEY"), model="solar-pro2") + +messages = [ + HumanMessage( + content="Hi, how are you?" + ) +] + +response = chat.invoke(messages) +print(response) \ No newline at end of file diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/utils.py b/usecase/solar-political-influence-analyzer/src/ai-engine/utils.py new file mode 100644 index 0000000..562deb4 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/utils.py @@ -0,0 +1,81 @@ +from rich.console import Console +from rich.panel import Panel +from rich.text import Text +import json + +console = Console() + +def format_message_content(message): + """Convert message content to displayable string""" + parts = [] + tool_calls_processed = False + + # Handle main content + if isinstance(message.content, str): + parts.append(message.content) + elif isinstance(message.content, list): + # Handle complex content like tool calls (Anthropic format) + for item in message.content: + if item.get('type') == 'text': + parts.append(item['text']) + elif item.get('type') == 'tool_use': + parts.append(f"\n🔧 Tool Call: {item['name']}") + parts.append(f" Args: {json.dumps(item['input'], indent=2)}") + parts.append(f" ID: {item.get('id', 'N/A')}") + tool_calls_processed = True + else: + parts.append(str(message.content)) + + # Handle tool calls attached to the message (OpenAI format) - only if not already processed + if not tool_calls_processed and hasattr(message, 'tool_calls') and message.tool_calls: + for tool_call in message.tool_calls: + parts.append(f"\n🔧 Tool Call: {tool_call['name']}") + parts.append(f" Args: {json.dumps(tool_call['args'], indent=2)}") + parts.append(f" ID: {tool_call['id']}") + + return "\n".join(parts) + + +def format_messages(messages): + """Format and display a list of messages with Rich formatting""" + for m in messages: + msg_type = m.__class__.__name__.replace('Message', '') + content = format_message_content(m) + + if msg_type == 'Human': + console.print(Panel(content, title="🧑 Human", border_style="blue")) + elif msg_type == 'Ai': + console.print(Panel(content, title="🤖 Assistant", border_style="green")) + elif msg_type == 'Tool': + console.print(Panel(content, title="🔧 Tool Output", border_style="yellow")) + else: + console.print(Panel(content, title=f"📝 {msg_type}", border_style="white")) + + +def format_message(messages): + """Alias for format_messages for backward compatibility""" + return format_messages(messages) + + +def show_prompt(prompt_text: str, title: str = "Prompt", border_style: str = "blue"): + """ + Display a prompt with rich formatting and XML tag highlighting. + + Args: + prompt_text: The prompt string to display + title: Title for the panel (default: "Prompt") + border_style: Border color style (default: "blue") + """ + # Create a formatted display of the prompt + formatted_text = Text(prompt_text) + formatted_text.highlight_regex(r'<[^>]+>', style="bold blue") # Highlight XML tags + formatted_text.highlight_regex(r'##[^#\n]+', style="bold magenta") # Highlight headers + formatted_text.highlight_regex(r'###[^#\n]+', style="bold cyan") # Highlight sub-headers + + # Display in a panel for better presentation + console.print(Panel( + formatted_text, + title=f"[bold green]{title}[/bold green]", + border_style=border_style, + padding=(1, 2) + )) \ No newline at end of file diff --git a/usecase/solar-political-influence-analyzer/src/ai-engine/uv.lock b/usecase/solar-political-influence-analyzer/src/ai-engine/uv.lock new file mode 100644 index 0000000..b603aec --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/ai-engine/uv.lock @@ -0,0 +1,3999 @@ +version = 1 +revision = 3 +requires-python = ">=3.11, <3.14" +resolution-markers = [ + "python_full_version >= '3.13'", + "python_full_version == '3.12.*'", + "python_full_version < '3.12'", +] + +[[package]] +name = "aiohappyeyeballs" +version = "2.6.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/26/30/f84a107a9c4331c14b2b586036f40965c128aa4fee4dda5d3d51cb14ad54/aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558", size = 22760, upload-time = "2025-03-12T01:42:48.764Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8", size = 15265, upload-time = "2025-03-12T01:42:47.083Z" }, +] + +[[package]] +name = "aiohttp" +version = "3.12.14" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohappyeyeballs" }, + { name = "aiosignal" }, + { name = "attrs" }, + { name = "frozenlist" }, + { name = "multidict" }, + { name = "propcache" }, + { name = "yarl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e6/0b/e39ad954107ebf213a2325038a3e7a506be3d98e1435e1f82086eec4cde2/aiohttp-3.12.14.tar.gz", hash = "sha256:6e06e120e34d93100de448fd941522e11dafa78ef1a893c179901b7d66aa29f2", size = 7822921, upload-time = "2025-07-10T13:05:33.968Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/53/e1/8029b29316971c5fa89cec170274582619a01b3d82dd1036872acc9bc7e8/aiohttp-3.12.14-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f4552ff7b18bcec18b60a90c6982049cdb9dac1dba48cf00b97934a06ce2e597", size = 709960, upload-time = "2025-07-10T13:03:11.936Z" }, + { url = "https://files.pythonhosted.org/packages/96/bd/4f204cf1e282041f7b7e8155f846583b19149e0872752711d0da5e9cc023/aiohttp-3.12.14-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8283f42181ff6ccbcf25acaae4e8ab2ff7e92b3ca4a4ced73b2c12d8cd971393", size = 482235, upload-time = "2025-07-10T13:03:14.118Z" }, + { url = "https://files.pythonhosted.org/packages/d6/0f/2a580fcdd113fe2197a3b9df30230c7e85bb10bf56f7915457c60e9addd9/aiohttp-3.12.14-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:040afa180ea514495aaff7ad34ec3d27826eaa5d19812730fe9e529b04bb2179", size = 470501, upload-time = "2025-07-10T13:03:16.153Z" }, + { url = "https://files.pythonhosted.org/packages/38/78/2c1089f6adca90c3dd74915bafed6d6d8a87df5e3da74200f6b3a8b8906f/aiohttp-3.12.14-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b413c12f14c1149f0ffd890f4141a7471ba4b41234fe4fd4a0ff82b1dc299dbb", size = 1740696, upload-time = "2025-07-10T13:03:18.4Z" }, + { url = "https://files.pythonhosted.org/packages/4a/c8/ce6c7a34d9c589f007cfe064da2d943b3dee5aabc64eaecd21faf927ab11/aiohttp-3.12.14-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:1d6f607ce2e1a93315414e3d448b831238f1874b9968e1195b06efaa5c87e245", size = 1689365, upload-time = "2025-07-10T13:03:20.629Z" }, + { url = "https://files.pythonhosted.org/packages/18/10/431cd3d089de700756a56aa896faf3ea82bee39d22f89db7ddc957580308/aiohttp-3.12.14-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:565e70d03e924333004ed101599902bba09ebb14843c8ea39d657f037115201b", size = 1788157, upload-time = "2025-07-10T13:03:22.44Z" }, + { url = "https://files.pythonhosted.org/packages/fa/b2/26f4524184e0f7ba46671c512d4b03022633bcf7d32fa0c6f1ef49d55800/aiohttp-3.12.14-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4699979560728b168d5ab63c668a093c9570af2c7a78ea24ca5212c6cdc2b641", size = 1827203, upload-time = "2025-07-10T13:03:24.628Z" }, + { url = "https://files.pythonhosted.org/packages/e0/30/aadcdf71b510a718e3d98a7bfeaea2396ac847f218b7e8edb241b09bd99a/aiohttp-3.12.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad5fdf6af93ec6c99bf800eba3af9a43d8bfd66dce920ac905c817ef4a712afe", size = 1729664, upload-time = "2025-07-10T13:03:26.412Z" }, + { url = "https://files.pythonhosted.org/packages/67/7f/7ccf11756ae498fdedc3d689a0c36ace8fc82f9d52d3517da24adf6e9a74/aiohttp-3.12.14-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4ac76627c0b7ee0e80e871bde0d376a057916cb008a8f3ffc889570a838f5cc7", size = 1666741, upload-time = "2025-07-10T13:03:28.167Z" }, + { url = "https://files.pythonhosted.org/packages/6b/4d/35ebc170b1856dd020c92376dbfe4297217625ef4004d56587024dc2289c/aiohttp-3.12.14-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:798204af1180885651b77bf03adc903743a86a39c7392c472891649610844635", size = 1715013, upload-time = "2025-07-10T13:03:30.018Z" }, + { url = "https://files.pythonhosted.org/packages/7b/24/46dc0380146f33e2e4aa088b92374b598f5bdcde1718c77e8d1a0094f1a4/aiohttp-3.12.14-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:4f1205f97de92c37dd71cf2d5bcfb65fdaed3c255d246172cce729a8d849b4da", size = 1710172, upload-time = "2025-07-10T13:03:31.821Z" }, + { url = "https://files.pythonhosted.org/packages/2f/0a/46599d7d19b64f4d0fe1b57bdf96a9a40b5c125f0ae0d8899bc22e91fdce/aiohttp-3.12.14-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:76ae6f1dd041f85065d9df77c6bc9c9703da9b5c018479d20262acc3df97d419", size = 1690355, upload-time = "2025-07-10T13:03:34.754Z" }, + { url = "https://files.pythonhosted.org/packages/08/86/b21b682e33d5ca317ef96bd21294984f72379454e689d7da584df1512a19/aiohttp-3.12.14-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a194ace7bc43ce765338ca2dfb5661489317db216ea7ea700b0332878b392cab", size = 1783958, upload-time = "2025-07-10T13:03:36.53Z" }, + { url = "https://files.pythonhosted.org/packages/4f/45/f639482530b1396c365f23c5e3b1ae51c9bc02ba2b2248ca0c855a730059/aiohttp-3.12.14-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:16260e8e03744a6fe3fcb05259eeab8e08342c4c33decf96a9dad9f1187275d0", size = 1804423, upload-time = "2025-07-10T13:03:38.504Z" }, + { url = "https://files.pythonhosted.org/packages/7e/e5/39635a9e06eed1d73671bd4079a3caf9cf09a49df08490686f45a710b80e/aiohttp-3.12.14-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:8c779e5ebbf0e2e15334ea404fcce54009dc069210164a244d2eac8352a44b28", size = 1717479, upload-time = "2025-07-10T13:03:40.158Z" }, + { url = "https://files.pythonhosted.org/packages/51/e1/7f1c77515d369b7419c5b501196526dad3e72800946c0099594c1f0c20b4/aiohttp-3.12.14-cp311-cp311-win32.whl", hash = "sha256:a289f50bf1bd5be227376c067927f78079a7bdeccf8daa6a9e65c38bae14324b", size = 427907, upload-time = "2025-07-10T13:03:41.801Z" }, + { url = "https://files.pythonhosted.org/packages/06/24/a6bf915c85b7a5b07beba3d42b3282936b51e4578b64a51e8e875643c276/aiohttp-3.12.14-cp311-cp311-win_amd64.whl", hash = "sha256:0b8a69acaf06b17e9c54151a6c956339cf46db4ff72b3ac28516d0f7068f4ced", size = 452334, upload-time = "2025-07-10T13:03:43.485Z" }, + { url = "https://files.pythonhosted.org/packages/c3/0d/29026524e9336e33d9767a1e593ae2b24c2b8b09af7c2bd8193762f76b3e/aiohttp-3.12.14-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a0ecbb32fc3e69bc25efcda7d28d38e987d007096cbbeed04f14a6662d0eee22", size = 701055, upload-time = "2025-07-10T13:03:45.59Z" }, + { url = "https://files.pythonhosted.org/packages/0a/b8/a5e8e583e6c8c1056f4b012b50a03c77a669c2e9bf012b7cf33d6bc4b141/aiohttp-3.12.14-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0400f0ca9bb3e0b02f6466421f253797f6384e9845820c8b05e976398ac1d81a", size = 475670, upload-time = "2025-07-10T13:03:47.249Z" }, + { url = "https://files.pythonhosted.org/packages/29/e8/5202890c9e81a4ec2c2808dd90ffe024952e72c061729e1d49917677952f/aiohttp-3.12.14-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a56809fed4c8a830b5cae18454b7464e1529dbf66f71c4772e3cfa9cbec0a1ff", size = 468513, upload-time = "2025-07-10T13:03:49.377Z" }, + { url = "https://files.pythonhosted.org/packages/23/e5/d11db8c23d8923d3484a27468a40737d50f05b05eebbb6288bafcb467356/aiohttp-3.12.14-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27f2e373276e4755691a963e5d11756d093e346119f0627c2d6518208483fb6d", size = 1715309, upload-time = "2025-07-10T13:03:51.556Z" }, + { url = "https://files.pythonhosted.org/packages/53/44/af6879ca0eff7a16b1b650b7ea4a827301737a350a464239e58aa7c387ef/aiohttp-3.12.14-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:ca39e433630e9a16281125ef57ece6817afd1d54c9f1bf32e901f38f16035869", size = 1697961, upload-time = "2025-07-10T13:03:53.511Z" }, + { url = "https://files.pythonhosted.org/packages/bb/94/18457f043399e1ec0e59ad8674c0372f925363059c276a45a1459e17f423/aiohttp-3.12.14-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c748b3f8b14c77720132b2510a7d9907a03c20ba80f469e58d5dfd90c079a1c", size = 1753055, upload-time = "2025-07-10T13:03:55.368Z" }, + { url = "https://files.pythonhosted.org/packages/26/d9/1d3744dc588fafb50ff8a6226d58f484a2242b5dd93d8038882f55474d41/aiohttp-3.12.14-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0a568abe1b15ce69d4cc37e23020720423f0728e3cb1f9bcd3f53420ec3bfe7", size = 1799211, upload-time = "2025-07-10T13:03:57.216Z" }, + { url = "https://files.pythonhosted.org/packages/73/12/2530fb2b08773f717ab2d249ca7a982ac66e32187c62d49e2c86c9bba9b4/aiohttp-3.12.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9888e60c2c54eaf56704b17feb558c7ed6b7439bca1e07d4818ab878f2083660", size = 1718649, upload-time = "2025-07-10T13:03:59.469Z" }, + { url = "https://files.pythonhosted.org/packages/b9/34/8d6015a729f6571341a311061b578e8b8072ea3656b3d72329fa0faa2c7c/aiohttp-3.12.14-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3006a1dc579b9156de01e7916d38c63dc1ea0679b14627a37edf6151bc530088", size = 1634452, upload-time = "2025-07-10T13:04:01.698Z" }, + { url = "https://files.pythonhosted.org/packages/ff/4b/08b83ea02595a582447aeb0c1986792d0de35fe7a22fb2125d65091cbaf3/aiohttp-3.12.14-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:aa8ec5c15ab80e5501a26719eb48a55f3c567da45c6ea5bb78c52c036b2655c7", size = 1695511, upload-time = "2025-07-10T13:04:04.165Z" }, + { url = "https://files.pythonhosted.org/packages/b5/66/9c7c31037a063eec13ecf1976185c65d1394ded4a5120dd5965e3473cb21/aiohttp-3.12.14-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:39b94e50959aa07844c7fe2206b9f75d63cc3ad1c648aaa755aa257f6f2498a9", size = 1716967, upload-time = "2025-07-10T13:04:06.132Z" }, + { url = "https://files.pythonhosted.org/packages/ba/02/84406e0ad1acb0fb61fd617651ab6de760b2d6a31700904bc0b33bd0894d/aiohttp-3.12.14-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:04c11907492f416dad9885d503fbfc5dcb6768d90cad8639a771922d584609d3", size = 1657620, upload-time = "2025-07-10T13:04:07.944Z" }, + { url = "https://files.pythonhosted.org/packages/07/53/da018f4013a7a179017b9a274b46b9a12cbeb387570f116964f498a6f211/aiohttp-3.12.14-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:88167bd9ab69bb46cee91bd9761db6dfd45b6e76a0438c7e884c3f8160ff21eb", size = 1737179, upload-time = "2025-07-10T13:04:10.182Z" }, + { url = "https://files.pythonhosted.org/packages/49/e8/ca01c5ccfeaafb026d85fa4f43ceb23eb80ea9c1385688db0ef322c751e9/aiohttp-3.12.14-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:791504763f25e8f9f251e4688195e8b455f8820274320204f7eafc467e609425", size = 1765156, upload-time = "2025-07-10T13:04:12.029Z" }, + { url = "https://files.pythonhosted.org/packages/22/32/5501ab525a47ba23c20613e568174d6c63aa09e2caa22cded5c6ea8e3ada/aiohttp-3.12.14-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2785b112346e435dd3a1a67f67713a3fe692d288542f1347ad255683f066d8e0", size = 1724766, upload-time = "2025-07-10T13:04:13.961Z" }, + { url = "https://files.pythonhosted.org/packages/06/af/28e24574801fcf1657945347ee10df3892311c2829b41232be6089e461e7/aiohttp-3.12.14-cp312-cp312-win32.whl", hash = "sha256:15f5f4792c9c999a31d8decf444e79fcfd98497bf98e94284bf390a7bb8c1729", size = 422641, upload-time = "2025-07-10T13:04:16.018Z" }, + { url = "https://files.pythonhosted.org/packages/98/d5/7ac2464aebd2eecac38dbe96148c9eb487679c512449ba5215d233755582/aiohttp-3.12.14-cp312-cp312-win_amd64.whl", hash = "sha256:3b66e1a182879f579b105a80d5c4bd448b91a57e8933564bf41665064796a338", size = 449316, upload-time = "2025-07-10T13:04:18.289Z" }, + { url = "https://files.pythonhosted.org/packages/06/48/e0d2fa8ac778008071e7b79b93ab31ef14ab88804d7ba71b5c964a7c844e/aiohttp-3.12.14-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:3143a7893d94dc82bc409f7308bc10d60285a3cd831a68faf1aa0836c5c3c767", size = 695471, upload-time = "2025-07-10T13:04:20.124Z" }, + { url = "https://files.pythonhosted.org/packages/8d/e7/f73206afa33100804f790b71092888f47df65fd9a4cd0e6800d7c6826441/aiohttp-3.12.14-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3d62ac3d506cef54b355bd34c2a7c230eb693880001dfcda0bf88b38f5d7af7e", size = 473128, upload-time = "2025-07-10T13:04:21.928Z" }, + { url = "https://files.pythonhosted.org/packages/df/e2/4dd00180be551a6e7ee979c20fc7c32727f4889ee3fd5b0586e0d47f30e1/aiohttp-3.12.14-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:48e43e075c6a438937c4de48ec30fa8ad8e6dfef122a038847456bfe7b947b63", size = 465426, upload-time = "2025-07-10T13:04:24.071Z" }, + { url = "https://files.pythonhosted.org/packages/de/dd/525ed198a0bb674a323e93e4d928443a680860802c44fa7922d39436b48b/aiohttp-3.12.14-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:077b4488411a9724cecc436cbc8c133e0d61e694995b8de51aaf351c7578949d", size = 1704252, upload-time = "2025-07-10T13:04:26.049Z" }, + { url = "https://files.pythonhosted.org/packages/d8/b1/01e542aed560a968f692ab4fc4323286e8bc4daae83348cd63588e4f33e3/aiohttp-3.12.14-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d8c35632575653f297dcbc9546305b2c1133391089ab925a6a3706dfa775ccab", size = 1685514, upload-time = "2025-07-10T13:04:28.186Z" }, + { url = "https://files.pythonhosted.org/packages/b3/06/93669694dc5fdabdc01338791e70452d60ce21ea0946a878715688d5a191/aiohttp-3.12.14-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6b8ce87963f0035c6834b28f061df90cf525ff7c9b6283a8ac23acee6502afd4", size = 1737586, upload-time = "2025-07-10T13:04:30.195Z" }, + { url = "https://files.pythonhosted.org/packages/a5/3a/18991048ffc1407ca51efb49ba8bcc1645961f97f563a6c480cdf0286310/aiohttp-3.12.14-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0a2cf66e32a2563bb0766eb24eae7e9a269ac0dc48db0aae90b575dc9583026", size = 1786958, upload-time = "2025-07-10T13:04:32.482Z" }, + { url = "https://files.pythonhosted.org/packages/30/a8/81e237f89a32029f9b4a805af6dffc378f8459c7b9942712c809ff9e76e5/aiohttp-3.12.14-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdea089caf6d5cde975084a884c72d901e36ef9c2fd972c9f51efbbc64e96fbd", size = 1709287, upload-time = "2025-07-10T13:04:34.493Z" }, + { url = "https://files.pythonhosted.org/packages/8c/e3/bd67a11b0fe7fc12c6030473afd9e44223d456f500f7cf526dbaa259ae46/aiohttp-3.12.14-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8a7865f27db67d49e81d463da64a59365ebd6b826e0e4847aa111056dcb9dc88", size = 1622990, upload-time = "2025-07-10T13:04:36.433Z" }, + { url = "https://files.pythonhosted.org/packages/83/ba/e0cc8e0f0d9ce0904e3cf2d6fa41904e379e718a013c721b781d53dcbcca/aiohttp-3.12.14-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0ab5b38a6a39781d77713ad930cb5e7feea6f253de656a5f9f281a8f5931b086", size = 1676015, upload-time = "2025-07-10T13:04:38.958Z" }, + { url = "https://files.pythonhosted.org/packages/d8/b3/1e6c960520bda094c48b56de29a3d978254637ace7168dd97ddc273d0d6c/aiohttp-3.12.14-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:9b3b15acee5c17e8848d90a4ebc27853f37077ba6aec4d8cb4dbbea56d156933", size = 1707678, upload-time = "2025-07-10T13:04:41.275Z" }, + { url = "https://files.pythonhosted.org/packages/0a/19/929a3eb8c35b7f9f076a462eaa9830b32c7f27d3395397665caa5e975614/aiohttp-3.12.14-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:e4c972b0bdaac167c1e53e16a16101b17c6d0ed7eac178e653a07b9f7fad7151", size = 1650274, upload-time = "2025-07-10T13:04:43.483Z" }, + { url = "https://files.pythonhosted.org/packages/22/e5/81682a6f20dd1b18ce3d747de8eba11cbef9b270f567426ff7880b096b48/aiohttp-3.12.14-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:7442488b0039257a3bdbc55f7209587911f143fca11df9869578db6c26feeeb8", size = 1726408, upload-time = "2025-07-10T13:04:45.577Z" }, + { url = "https://files.pythonhosted.org/packages/8c/17/884938dffaa4048302985483f77dfce5ac18339aad9b04ad4aaa5e32b028/aiohttp-3.12.14-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:f68d3067eecb64c5e9bab4a26aa11bd676f4c70eea9ef6536b0a4e490639add3", size = 1759879, upload-time = "2025-07-10T13:04:47.663Z" }, + { url = "https://files.pythonhosted.org/packages/95/78/53b081980f50b5cf874359bde707a6eacd6c4be3f5f5c93937e48c9d0025/aiohttp-3.12.14-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f88d3704c8b3d598a08ad17d06006cb1ca52a1182291f04979e305c8be6c9758", size = 1708770, upload-time = "2025-07-10T13:04:49.944Z" }, + { url = "https://files.pythonhosted.org/packages/ed/91/228eeddb008ecbe3ffa6c77b440597fdf640307162f0c6488e72c5a2d112/aiohttp-3.12.14-cp313-cp313-win32.whl", hash = "sha256:a3c99ab19c7bf375c4ae3debd91ca5d394b98b6089a03231d4c580ef3c2ae4c5", size = 421688, upload-time = "2025-07-10T13:04:51.993Z" }, + { url = "https://files.pythonhosted.org/packages/66/5f/8427618903343402fdafe2850738f735fd1d9409d2a8f9bcaae5e630d3ba/aiohttp-3.12.14-cp313-cp313-win_amd64.whl", hash = "sha256:3f8aad695e12edc9d571f878c62bedc91adf30c760c8632f09663e5f564f4baa", size = 448098, upload-time = "2025-07-10T13:04:53.999Z" }, +] + +[[package]] +name = "aiosignal" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "frozenlist" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/61/62/06741b579156360248d1ec624842ad0edf697050bbaf7c3e46394e106ad1/aiosignal-1.4.0.tar.gz", hash = "sha256:f47eecd9468083c2029cc99945502cb7708b082c232f9aca65da147157b251c7", size = 25007, upload-time = "2025-07-03T22:54:43.528Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/76/641ae371508676492379f16e2fa48f4e2c11741bd63c48be4b12a6b09cba/aiosignal-1.4.0-py3-none-any.whl", hash = "sha256:053243f8b92b990551949e63930a839ff0cf0b0ebbe0597b0f3fb19e1a0fe82e", size = 7490, upload-time = "2025-07-03T22:54:42.156Z" }, +] + +[[package]] +name = "annotated-doc" +version = "0.0.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/57/ba/046ceea27344560984e26a590f90bc7f4a75b06701f653222458922b558c/annotated_doc-0.0.4.tar.gz", hash = "sha256:fbcda96e87e9c92ad167c2e53839e57503ecfda18804ea28102353485033faa4", size = 7288, upload-time = "2025-11-10T22:07:42.062Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/d3/26bf1008eb3d2daa8ef4cacc7f3bfdc11818d111f7e2d0201bc6e3b49d45/annotated_doc-0.0.4-py3-none-any.whl", hash = "sha256:571ac1dc6991c450b25a9c2d84a3705e2ae7a53467b5d111c24fa8baabbed320", size = 5303, upload-time = "2025-11-10T22:07:40.673Z" }, +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, +] + +[[package]] +name = "anyio" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna" }, + { name = "sniffio" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028", size = 190949, upload-time = "2025-03-17T00:02:54.77Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c", size = 100916, upload-time = "2025-03-17T00:02:52.713Z" }, +] + +[[package]] +name = "appnope" +version = "0.1.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/35/5d/752690df9ef5b76e169e68d6a129fa6d08a7100ca7f754c89495db3c6019/appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee", size = 4170, upload-time = "2024-02-06T09:43:11.258Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321, upload-time = "2024-02-06T09:43:09.663Z" }, +] + +[[package]] +name = "argon2-cffi" +version = "25.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "argon2-cffi-bindings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0e/89/ce5af8a7d472a67cc819d5d998aa8c82c5d860608c4db9f46f1162d7dab9/argon2_cffi-25.1.0.tar.gz", hash = "sha256:694ae5cc8a42f4c4e2bf2ca0e64e51e23a040c6a517a85074683d3959e1346c1", size = 45706, upload-time = "2025-06-03T06:55:32.073Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4f/d3/a8b22fa575b297cd6e3e3b0155c7e25db170edf1c74783d6a31a2490b8d9/argon2_cffi-25.1.0-py3-none-any.whl", hash = "sha256:fdc8b074db390fccb6eb4a3604ae7231f219aa669a2652e0f20e16ba513d5741", size = 14657, upload-time = "2025-06-03T06:55:30.804Z" }, +] + +[[package]] +name = "argon2-cffi-bindings" +version = "21.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/e9/184b8ccce6683b0aa2fbb7ba5683ea4b9c5763f1356347f1312c32e3c66e/argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3", size = 1779911, upload-time = "2021-12-01T08:52:55.68Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d4/13/838ce2620025e9666aa8f686431f67a29052241692a3dd1ae9d3692a89d3/argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367", size = 29658, upload-time = "2021-12-01T09:09:17.016Z" }, + { url = "https://files.pythonhosted.org/packages/b3/02/f7f7bb6b6af6031edb11037639c697b912e1dea2db94d436e681aea2f495/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d", size = 80583, upload-time = "2021-12-01T09:09:19.546Z" }, + { url = "https://files.pythonhosted.org/packages/ec/f7/378254e6dd7ae6f31fe40c8649eea7d4832a42243acaf0f1fff9083b2bed/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae", size = 86168, upload-time = "2021-12-01T09:09:21.445Z" }, + { url = "https://files.pythonhosted.org/packages/74/f6/4a34a37a98311ed73bb80efe422fed95f2ac25a4cacc5ae1d7ae6a144505/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c", size = 82709, upload-time = "2021-12-01T09:09:18.182Z" }, + { url = "https://files.pythonhosted.org/packages/74/2b/73d767bfdaab25484f7e7901379d5f8793cccbb86c6e0cbc4c1b96f63896/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86", size = 83613, upload-time = "2021-12-01T09:09:22.741Z" }, + { url = "https://files.pythonhosted.org/packages/4f/fd/37f86deef67ff57c76f137a67181949c2d408077e2e3dd70c6c42912c9bf/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f", size = 84583, upload-time = "2021-12-01T09:09:24.177Z" }, + { url = "https://files.pythonhosted.org/packages/6f/52/5a60085a3dae8fded8327a4f564223029f5f54b0cb0455a31131b5363a01/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e", size = 88475, upload-time = "2021-12-01T09:09:26.673Z" }, + { url = "https://files.pythonhosted.org/packages/8b/95/143cd64feb24a15fa4b189a3e1e7efbaeeb00f39a51e99b26fc62fbacabd/argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082", size = 27698, upload-time = "2021-12-01T09:09:27.87Z" }, + { url = "https://files.pythonhosted.org/packages/37/2c/e34e47c7dee97ba6f01a6203e0383e15b60fb85d78ac9a15cd066f6fe28b/argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f", size = 30817, upload-time = "2021-12-01T09:09:30.267Z" }, + { url = "https://files.pythonhosted.org/packages/5a/e4/bf8034d25edaa495da3c8a3405627d2e35758e44ff6eaa7948092646fdcc/argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93", size = 53104, upload-time = "2021-12-01T09:09:31.335Z" }, +] + +[[package]] +name = "arrow" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, + { name = "types-python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2e/00/0f6e8fcdb23ea632c866620cc872729ff43ed91d284c866b515c6342b173/arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85", size = 131960, upload-time = "2023-09-30T22:11:18.25Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/ed/e97229a566617f2ae958a6b13e7cc0f585470eac730a73e9e82c32a3cdd2/arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80", size = 66419, upload-time = "2023-09-30T22:11:16.072Z" }, +] + +[[package]] +name = "asttokens" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4a/e7/82da0a03e7ba5141f05cce0d302e6eed121ae055e0456ca228bf693984bc/asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7", size = 61978, upload-time = "2024-11-30T04:30:14.439Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918, upload-time = "2024-11-30T04:30:10.946Z" }, +] + +[[package]] +name = "async-lru" +version = "2.0.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/4d/71ec4d3939dc755264f680f6c2b4906423a304c3d18e96853f0a595dfe97/async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb", size = 10380, upload-time = "2025-03-16T17:25:36.919Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/49/d10027df9fce941cb8184e78a02857af36360d33e1721df81c5ed2179a1a/async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943", size = 6069, upload-time = "2025-03-16T17:25:35.422Z" }, +] + +[[package]] +name = "attrs" +version = "25.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032, upload-time = "2025-03-13T11:10:22.779Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload-time = "2025-03-13T11:10:21.14Z" }, +] + +[[package]] +name = "babel" +version = "2.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852, upload-time = "2025-02-01T15:17:41.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537, upload-time = "2025-02-01T15:17:37.39Z" }, +] + +[[package]] +name = "beautifulsoup4" +version = "4.13.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "soupsieve" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067, upload-time = "2025-04-15T17:05:13.836Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285, upload-time = "2025-04-15T17:05:12.221Z" }, +] + +[[package]] +name = "bleach" +version = "6.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/76/9a/0e33f5054c54d349ea62c277191c020c2d6ef1d65ab2cb1993f91ec846d1/bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f", size = 203083, upload-time = "2024-10-29T18:30:40.477Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/55/96142937f66150805c25c4d0f31ee4132fd33497753400734f9dfdcbdc66/bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e", size = 163406, upload-time = "2024-10-29T18:30:38.186Z" }, +] + +[package.optional-dependencies] +css = [ + { name = "tinycss2" }, +] + +[[package]] +name = "cachetools" +version = "6.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fb/44/ca1675be2a83aeee1886ab745b28cda92093066590233cc501890eb8417a/cachetools-6.2.2.tar.gz", hash = "sha256:8e6d266b25e539df852251cfd6f990b4bc3a141db73b939058d809ebd2590fc6", size = 31571, upload-time = "2025-11-13T17:42:51.465Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/46/eb6eca305c77a4489affe1c5d8f4cae82f285d9addd8de4ec084a7184221/cachetools-6.2.2-py3-none-any.whl", hash = "sha256:6c09c98183bf58560c97b2abfcedcbaf6a896a490f534b031b661d3723b45ace", size = 11503, upload-time = "2025-11-13T17:42:50.232Z" }, +] + +[[package]] +name = "certifi" +version = "2025.7.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b3/76/52c535bcebe74590f296d6c77c86dabf761c41980e1347a2422e4aa2ae41/certifi-2025.7.14.tar.gz", hash = "sha256:8ea99dbdfaaf2ba2f9bac77b9249ef62ec5218e7c2b2e903378ed5fccf765995", size = 163981, upload-time = "2025-07-14T03:29:28.449Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4f/52/34c6cf5bb9285074dc3531c437b3919e825d976fde097a7a73f79e726d03/certifi-2025.7.14-py3-none-any.whl", hash = "sha256:6b31f564a415d79ee77df69d757bb49a5bb53bd9f756cbbe24394ffd6fc1f4b2", size = 162722, upload-time = "2025-07-14T03:29:26.863Z" }, +] + +[[package]] +name = "cffi" +version = "1.17.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621, upload-time = "2024-09-04T20:45:21.852Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/f4/927e3a8899e52a27fa57a48607ff7dc91a9ebe97399b357b85a0c7892e00/cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401", size = 182264, upload-time = "2024-09-04T20:43:51.124Z" }, + { url = "https://files.pythonhosted.org/packages/6c/f5/6c3a8efe5f503175aaddcbea6ad0d2c96dad6f5abb205750d1b3df44ef29/cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf", size = 178651, upload-time = "2024-09-04T20:43:52.872Z" }, + { url = "https://files.pythonhosted.org/packages/94/dd/a3f0118e688d1b1a57553da23b16bdade96d2f9bcda4d32e7d2838047ff7/cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4", size = 445259, upload-time = "2024-09-04T20:43:56.123Z" }, + { url = "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", size = 469200, upload-time = "2024-09-04T20:43:57.891Z" }, + { url = "https://files.pythonhosted.org/packages/1c/a0/a4fa9f4f781bda074c3ddd57a572b060fa0df7655d2a4247bbe277200146/cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", size = 477235, upload-time = "2024-09-04T20:44:00.18Z" }, + { url = "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", size = 459721, upload-time = "2024-09-04T20:44:01.585Z" }, + { url = "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", size = 467242, upload-time = "2024-09-04T20:44:03.467Z" }, + { url = "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", size = 477999, upload-time = "2024-09-04T20:44:05.023Z" }, + { url = "https://files.pythonhosted.org/packages/44/74/f2a2460684a1a2d00ca799ad880d54652841a780c4c97b87754f660c7603/cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f", size = 454242, upload-time = "2024-09-04T20:44:06.444Z" }, + { url = "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", size = 478604, upload-time = "2024-09-04T20:44:08.206Z" }, + { url = "https://files.pythonhosted.org/packages/34/33/e1b8a1ba29025adbdcda5fb3a36f94c03d771c1b7b12f726ff7fef2ebe36/cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655", size = 171727, upload-time = "2024-09-04T20:44:09.481Z" }, + { url = "https://files.pythonhosted.org/packages/3d/97/50228be003bb2802627d28ec0627837ac0bf35c90cf769812056f235b2d1/cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0", size = 181400, upload-time = "2024-09-04T20:44:10.873Z" }, + { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178, upload-time = "2024-09-04T20:44:12.232Z" }, + { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840, upload-time = "2024-09-04T20:44:13.739Z" }, + { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803, upload-time = "2024-09-04T20:44:15.231Z" }, + { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850, upload-time = "2024-09-04T20:44:17.188Z" }, + { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729, upload-time = "2024-09-04T20:44:18.688Z" }, + { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256, upload-time = "2024-09-04T20:44:20.248Z" }, + { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424, upload-time = "2024-09-04T20:44:21.673Z" }, + { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568, upload-time = "2024-09-04T20:44:23.245Z" }, + { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736, upload-time = "2024-09-04T20:44:24.757Z" }, + { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448, upload-time = "2024-09-04T20:44:26.208Z" }, + { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976, upload-time = "2024-09-04T20:44:27.578Z" }, + { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989, upload-time = "2024-09-04T20:44:28.956Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802, upload-time = "2024-09-04T20:44:30.289Z" }, + { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792, upload-time = "2024-09-04T20:44:32.01Z" }, + { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893, upload-time = "2024-09-04T20:44:33.606Z" }, + { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810, upload-time = "2024-09-04T20:44:35.191Z" }, + { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200, upload-time = "2024-09-04T20:44:36.743Z" }, + { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447, upload-time = "2024-09-04T20:44:38.492Z" }, + { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358, upload-time = "2024-09-04T20:44:40.046Z" }, + { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469, upload-time = "2024-09-04T20:44:41.616Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475, upload-time = "2024-09-04T20:44:43.733Z" }, + { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009, upload-time = "2024-09-04T20:44:45.309Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367, upload-time = "2025-05-02T08:34:42.01Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/85/4c40d00dcc6284a1c1ad5de5e0996b06f39d8232f1031cd23c2f5c07ee86/charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2", size = 198794, upload-time = "2025-05-02T08:32:11.945Z" }, + { url = "https://files.pythonhosted.org/packages/41/d9/7a6c0b9db952598e97e93cbdfcb91bacd89b9b88c7c983250a77c008703c/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645", size = 142846, upload-time = "2025-05-02T08:32:13.946Z" }, + { url = "https://files.pythonhosted.org/packages/66/82/a37989cda2ace7e37f36c1a8ed16c58cf48965a79c2142713244bf945c89/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd", size = 153350, upload-time = "2025-05-02T08:32:15.873Z" }, + { url = "https://files.pythonhosted.org/packages/df/68/a576b31b694d07b53807269d05ec3f6f1093e9545e8607121995ba7a8313/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8", size = 145657, upload-time = "2025-05-02T08:32:17.283Z" }, + { url = "https://files.pythonhosted.org/packages/92/9b/ad67f03d74554bed3aefd56fe836e1623a50780f7c998d00ca128924a499/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f", size = 147260, upload-time = "2025-05-02T08:32:18.807Z" }, + { url = "https://files.pythonhosted.org/packages/a6/e6/8aebae25e328160b20e31a7e9929b1578bbdc7f42e66f46595a432f8539e/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7", size = 149164, upload-time = "2025-05-02T08:32:20.333Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f2/b3c2f07dbcc248805f10e67a0262c93308cfa149a4cd3d1fe01f593e5fd2/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9", size = 144571, upload-time = "2025-05-02T08:32:21.86Z" }, + { url = "https://files.pythonhosted.org/packages/60/5b/c3f3a94bc345bc211622ea59b4bed9ae63c00920e2e8f11824aa5708e8b7/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544", size = 151952, upload-time = "2025-05-02T08:32:23.434Z" }, + { url = "https://files.pythonhosted.org/packages/e2/4d/ff460c8b474122334c2fa394a3f99a04cf11c646da895f81402ae54f5c42/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82", size = 155959, upload-time = "2025-05-02T08:32:24.993Z" }, + { url = "https://files.pythonhosted.org/packages/a2/2b/b964c6a2fda88611a1fe3d4c400d39c66a42d6c169c924818c848f922415/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0", size = 153030, upload-time = "2025-05-02T08:32:26.435Z" }, + { url = "https://files.pythonhosted.org/packages/59/2e/d3b9811db26a5ebf444bc0fa4f4be5aa6d76fc6e1c0fd537b16c14e849b6/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5", size = 148015, upload-time = "2025-05-02T08:32:28.376Z" }, + { url = "https://files.pythonhosted.org/packages/90/07/c5fd7c11eafd561bb51220d600a788f1c8d77c5eef37ee49454cc5c35575/charset_normalizer-3.4.2-cp311-cp311-win32.whl", hash = "sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a", size = 98106, upload-time = "2025-05-02T08:32:30.281Z" }, + { url = "https://files.pythonhosted.org/packages/a8/05/5e33dbef7e2f773d672b6d79f10ec633d4a71cd96db6673625838a4fd532/charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28", size = 105402, upload-time = "2025-05-02T08:32:32.191Z" }, + { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936, upload-time = "2025-05-02T08:32:33.712Z" }, + { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790, upload-time = "2025-05-02T08:32:35.768Z" }, + { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924, upload-time = "2025-05-02T08:32:37.284Z" }, + { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626, upload-time = "2025-05-02T08:32:38.803Z" }, + { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567, upload-time = "2025-05-02T08:32:40.251Z" }, + { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957, upload-time = "2025-05-02T08:32:41.705Z" }, + { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408, upload-time = "2025-05-02T08:32:43.709Z" }, + { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399, upload-time = "2025-05-02T08:32:46.197Z" }, + { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815, upload-time = "2025-05-02T08:32:48.105Z" }, + { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537, upload-time = "2025-05-02T08:32:49.719Z" }, + { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565, upload-time = "2025-05-02T08:32:51.404Z" }, + { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357, upload-time = "2025-05-02T08:32:53.079Z" }, + { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776, upload-time = "2025-05-02T08:32:54.573Z" }, + { url = "https://files.pythonhosted.org/packages/ea/12/a93df3366ed32db1d907d7593a94f1fe6293903e3e92967bebd6950ed12c/charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0", size = 199622, upload-time = "2025-05-02T08:32:56.363Z" }, + { url = "https://files.pythonhosted.org/packages/04/93/bf204e6f344c39d9937d3c13c8cd5bbfc266472e51fc8c07cb7f64fcd2de/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf", size = 143435, upload-time = "2025-05-02T08:32:58.551Z" }, + { url = "https://files.pythonhosted.org/packages/22/2a/ea8a2095b0bafa6c5b5a55ffdc2f924455233ee7b91c69b7edfcc9e02284/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e", size = 153653, upload-time = "2025-05-02T08:33:00.342Z" }, + { url = "https://files.pythonhosted.org/packages/b6/57/1b090ff183d13cef485dfbe272e2fe57622a76694061353c59da52c9a659/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1", size = 146231, upload-time = "2025-05-02T08:33:02.081Z" }, + { url = "https://files.pythonhosted.org/packages/e2/28/ffc026b26f441fc67bd21ab7f03b313ab3fe46714a14b516f931abe1a2d8/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c", size = 148243, upload-time = "2025-05-02T08:33:04.063Z" }, + { url = "https://files.pythonhosted.org/packages/c0/0f/9abe9bd191629c33e69e47c6ef45ef99773320e9ad8e9cb08b8ab4a8d4cb/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691", size = 150442, upload-time = "2025-05-02T08:33:06.418Z" }, + { url = "https://files.pythonhosted.org/packages/67/7c/a123bbcedca91d5916c056407f89a7f5e8fdfce12ba825d7d6b9954a1a3c/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0", size = 145147, upload-time = "2025-05-02T08:33:08.183Z" }, + { url = "https://files.pythonhosted.org/packages/ec/fe/1ac556fa4899d967b83e9893788e86b6af4d83e4726511eaaad035e36595/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b", size = 153057, upload-time = "2025-05-02T08:33:09.986Z" }, + { url = "https://files.pythonhosted.org/packages/2b/ff/acfc0b0a70b19e3e54febdd5301a98b72fa07635e56f24f60502e954c461/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff", size = 156454, upload-time = "2025-05-02T08:33:11.814Z" }, + { url = "https://files.pythonhosted.org/packages/92/08/95b458ce9c740d0645feb0e96cea1f5ec946ea9c580a94adfe0b617f3573/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b", size = 154174, upload-time = "2025-05-02T08:33:13.707Z" }, + { url = "https://files.pythonhosted.org/packages/78/be/8392efc43487ac051eee6c36d5fbd63032d78f7728cb37aebcc98191f1ff/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148", size = 149166, upload-time = "2025-05-02T08:33:15.458Z" }, + { url = "https://files.pythonhosted.org/packages/44/96/392abd49b094d30b91d9fbda6a69519e95802250b777841cf3bda8fe136c/charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7", size = 98064, upload-time = "2025-05-02T08:33:17.06Z" }, + { url = "https://files.pythonhosted.org/packages/e9/b0/0200da600134e001d91851ddc797809e2fe0ea72de90e09bec5a2fbdaccb/charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980", size = 105641, upload-time = "2025-05-02T08:33:18.753Z" }, + { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626, upload-time = "2025-05-02T08:34:40.053Z" }, +] + +[[package]] +name = "click" +version = "8.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342, upload-time = "2025-05-20T23:19:49.832Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215, upload-time = "2025-05-20T23:19:47.796Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "comm" +version = "0.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/a8/fb783cb0abe2b5fded9f55e5703015cdf1c9c85b3669087c538dd15a6a86/comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e", size = 6210, upload-time = "2024-03-12T16:53:41.133Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3", size = 7180, upload-time = "2024-03-12T16:53:39.226Z" }, +] + +[[package]] +name = "contourpy" +version = "1.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/58/01/1253e6698a07380cd31a736d248a3f2a50a7c88779a1813da27503cadc2a/contourpy-1.3.3.tar.gz", hash = "sha256:083e12155b210502d0bca491432bb04d56dc3432f95a979b429f2848c3dbe880", size = 13466174, upload-time = "2025-07-26T12:03:12.549Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/91/2e/c4390a31919d8a78b90e8ecf87cd4b4c4f05a5b48d05ec17db8e5404c6f4/contourpy-1.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:709a48ef9a690e1343202916450bc48b9e51c049b089c7f79a267b46cffcdaa1", size = 288773, upload-time = "2025-07-26T12:01:02.277Z" }, + { url = "https://files.pythonhosted.org/packages/0d/44/c4b0b6095fef4dc9c420e041799591e3b63e9619e3044f7f4f6c21c0ab24/contourpy-1.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:23416f38bfd74d5d28ab8429cc4d63fa67d5068bd711a85edb1c3fb0c3e2f381", size = 270149, upload-time = "2025-07-26T12:01:04.072Z" }, + { url = "https://files.pythonhosted.org/packages/30/2e/dd4ced42fefac8470661d7cb7e264808425e6c5d56d175291e93890cce09/contourpy-1.3.3-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:929ddf8c4c7f348e4c0a5a3a714b5c8542ffaa8c22954862a46ca1813b667ee7", size = 329222, upload-time = "2025-07-26T12:01:05.688Z" }, + { url = "https://files.pythonhosted.org/packages/f2/74/cc6ec2548e3d276c71389ea4802a774b7aa3558223b7bade3f25787fafc2/contourpy-1.3.3-cp311-cp311-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9e999574eddae35f1312c2b4b717b7885d4edd6cb46700e04f7f02db454e67c1", size = 377234, upload-time = "2025-07-26T12:01:07.054Z" }, + { url = "https://files.pythonhosted.org/packages/03/b3/64ef723029f917410f75c09da54254c5f9ea90ef89b143ccadb09df14c15/contourpy-1.3.3-cp311-cp311-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0bf67e0e3f482cb69779dd3061b534eb35ac9b17f163d851e2a547d56dba0a3a", size = 380555, upload-time = "2025-07-26T12:01:08.801Z" }, + { url = "https://files.pythonhosted.org/packages/5f/4b/6157f24ca425b89fe2eb7e7be642375711ab671135be21e6faa100f7448c/contourpy-1.3.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:51e79c1f7470158e838808d4a996fa9bac72c498e93d8ebe5119bc1e6becb0db", size = 355238, upload-time = "2025-07-26T12:01:10.319Z" }, + { url = "https://files.pythonhosted.org/packages/98/56/f914f0dd678480708a04cfd2206e7c382533249bc5001eb9f58aa693e200/contourpy-1.3.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:598c3aaece21c503615fd59c92a3598b428b2f01bfb4b8ca9c4edeecc2438620", size = 1326218, upload-time = "2025-07-26T12:01:12.659Z" }, + { url = "https://files.pythonhosted.org/packages/fb/d7/4a972334a0c971acd5172389671113ae82aa7527073980c38d5868ff1161/contourpy-1.3.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:322ab1c99b008dad206d406bb61d014cf0174df491ae9d9d0fac6a6fda4f977f", size = 1392867, upload-time = "2025-07-26T12:01:15.533Z" }, + { url = "https://files.pythonhosted.org/packages/75/3e/f2cc6cd56dc8cff46b1a56232eabc6feea52720083ea71ab15523daab796/contourpy-1.3.3-cp311-cp311-win32.whl", hash = "sha256:fd907ae12cd483cd83e414b12941c632a969171bf90fc937d0c9f268a31cafff", size = 183677, upload-time = "2025-07-26T12:01:17.088Z" }, + { url = "https://files.pythonhosted.org/packages/98/4b/9bd370b004b5c9d8045c6c33cf65bae018b27aca550a3f657cdc99acdbd8/contourpy-1.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:3519428f6be58431c56581f1694ba8e50626f2dd550af225f82fb5f5814d2a42", size = 225234, upload-time = "2025-07-26T12:01:18.256Z" }, + { url = "https://files.pythonhosted.org/packages/d9/b6/71771e02c2e004450c12b1120a5f488cad2e4d5b590b1af8bad060360fe4/contourpy-1.3.3-cp311-cp311-win_arm64.whl", hash = "sha256:15ff10bfada4bf92ec8b31c62bf7c1834c244019b4a33095a68000d7075df470", size = 193123, upload-time = "2025-07-26T12:01:19.848Z" }, + { url = "https://files.pythonhosted.org/packages/be/45/adfee365d9ea3d853550b2e735f9d66366701c65db7855cd07621732ccfc/contourpy-1.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b08a32ea2f8e42cf1d4be3169a98dd4be32bafe4f22b6c4cb4ba810fa9e5d2cb", size = 293419, upload-time = "2025-07-26T12:01:21.16Z" }, + { url = "https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:556dba8fb6f5d8742f2923fe9457dbdd51e1049c4a43fd3986a0b14a1d815fc6", size = 273979, upload-time = "2025-07-26T12:01:22.448Z" }, + { url = "https://files.pythonhosted.org/packages/d4/1c/a12359b9b2ca3a845e8f7f9ac08bdf776114eb931392fcad91743e2ea17b/contourpy-1.3.3-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92d9abc807cf7d0e047b95ca5d957cf4792fcd04e920ca70d48add15c1a90ea7", size = 332653, upload-time = "2025-07-26T12:01:24.155Z" }, + { url = "https://files.pythonhosted.org/packages/63/12/897aeebfb475b7748ea67b61e045accdfcf0d971f8a588b67108ed7f5512/contourpy-1.3.3-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b2e8faa0ed68cb29af51edd8e24798bb661eac3bd9f65420c1887b6ca89987c8", size = 379536, upload-time = "2025-07-26T12:01:25.91Z" }, + { url = "https://files.pythonhosted.org/packages/43/8a/a8c584b82deb248930ce069e71576fc09bd7174bbd35183b7943fb1064fd/contourpy-1.3.3-cp312-cp312-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:626d60935cf668e70a5ce6ff184fd713e9683fb458898e4249b63be9e28286ea", size = 384397, upload-time = "2025-07-26T12:01:27.152Z" }, + { url = "https://files.pythonhosted.org/packages/cc/8f/ec6289987824b29529d0dfda0d74a07cec60e54b9c92f3c9da4c0ac732de/contourpy-1.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4d00e655fcef08aba35ec9610536bfe90267d7ab5ba944f7032549c55a146da1", size = 362601, upload-time = "2025-07-26T12:01:28.808Z" }, + { url = "https://files.pythonhosted.org/packages/05/0a/a3fe3be3ee2dceb3e615ebb4df97ae6f3828aa915d3e10549ce016302bd1/contourpy-1.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:451e71b5a7d597379ef572de31eeb909a87246974d960049a9848c3bc6c41bf7", size = 1331288, upload-time = "2025-07-26T12:01:31.198Z" }, + { url = "https://files.pythonhosted.org/packages/33/1d/acad9bd4e97f13f3e2b18a3977fe1b4a37ecf3d38d815333980c6c72e963/contourpy-1.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:459c1f020cd59fcfe6650180678a9993932d80d44ccde1fa1868977438f0b411", size = 1403386, upload-time = "2025-07-26T12:01:33.947Z" }, + { url = "https://files.pythonhosted.org/packages/cf/8f/5847f44a7fddf859704217a99a23a4f6417b10e5ab1256a179264561540e/contourpy-1.3.3-cp312-cp312-win32.whl", hash = "sha256:023b44101dfe49d7d53932be418477dba359649246075c996866106da069af69", size = 185018, upload-time = "2025-07-26T12:01:35.64Z" }, + { url = "https://files.pythonhosted.org/packages/19/e8/6026ed58a64563186a9ee3f29f41261fd1828f527dd93d33b60feca63352/contourpy-1.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:8153b8bfc11e1e4d75bcb0bff1db232f9e10b274e0929de9d608027e0d34ff8b", size = 226567, upload-time = "2025-07-26T12:01:36.804Z" }, + { url = "https://files.pythonhosted.org/packages/d1/e2/f05240d2c39a1ed228d8328a78b6f44cd695f7ef47beb3e684cf93604f86/contourpy-1.3.3-cp312-cp312-win_arm64.whl", hash = "sha256:07ce5ed73ecdc4a03ffe3e1b3e3c1166db35ae7584be76f65dbbe28a7791b0cc", size = 193655, upload-time = "2025-07-26T12:01:37.999Z" }, + { url = "https://files.pythonhosted.org/packages/68/35/0167aad910bbdb9599272bd96d01a9ec6852f36b9455cf2ca67bd4cc2d23/contourpy-1.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:177fb367556747a686509d6fef71d221a4b198a3905fe824430e5ea0fda54eb5", size = 293257, upload-time = "2025-07-26T12:01:39.367Z" }, + { url = "https://files.pythonhosted.org/packages/96/e4/7adcd9c8362745b2210728f209bfbcf7d91ba868a2c5f40d8b58f54c509b/contourpy-1.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d002b6f00d73d69333dac9d0b8d5e84d9724ff9ef044fd63c5986e62b7c9e1b1", size = 274034, upload-time = "2025-07-26T12:01:40.645Z" }, + { url = "https://files.pythonhosted.org/packages/73/23/90e31ceeed1de63058a02cb04b12f2de4b40e3bef5e082a7c18d9c8ae281/contourpy-1.3.3-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:348ac1f5d4f1d66d3322420f01d42e43122f43616e0f194fc1c9f5d830c5b286", size = 334672, upload-time = "2025-07-26T12:01:41.942Z" }, + { url = "https://files.pythonhosted.org/packages/ed/93/b43d8acbe67392e659e1d984700e79eb67e2acb2bd7f62012b583a7f1b55/contourpy-1.3.3-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:655456777ff65c2c548b7c454af9c6f33f16c8884f11083244b5819cc214f1b5", size = 381234, upload-time = "2025-07-26T12:01:43.499Z" }, + { url = "https://files.pythonhosted.org/packages/46/3b/bec82a3ea06f66711520f75a40c8fc0b113b2a75edb36aa633eb11c4f50f/contourpy-1.3.3-cp313-cp313-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:644a6853d15b2512d67881586bd03f462c7ab755db95f16f14d7e238f2852c67", size = 385169, upload-time = "2025-07-26T12:01:45.219Z" }, + { url = "https://files.pythonhosted.org/packages/4b/32/e0f13a1c5b0f8572d0ec6ae2f6c677b7991fafd95da523159c19eff0696a/contourpy-1.3.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4debd64f124ca62069f313a9cb86656ff087786016d76927ae2cf37846b006c9", size = 362859, upload-time = "2025-07-26T12:01:46.519Z" }, + { url = "https://files.pythonhosted.org/packages/33/71/e2a7945b7de4e58af42d708a219f3b2f4cff7386e6b6ab0a0fa0033c49a9/contourpy-1.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a15459b0f4615b00bbd1e91f1b9e19b7e63aea7483d03d804186f278c0af2659", size = 1332062, upload-time = "2025-07-26T12:01:48.964Z" }, + { url = "https://files.pythonhosted.org/packages/12/fc/4e87ac754220ccc0e807284f88e943d6d43b43843614f0a8afa469801db0/contourpy-1.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ca0fdcd73925568ca027e0b17ab07aad764be4706d0a925b89227e447d9737b7", size = 1403932, upload-time = "2025-07-26T12:01:51.979Z" }, + { url = "https://files.pythonhosted.org/packages/a6/2e/adc197a37443f934594112222ac1aa7dc9a98faf9c3842884df9a9d8751d/contourpy-1.3.3-cp313-cp313-win32.whl", hash = "sha256:b20c7c9a3bf701366556e1b1984ed2d0cedf999903c51311417cf5f591d8c78d", size = 185024, upload-time = "2025-07-26T12:01:53.245Z" }, + { url = "https://files.pythonhosted.org/packages/18/0b/0098c214843213759692cc638fce7de5c289200a830e5035d1791d7a2338/contourpy-1.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:1cadd8b8969f060ba45ed7c1b714fe69185812ab43bd6b86a9123fe8f99c3263", size = 226578, upload-time = "2025-07-26T12:01:54.422Z" }, + { url = "https://files.pythonhosted.org/packages/8a/9a/2f6024a0c5995243cd63afdeb3651c984f0d2bc727fd98066d40e141ad73/contourpy-1.3.3-cp313-cp313-win_arm64.whl", hash = "sha256:fd914713266421b7536de2bfa8181aa8c699432b6763a0ea64195ebe28bff6a9", size = 193524, upload-time = "2025-07-26T12:01:55.73Z" }, + { url = "https://files.pythonhosted.org/packages/c0/b3/f8a1a86bd3298513f500e5b1f5fd92b69896449f6cab6a146a5d52715479/contourpy-1.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:88df9880d507169449d434c293467418b9f6cbe82edd19284aa0409e7fdb933d", size = 306730, upload-time = "2025-07-26T12:01:57.051Z" }, + { url = "https://files.pythonhosted.org/packages/3f/11/4780db94ae62fc0c2053909b65dc3246bd7cecfc4f8a20d957ad43aa4ad8/contourpy-1.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:d06bb1f751ba5d417047db62bca3c8fde202b8c11fb50742ab3ab962c81e8216", size = 287897, upload-time = "2025-07-26T12:01:58.663Z" }, + { url = "https://files.pythonhosted.org/packages/ae/15/e59f5f3ffdd6f3d4daa3e47114c53daabcb18574a26c21f03dc9e4e42ff0/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e4e6b05a45525357e382909a4c1600444e2a45b4795163d3b22669285591c1ae", size = 326751, upload-time = "2025-07-26T12:02:00.343Z" }, + { url = "https://files.pythonhosted.org/packages/0f/81/03b45cfad088e4770b1dcf72ea78d3802d04200009fb364d18a493857210/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ab3074b48c4e2cf1a960e6bbeb7f04566bf36b1861d5c9d4d8ac04b82e38ba20", size = 375486, upload-time = "2025-07-26T12:02:02.128Z" }, + { url = "https://files.pythonhosted.org/packages/0c/ba/49923366492ffbdd4486e970d421b289a670ae8cf539c1ea9a09822b371a/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6c3d53c796f8647d6deb1abe867daeb66dcc8a97e8455efa729516b997b8ed99", size = 388106, upload-time = "2025-07-26T12:02:03.615Z" }, + { url = "https://files.pythonhosted.org/packages/9f/52/5b00ea89525f8f143651f9f03a0df371d3cbd2fccd21ca9b768c7a6500c2/contourpy-1.3.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:50ed930df7289ff2a8d7afeb9603f8289e5704755c7e5c3bbd929c90c817164b", size = 352548, upload-time = "2025-07-26T12:02:05.165Z" }, + { url = "https://files.pythonhosted.org/packages/32/1d/a209ec1a3a3452d490f6b14dd92e72280c99ae3d1e73da74f8277d4ee08f/contourpy-1.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4feffb6537d64b84877da813a5c30f1422ea5739566abf0bd18065ac040e120a", size = 1322297, upload-time = "2025-07-26T12:02:07.379Z" }, + { url = "https://files.pythonhosted.org/packages/bc/9e/46f0e8ebdd884ca0e8877e46a3f4e633f6c9c8c4f3f6e72be3fe075994aa/contourpy-1.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2b7e9480ffe2b0cd2e787e4df64270e3a0440d9db8dc823312e2c940c167df7e", size = 1391023, upload-time = "2025-07-26T12:02:10.171Z" }, + { url = "https://files.pythonhosted.org/packages/b9/70/f308384a3ae9cd2209e0849f33c913f658d3326900d0ff5d378d6a1422d2/contourpy-1.3.3-cp313-cp313t-win32.whl", hash = "sha256:283edd842a01e3dcd435b1c5116798d661378d83d36d337b8dde1d16a5fc9ba3", size = 196157, upload-time = "2025-07-26T12:02:11.488Z" }, + { url = "https://files.pythonhosted.org/packages/b2/dd/880f890a6663b84d9e34a6f88cded89d78f0091e0045a284427cb6b18521/contourpy-1.3.3-cp313-cp313t-win_amd64.whl", hash = "sha256:87acf5963fc2b34825e5b6b048f40e3635dd547f590b04d2ab317c2619ef7ae8", size = 240570, upload-time = "2025-07-26T12:02:12.754Z" }, + { url = "https://files.pythonhosted.org/packages/80/99/2adc7d8ffead633234817ef8e9a87115c8a11927a94478f6bb3d3f4d4f7d/contourpy-1.3.3-cp313-cp313t-win_arm64.whl", hash = "sha256:3c30273eb2a55024ff31ba7d052dde990d7d8e5450f4bbb6e913558b3d6c2301", size = 199713, upload-time = "2025-07-26T12:02:14.4Z" }, + { url = "https://files.pythonhosted.org/packages/a5/29/8dcfe16f0107943fa92388c23f6e05cff0ba58058c4c95b00280d4c75a14/contourpy-1.3.3-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cd5dfcaeb10f7b7f9dc8941717c6c2ade08f587be2226222c12b25f0483ed497", size = 278809, upload-time = "2025-07-26T12:02:52.74Z" }, + { url = "https://files.pythonhosted.org/packages/85/a9/8b37ef4f7dafeb335daee3c8254645ef5725be4d9c6aa70b50ec46ef2f7e/contourpy-1.3.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:0c1fc238306b35f246d61a1d416a627348b5cf0648648a031e14bb8705fcdfe8", size = 261593, upload-time = "2025-07-26T12:02:54.037Z" }, + { url = "https://files.pythonhosted.org/packages/0a/59/ebfb8c677c75605cc27f7122c90313fd2f375ff3c8d19a1694bda74aaa63/contourpy-1.3.3-pp311-pypy311_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:70f9aad7de812d6541d29d2bbf8feb22ff7e1c299523db288004e3157ff4674e", size = 302202, upload-time = "2025-07-26T12:02:55.947Z" }, + { url = "https://files.pythonhosted.org/packages/3c/37/21972a15834d90bfbfb009b9d004779bd5a07a0ec0234e5ba8f64d5736f4/contourpy-1.3.3-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5ed3657edf08512fc3fe81b510e35c2012fbd3081d2e26160f27ca28affec989", size = 329207, upload-time = "2025-07-26T12:02:57.468Z" }, + { url = "https://files.pythonhosted.org/packages/0c/58/bd257695f39d05594ca4ad60df5bcb7e32247f9951fd09a9b8edb82d1daa/contourpy-1.3.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:3d1a3799d62d45c18bafd41c5fa05120b96a28079f2393af559b843d1a966a77", size = 225315, upload-time = "2025-07-26T12:02:58.801Z" }, +] + +[[package]] +name = "cycler" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615, upload-time = "2023-10-07T05:32:18.335Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321, upload-time = "2023-10-07T05:32:16.783Z" }, +] + +[[package]] +name = "dataclasses-json" +version = "0.6.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "marshmallow" }, + { name = "typing-inspect" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/64/a4/f71d9cf3a5ac257c993b5ca3f93df5f7fb395c725e7f1e6479d2514173c3/dataclasses_json-0.6.7.tar.gz", hash = "sha256:b6b3e528266ea45b9535223bc53ca645f5208833c29229e847b3f26a1cc55fc0", size = 32227, upload-time = "2024-06-09T16:20:19.103Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c3/be/d0d44e092656fe7a06b55e6103cbce807cdbdee17884a5367c68c9860853/dataclasses_json-0.6.7-py3-none-any.whl", hash = "sha256:0dbf33f26c8d5305befd61b39d2b3414e8a407bedc2834dea9b8d642666fb40a", size = 28686, upload-time = "2024-06-09T16:20:16.715Z" }, +] + +[[package]] +name = "debugpy" +version = "1.8.15" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8c/8b/3a9a28ddb750a76eaec445c7f4d3147ea2c579a97dbd9e25d39001b92b21/debugpy-1.8.15.tar.gz", hash = "sha256:58d7a20b7773ab5ee6bdfb2e6cf622fdf1e40c9d5aef2857d85391526719ac00", size = 1643279, upload-time = "2025-07-15T16:43:29.135Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/b3/1c44a2ed311199ab11c2299c9474a6c7cd80d19278defd333aeb7c287995/debugpy-1.8.15-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:babc4fb1962dd6a37e94d611280e3d0d11a1f5e6c72ac9b3d87a08212c4b6dd3", size = 2183442, upload-time = "2025-07-15T16:43:36.733Z" }, + { url = "https://files.pythonhosted.org/packages/f6/69/e2dcb721491e1c294d348681227c9b44fb95218f379aa88e12a19d85528d/debugpy-1.8.15-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f778e68f2986a58479d0ac4f643e0b8c82fdd97c2e200d4d61e7c2d13838eb53", size = 3134215, upload-time = "2025-07-15T16:43:38.116Z" }, + { url = "https://files.pythonhosted.org/packages/17/76/4ce63b95d8294dcf2fd1820860b300a420d077df4e93afcaa25a984c2ca7/debugpy-1.8.15-cp311-cp311-win32.whl", hash = "sha256:f9d1b5abd75cd965e2deabb1a06b0e93a1546f31f9f621d2705e78104377c702", size = 5154037, upload-time = "2025-07-15T16:43:39.471Z" }, + { url = "https://files.pythonhosted.org/packages/c2/a7/e5a7c784465eb9c976d84408873d597dc7ce74a0fc69ed009548a1a94813/debugpy-1.8.15-cp311-cp311-win_amd64.whl", hash = "sha256:62954fb904bec463e2b5a415777f6d1926c97febb08ef1694da0e5d1463c5c3b", size = 5178133, upload-time = "2025-07-15T16:43:40.969Z" }, + { url = "https://files.pythonhosted.org/packages/ab/4a/4508d256e52897f5cdfee6a6d7580974811e911c6d01321df3264508a5ac/debugpy-1.8.15-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:3dcc7225cb317469721ab5136cda9ff9c8b6e6fb43e87c9e15d5b108b99d01ba", size = 2511197, upload-time = "2025-07-15T16:43:42.343Z" }, + { url = "https://files.pythonhosted.org/packages/99/8d/7f6ef1097e7fecf26b4ef72338d08e41644a41b7ee958a19f494ffcffc29/debugpy-1.8.15-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:047a493ca93c85ccede1dbbaf4e66816794bdc214213dde41a9a61e42d27f8fc", size = 4229517, upload-time = "2025-07-15T16:43:44.14Z" }, + { url = "https://files.pythonhosted.org/packages/3f/e8/e8c6a9aa33a9c9c6dacbf31747384f6ed2adde4de2e9693c766bdf323aa3/debugpy-1.8.15-cp312-cp312-win32.whl", hash = "sha256:b08e9b0bc260cf324c890626961dad4ffd973f7568fbf57feb3c3a65ab6b6327", size = 5276132, upload-time = "2025-07-15T16:43:45.529Z" }, + { url = "https://files.pythonhosted.org/packages/e9/ad/231050c6177b3476b85fcea01e565dac83607b5233d003ff067e2ee44d8f/debugpy-1.8.15-cp312-cp312-win_amd64.whl", hash = "sha256:e2a4fe357c92334272eb2845fcfcdbec3ef9f22c16cf613c388ac0887aed15fa", size = 5317645, upload-time = "2025-07-15T16:43:46.968Z" }, + { url = "https://files.pythonhosted.org/packages/28/70/2928aad2310726d5920b18ed9f54b9f06df5aa4c10cf9b45fa18ff0ab7e8/debugpy-1.8.15-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:f5e01291ad7d6649aed5773256c5bba7a1a556196300232de1474c3c372592bf", size = 2495538, upload-time = "2025-07-15T16:43:48.927Z" }, + { url = "https://files.pythonhosted.org/packages/9e/c6/9b8ffb4ca91fac8b2877eef63c9cc0e87dd2570b1120054c272815ec4cd0/debugpy-1.8.15-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94dc0f0d00e528d915e0ce1c78e771475b2335b376c49afcc7382ee0b146bab6", size = 4221874, upload-time = "2025-07-15T16:43:50.282Z" }, + { url = "https://files.pythonhosted.org/packages/55/8a/9b8d59674b4bf489318c7c46a1aab58e606e583651438084b7e029bf3c43/debugpy-1.8.15-cp313-cp313-win32.whl", hash = "sha256:fcf0748d4f6e25f89dc5e013d1129ca6f26ad4da405e0723a4f704583896a709", size = 5275949, upload-time = "2025-07-15T16:43:52.079Z" }, + { url = "https://files.pythonhosted.org/packages/72/83/9e58e6fdfa8710a5e6ec06c2401241b9ad48b71c0a7eb99570a1f1edb1d3/debugpy-1.8.15-cp313-cp313-win_amd64.whl", hash = "sha256:73c943776cb83e36baf95e8f7f8da765896fd94b05991e7bc162456d25500683", size = 5317720, upload-time = "2025-07-15T16:43:53.703Z" }, + { url = "https://files.pythonhosted.org/packages/07/d5/98748d9860e767a1248b5e31ffa7ce8cb7006e97bf8abbf3d891d0a8ba4e/debugpy-1.8.15-py2.py3-none-any.whl", hash = "sha256:bce2e6c5ff4f2e00b98d45e7e01a49c7b489ff6df5f12d881c67d2f1ac635f3d", size = 5282697, upload-time = "2025-07-15T16:44:07.996Z" }, +] + +[[package]] +name = "decorator" +version = "5.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711, upload-time = "2025-02-24T04:41:34.073Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload-time = "2025-02-24T04:41:32.565Z" }, +] + +[[package]] +name = "deep-research" +version = "0.1.0" +source = { editable = "." } +dependencies = [ + { name = "beautifulsoup4" }, + { name = "duckduckgo-search" }, + { name = "fastapi" }, + { name = "google-genai" }, + { name = "googlesearch-python" }, + { name = "ipykernel" }, + { name = "jupyter" }, + { name = "langchain" }, + { name = "langchain-community" }, + { name = "langchain-google-genai" }, + { name = "langchain-mcp-adapters" }, + { name = "langchain-openai" }, + { name = "langchain-tavily" }, + { name = "langchain-upstage" }, + { name = "langgraph" }, + { name = "matplotlib" }, + { name = "pandas" }, + { name = "playwright" }, + { name = "pydantic" }, + { name = "pydantic-settings" }, + { name = "python-dotenv" }, + { name = "requests" }, + { name = "rich" }, + { name = "sse-starlette" }, + { name = "starlette" }, + { name = "tavily-python" }, + { name = "uvicorn" }, + { name = "wikipedia-api" }, +] + +[package.optional-dependencies] +dev = [ + { name = "mypy" }, + { name = "ruff" }, +] + +[package.metadata] +requires-dist = [ + { name = "beautifulsoup4", specifier = ">=4.13.4" }, + { name = "duckduckgo-search", specifier = ">=8.1.1" }, + { name = "fastapi", specifier = ">=0.121.2" }, + { name = "google-genai", specifier = ">=1.52.0" }, + { name = "googlesearch-python", specifier = ">=1.3.0" }, + { name = "ipykernel", specifier = ">=6.20.0" }, + { name = "jupyter", specifier = ">=1.0.0" }, + { name = "langchain", specifier = ">=0.1.0" }, + { name = "langchain-community", specifier = ">=0.2,<0.4" }, + { name = "langchain-google-genai", specifier = ">=2.1.12" }, + { name = "langchain-mcp-adapters", specifier = ">=0.1.11" }, + { name = "langchain-openai", specifier = ">=0.3.0,<0.4.0" }, + { name = "langchain-tavily", specifier = ">=0.2.12" }, + { name = "langchain-upstage", specifier = ">=0.7.4" }, + { name = "langgraph", specifier = ">=1.0.0" }, + { name = "matplotlib", specifier = ">=3.10.7" }, + { name = "mypy", marker = "extra == 'dev'", specifier = ">=1.11.1" }, + { name = "pandas", specifier = ">=2.3.3" }, + { name = "playwright", specifier = ">=1.56.0" }, + { name = "pydantic", specifier = ">=2.0.0" }, + { name = "pydantic-settings", specifier = ">=2.10.1" }, + { name = "python-dotenv", specifier = ">=1.1.1" }, + { name = "requests", specifier = ">=2.32.5" }, + { name = "rich", specifier = ">=14.0.0" }, + { name = "ruff", marker = "extra == 'dev'", specifier = ">=0.6.1" }, + { name = "sse-starlette", specifier = ">=2.4.1" }, + { name = "starlette", specifier = ">=0.47.2" }, + { name = "tavily-python", specifier = ">=0.5.0" }, + { name = "uvicorn", specifier = ">=0.35.0" }, + { name = "wikipedia-api", specifier = ">=0.8.1" }, +] +provides-extras = ["dev"] + +[[package]] +name = "defusedxml" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520, upload-time = "2021-03-08T10:59:26.269Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604, upload-time = "2021-03-08T10:59:24.45Z" }, +] + +[[package]] +name = "distro" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fc/f8/98eea607f65de6527f8a2e8885fc8015d3e6f5775df186e443e0964a11c3/distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed", size = 60722, upload-time = "2023-12-24T09:54:32.31Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2", size = 20277, upload-time = "2023-12-24T09:54:30.421Z" }, +] + +[[package]] +name = "duckduckgo-search" +version = "8.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "lxml" }, + { name = "primp" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/10/ef/07791a05751e6cc9de1dd49fb12730259ee109b18e6d097e25e6c32d5617/duckduckgo_search-8.1.1.tar.gz", hash = "sha256:9da91c9eb26a17e016ea1da26235d40404b46b0565ea86d75a9f78cc9441f935", size = 22868, upload-time = "2025-07-06T15:30:59.73Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/db/72/c027b3b488b1010cf71670032fcf7e681d44b81829d484bb04e31a949a8d/duckduckgo_search-8.1.1-py3-none-any.whl", hash = "sha256:f48adbb06626ee05918f7e0cef3a45639e9939805c4fc179e68c48a12f1b5062", size = 18932, upload-time = "2025-07-06T15:30:58.339Z" }, +] + +[[package]] +name = "executing" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/91/50/a9d80c47ff289c611ff12e63f7c5d13942c65d68125160cefd768c73e6e4/executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755", size = 978693, upload-time = "2025-01-22T15:41:29.403Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702, upload-time = "2025-01-22T15:41:25.929Z" }, +] + +[[package]] +name = "fastapi" +version = "0.121.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-doc" }, + { name = "pydantic" }, + { name = "starlette" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fb/48/f08f264da34cf160db82c62ffb335e838b1fc16cbcc905f474c7d4c815db/fastapi-0.121.2.tar.gz", hash = "sha256:ca8e932b2b823ec1721c641e3669472c855ad9564a2854c9899d904c2848b8b9", size = 342944, upload-time = "2025-11-13T17:05:54.692Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/23/dfb161e91db7c92727db505dc72a384ee79681fe0603f706f9f9f52c2901/fastapi-0.121.2-py3-none-any.whl", hash = "sha256:f2d80b49a86a846b70cc3a03eb5ea6ad2939298bf6a7fe377aa9cd3dd079d358", size = 109201, upload-time = "2025-11-13T17:05:52.718Z" }, +] + +[[package]] +name = "fastjsonschema" +version = "2.21.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", size = 373939, upload-time = "2024-12-02T10:55:15.133Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924, upload-time = "2024-12-02T10:55:07.599Z" }, +] + +[[package]] +name = "filelock" +version = "3.20.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/58/46/0028a82567109b5ef6e4d2a1f04a583fb513e6cf9527fcdd09afd817deeb/filelock-3.20.0.tar.gz", hash = "sha256:711e943b4ec6be42e1d4e6690b48dc175c822967466bb31c0c293f34334c13f4", size = 18922, upload-time = "2025-10-08T18:03:50.056Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/91/7216b27286936c16f5b4d0c530087e4a54eead683e6b0b73dd0c64844af6/filelock-3.20.0-py3-none-any.whl", hash = "sha256:339b4732ffda5cd79b13f4e2711a31b0365ce445d95d243bb996273d072546a2", size = 16054, upload-time = "2025-10-08T18:03:48.35Z" }, +] + +[[package]] +name = "filetype" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/29/745f7d30d47fe0f251d3ad3dc2978a23141917661998763bebb6da007eb1/filetype-1.2.0.tar.gz", hash = "sha256:66b56cd6474bf41d8c54660347d37afcc3f7d1970648de365c102ef77548aadb", size = 998020, upload-time = "2022-11-02T17:34:04.141Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/79/1b8fa1bb3568781e84c9200f951c735f3f157429f44be0495da55894d620/filetype-1.2.0-py2.py3-none-any.whl", hash = "sha256:7ce71b6880181241cf7ac8697a2f1eb6a8bd9b429f7ad6d27b8db9ba5f1c2d25", size = 19970, upload-time = "2022-11-02T17:34:01.425Z" }, +] + +[[package]] +name = "fonttools" +version = "4.61.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/33/f9/0e84d593c0e12244150280a630999835a64f2852276161b62a0f98318de0/fonttools-4.61.0.tar.gz", hash = "sha256:ec520a1f0c7758d7a858a00f090c1745f6cde6a7c5e76fb70ea4044a15f712e7", size = 3561884, upload-time = "2025-11-28T17:05:49.491Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/be/5aa89cdddf2863d8afbdc19eb8ec5d8d35d40eeeb8e6cf52c5ff1c2dbd33/fonttools-4.61.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a32a16951cbf113d38f1dd8551b277b6e06e0f6f776fece0f99f746d739e1be3", size = 2847553, upload-time = "2025-11-28T17:04:30.539Z" }, + { url = "https://files.pythonhosted.org/packages/0d/3e/6ff643b07cead1236a534f51291ae2981721cf419135af5b740c002a66dd/fonttools-4.61.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:328a9c227984bebaf69f3ac9062265f8f6acc7ddf2e4e344c63358579af0aa3d", size = 2388298, upload-time = "2025-11-28T17:04:32.161Z" }, + { url = "https://files.pythonhosted.org/packages/c3/15/fca8dfbe7b482e6f240b1aad0ed7c6e2e75e7a28efa3d3a03b570617b5e5/fonttools-4.61.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2f0bafc8a3b3749c69cc610e5aa3da832d39c2a37a68f03d18ec9a02ecaac04a", size = 5054133, upload-time = "2025-11-28T17:04:34.035Z" }, + { url = "https://files.pythonhosted.org/packages/6a/a2/821c61c691b21fd09e07528a9a499cc2b075ac83ddb644aa16c9875a64bc/fonttools-4.61.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b5ca59b7417d149cf24e4c1933c9f44b2957424fc03536f132346d5242e0ebe5", size = 5031410, upload-time = "2025-11-28T17:04:36.141Z" }, + { url = "https://files.pythonhosted.org/packages/e8/f6/8b16339e93d03c732c8a23edefe3061b17a5f9107ddc47a3215ecd054cac/fonttools-4.61.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:df8cbce85cf482eb01f4551edca978c719f099c623277bda8332e5dbe7dba09d", size = 5030005, upload-time = "2025-11-28T17:04:38.314Z" }, + { url = "https://files.pythonhosted.org/packages/ac/eb/d4e150427bdaa147755239c931bbce829a88149ade5bfd8a327afe565567/fonttools-4.61.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7fb5b84f48a6a733ca3d7f41aa9551908ccabe8669ffe79586560abcc00a9cfd", size = 5154026, upload-time = "2025-11-28T17:04:40.34Z" }, + { url = "https://files.pythonhosted.org/packages/7f/5f/3dd00ce0dba6759943c707b1830af8c0bcf6f8f1a9fe46cb82e7ac2aaa74/fonttools-4.61.0-cp311-cp311-win32.whl", hash = "sha256:787ef9dfd1ea9fe49573c272412ae5f479d78e671981819538143bec65863865", size = 2276035, upload-time = "2025-11-28T17:04:42.59Z" }, + { url = "https://files.pythonhosted.org/packages/4e/44/798c472f096ddf12955eddb98f4f7c906e7497695d04ce073ddf7161d134/fonttools-4.61.0-cp311-cp311-win_amd64.whl", hash = "sha256:14fafda386377b6131d9e448af42d0926bad47e038de0e5ba1d58c25d621f028", size = 2327290, upload-time = "2025-11-28T17:04:44.57Z" }, + { url = "https://files.pythonhosted.org/packages/00/5d/19e5939f773c7cb05480fe2e881d63870b63ee2b4bdb9a77d55b1d36c7b9/fonttools-4.61.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e24a1565c4e57111ec7f4915f8981ecbb61adf66a55f378fdc00e206059fcfef", size = 2846930, upload-time = "2025-11-28T17:04:46.639Z" }, + { url = "https://files.pythonhosted.org/packages/25/b2/0658faf66f705293bd7e739a4f038302d188d424926be9c59bdad945664b/fonttools-4.61.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e2bfacb5351303cae9f072ccf3fc6ecb437a6f359c0606bae4b1ab6715201d87", size = 2383016, upload-time = "2025-11-28T17:04:48.525Z" }, + { url = "https://files.pythonhosted.org/packages/29/a3/1fa90b95b690f0d7541f48850adc40e9019374d896c1b8148d15012b2458/fonttools-4.61.0-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:0bdcf2e29d65c26299cc3d502f4612365e8b90a939f46cd92d037b6cb7bb544a", size = 4949425, upload-time = "2025-11-28T17:04:50.482Z" }, + { url = "https://files.pythonhosted.org/packages/af/00/acf18c00f6c501bd6e05ee930f926186f8a8e268265407065688820f1c94/fonttools-4.61.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e6cd0d9051b8ddaf7385f99dd82ec2a058e2b46cf1f1961e68e1ff20fcbb61af", size = 4999632, upload-time = "2025-11-28T17:04:52.508Z" }, + { url = "https://files.pythonhosted.org/packages/5f/e0/19a2b86e54109b1d2ee8743c96a1d297238ae03243897bc5345c0365f34d/fonttools-4.61.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e074bc07c31406f45c418e17c1722e83560f181d122c412fa9e815df0ff74810", size = 4939438, upload-time = "2025-11-28T17:04:54.437Z" }, + { url = "https://files.pythonhosted.org/packages/04/35/7b57a5f57d46286360355eff8d6b88c64ab6331107f37a273a71c803798d/fonttools-4.61.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5a9b78da5d5faa17e63b2404b77feeae105c1b7e75f26020ab7a27b76e02039f", size = 5088960, upload-time = "2025-11-28T17:04:56.348Z" }, + { url = "https://files.pythonhosted.org/packages/3e/0e/6c5023eb2e0fe5d1ababc7e221e44acd3ff668781489cc1937a6f83d620a/fonttools-4.61.0-cp312-cp312-win32.whl", hash = "sha256:9821ed77bb676736b88fa87a737c97b6af06e8109667e625a4f00158540ce044", size = 2264404, upload-time = "2025-11-28T17:04:58.149Z" }, + { url = "https://files.pythonhosted.org/packages/36/0b/63273128c7c5df19b1e4cd92e0a1e6ea5bb74a400c4905054c96ad60a675/fonttools-4.61.0-cp312-cp312-win_amd64.whl", hash = "sha256:0011d640afa61053bc6590f9a3394bd222de7cfde19346588beabac374e9d8ac", size = 2314427, upload-time = "2025-11-28T17:04:59.812Z" }, + { url = "https://files.pythonhosted.org/packages/17/45/334f0d7f181e5473cfb757e1b60f4e60e7fc64f28d406e5d364a952718c0/fonttools-4.61.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba774b8cbd8754f54b8eb58124e8bd45f736b2743325ab1a5229698942b9b433", size = 2841801, upload-time = "2025-11-28T17:05:01.621Z" }, + { url = "https://files.pythonhosted.org/packages/cc/63/97b9c78e1f79bc741d4efe6e51f13872d8edb2b36e1b9fb2bab0d4491bb7/fonttools-4.61.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c84b430616ed73ce46e9cafd0bf0800e366a3e02fb7e1ad7c1e214dbe3862b1f", size = 2379024, upload-time = "2025-11-28T17:05:03.668Z" }, + { url = "https://files.pythonhosted.org/packages/4e/80/c87bc524a90dbeb2a390eea23eae448286983da59b7e02c67fa0ca96a8c5/fonttools-4.61.0-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b2b734d8391afe3c682320840c8191de9bd24e7eb85768dd4dc06ed1b63dbb1b", size = 4923706, upload-time = "2025-11-28T17:05:05.494Z" }, + { url = "https://files.pythonhosted.org/packages/6d/f6/a3b0374811a1de8c3f9207ec88f61ad1bb96f938ed89babae26c065c2e46/fonttools-4.61.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a5c5fff72bf31b0e558ed085e4fd7ed96eb85881404ecc39ed2a779e7cf724eb", size = 4979751, upload-time = "2025-11-28T17:05:07.665Z" }, + { url = "https://files.pythonhosted.org/packages/a5/3b/30f63b4308b449091573285f9d27619563a84f399946bca3eadc9554afbe/fonttools-4.61.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:14a290c5c93fcab76b7f451e6a4b7721b712d90b3b5ed6908f1abcf794e90d6d", size = 4921113, upload-time = "2025-11-28T17:05:09.551Z" }, + { url = "https://files.pythonhosted.org/packages/41/6c/58e6e9b7d9d8bf2d7010bd7bb493060b39b02a12d1cda64a8bfb116ce760/fonttools-4.61.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:13e3e20a5463bfeb77b3557d04b30bd6a96a6bb5c15c7b2e7908903e69d437a0", size = 5063183, upload-time = "2025-11-28T17:05:11.677Z" }, + { url = "https://files.pythonhosted.org/packages/3f/e3/52c790ab2b07492df059947a1fd7778e105aac5848c0473029a4d20481a2/fonttools-4.61.0-cp313-cp313-win32.whl", hash = "sha256:6781e7a4bb010be1cd69a29927b0305c86b843395f2613bdabe115f7d6ea7f34", size = 2263159, upload-time = "2025-11-28T17:05:13.292Z" }, + { url = "https://files.pythonhosted.org/packages/e9/1f/116013b200fbeba871046554d5d2a45fefa69a05c40e9cdfd0d4fff53edc/fonttools-4.61.0-cp313-cp313-win_amd64.whl", hash = "sha256:c53b47834ae41e8e4829171cc44fec0fdf125545a15f6da41776b926b9645a9a", size = 2313530, upload-time = "2025-11-28T17:05:14.848Z" }, + { url = "https://files.pythonhosted.org/packages/0c/14/634f7daea5ffe6a5f7a0322ba8e1a0e23c9257b80aa91458107896d1dfc7/fonttools-4.61.0-py3-none-any.whl", hash = "sha256:276f14c560e6f98d24ef7f5f44438e55ff5a67f78fa85236b218462c9f5d0635", size = 1144485, upload-time = "2025-11-28T17:05:47.573Z" }, +] + +[[package]] +name = "fqdn" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/30/3e/a80a8c077fd798951169626cde3e239adeba7dab75deb3555716415bd9b0/fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f", size = 6015, upload-time = "2021-03-11T07:16:29.08Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014", size = 9121, upload-time = "2021-03-11T07:16:28.351Z" }, +] + +[[package]] +name = "frozenlist" +version = "1.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/79/b1/b64018016eeb087db503b038296fd782586432b9c077fc5c7839e9cb6ef6/frozenlist-1.7.0.tar.gz", hash = "sha256:2e310d81923c2437ea8670467121cc3e9b0f76d3043cc1d2331d56c7fb7a3a8f", size = 45078, upload-time = "2025-06-09T23:02:35.538Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/34/7e/803dde33760128acd393a27eb002f2020ddb8d99d30a44bfbaab31c5f08a/frozenlist-1.7.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:aa51e147a66b2d74de1e6e2cf5921890de6b0f4820b257465101d7f37b49fb5a", size = 82251, upload-time = "2025-06-09T23:00:16.279Z" }, + { url = "https://files.pythonhosted.org/packages/75/a9/9c2c5760b6ba45eae11334db454c189d43d34a4c0b489feb2175e5e64277/frozenlist-1.7.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9b35db7ce1cd71d36ba24f80f0c9e7cff73a28d7a74e91fe83e23d27c7828750", size = 48183, upload-time = "2025-06-09T23:00:17.698Z" }, + { url = "https://files.pythonhosted.org/packages/47/be/4038e2d869f8a2da165f35a6befb9158c259819be22eeaf9c9a8f6a87771/frozenlist-1.7.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:34a69a85e34ff37791e94542065c8416c1afbf820b68f720452f636d5fb990cd", size = 47107, upload-time = "2025-06-09T23:00:18.952Z" }, + { url = "https://files.pythonhosted.org/packages/79/26/85314b8a83187c76a37183ceed886381a5f992975786f883472fcb6dc5f2/frozenlist-1.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a646531fa8d82c87fe4bb2e596f23173caec9185bfbca5d583b4ccfb95183e2", size = 237333, upload-time = "2025-06-09T23:00:20.275Z" }, + { url = "https://files.pythonhosted.org/packages/1f/fd/e5b64f7d2c92a41639ffb2ad44a6a82f347787abc0c7df5f49057cf11770/frozenlist-1.7.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:79b2ffbba483f4ed36a0f236ccb85fbb16e670c9238313709638167670ba235f", size = 231724, upload-time = "2025-06-09T23:00:21.705Z" }, + { url = "https://files.pythonhosted.org/packages/20/fb/03395c0a43a5976af4bf7534759d214405fbbb4c114683f434dfdd3128ef/frozenlist-1.7.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a26f205c9ca5829cbf82bb2a84b5c36f7184c4316617d7ef1b271a56720d6b30", size = 245842, upload-time = "2025-06-09T23:00:23.148Z" }, + { url = "https://files.pythonhosted.org/packages/d0/15/c01c8e1dffdac5d9803507d824f27aed2ba76b6ed0026fab4d9866e82f1f/frozenlist-1.7.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bcacfad3185a623fa11ea0e0634aac7b691aa925d50a440f39b458e41c561d98", size = 239767, upload-time = "2025-06-09T23:00:25.103Z" }, + { url = "https://files.pythonhosted.org/packages/14/99/3f4c6fe882c1f5514b6848aa0a69b20cb5e5d8e8f51a339d48c0e9305ed0/frozenlist-1.7.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:72c1b0fe8fe451b34f12dce46445ddf14bd2a5bcad7e324987194dc8e3a74c86", size = 224130, upload-time = "2025-06-09T23:00:27.061Z" }, + { url = "https://files.pythonhosted.org/packages/4d/83/220a374bd7b2aeba9d0725130665afe11de347d95c3620b9b82cc2fcab97/frozenlist-1.7.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61d1a5baeaac6c0798ff6edfaeaa00e0e412d49946c53fae8d4b8e8b3566c4ae", size = 235301, upload-time = "2025-06-09T23:00:29.02Z" }, + { url = "https://files.pythonhosted.org/packages/03/3c/3e3390d75334a063181625343e8daab61b77e1b8214802cc4e8a1bb678fc/frozenlist-1.7.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7edf5c043c062462f09b6820de9854bf28cc6cc5b6714b383149745e287181a8", size = 234606, upload-time = "2025-06-09T23:00:30.514Z" }, + { url = "https://files.pythonhosted.org/packages/23/1e/58232c19608b7a549d72d9903005e2d82488f12554a32de2d5fb59b9b1ba/frozenlist-1.7.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:d50ac7627b3a1bd2dcef6f9da89a772694ec04d9a61b66cf87f7d9446b4a0c31", size = 248372, upload-time = "2025-06-09T23:00:31.966Z" }, + { url = "https://files.pythonhosted.org/packages/c0/a4/e4a567e01702a88a74ce8a324691e62a629bf47d4f8607f24bf1c7216e7f/frozenlist-1.7.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ce48b2fece5aeb45265bb7a58259f45027db0abff478e3077e12b05b17fb9da7", size = 229860, upload-time = "2025-06-09T23:00:33.375Z" }, + { url = "https://files.pythonhosted.org/packages/73/a6/63b3374f7d22268b41a9db73d68a8233afa30ed164c46107b33c4d18ecdd/frozenlist-1.7.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:fe2365ae915a1fafd982c146754e1de6ab3478def8a59c86e1f7242d794f97d5", size = 245893, upload-time = "2025-06-09T23:00:35.002Z" }, + { url = "https://files.pythonhosted.org/packages/6d/eb/d18b3f6e64799a79673c4ba0b45e4cfbe49c240edfd03a68be20002eaeaa/frozenlist-1.7.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:45a6f2fdbd10e074e8814eb98b05292f27bad7d1883afbe009d96abdcf3bc898", size = 246323, upload-time = "2025-06-09T23:00:36.468Z" }, + { url = "https://files.pythonhosted.org/packages/5a/f5/720f3812e3d06cd89a1d5db9ff6450088b8f5c449dae8ffb2971a44da506/frozenlist-1.7.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:21884e23cffabb157a9dd7e353779077bf5b8f9a58e9b262c6caad2ef5f80a56", size = 233149, upload-time = "2025-06-09T23:00:37.963Z" }, + { url = "https://files.pythonhosted.org/packages/69/68/03efbf545e217d5db8446acfd4c447c15b7c8cf4dbd4a58403111df9322d/frozenlist-1.7.0-cp311-cp311-win32.whl", hash = "sha256:284d233a8953d7b24f9159b8a3496fc1ddc00f4db99c324bd5fb5f22d8698ea7", size = 39565, upload-time = "2025-06-09T23:00:39.753Z" }, + { url = "https://files.pythonhosted.org/packages/58/17/fe61124c5c333ae87f09bb67186d65038834a47d974fc10a5fadb4cc5ae1/frozenlist-1.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:387cbfdcde2f2353f19c2f66bbb52406d06ed77519ac7ee21be0232147c2592d", size = 44019, upload-time = "2025-06-09T23:00:40.988Z" }, + { url = "https://files.pythonhosted.org/packages/ef/a2/c8131383f1e66adad5f6ecfcce383d584ca94055a34d683bbb24ac5f2f1c/frozenlist-1.7.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3dbf9952c4bb0e90e98aec1bd992b3318685005702656bc6f67c1a32b76787f2", size = 81424, upload-time = "2025-06-09T23:00:42.24Z" }, + { url = "https://files.pythonhosted.org/packages/4c/9d/02754159955088cb52567337d1113f945b9e444c4960771ea90eb73de8db/frozenlist-1.7.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1f5906d3359300b8a9bb194239491122e6cf1444c2efb88865426f170c262cdb", size = 47952, upload-time = "2025-06-09T23:00:43.481Z" }, + { url = "https://files.pythonhosted.org/packages/01/7a/0046ef1bd6699b40acd2067ed6d6670b4db2f425c56980fa21c982c2a9db/frozenlist-1.7.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3dabd5a8f84573c8d10d8859a50ea2dec01eea372031929871368c09fa103478", size = 46688, upload-time = "2025-06-09T23:00:44.793Z" }, + { url = "https://files.pythonhosted.org/packages/d6/a2/a910bafe29c86997363fb4c02069df4ff0b5bc39d33c5198b4e9dd42d8f8/frozenlist-1.7.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa57daa5917f1738064f302bf2626281a1cb01920c32f711fbc7bc36111058a8", size = 243084, upload-time = "2025-06-09T23:00:46.125Z" }, + { url = "https://files.pythonhosted.org/packages/64/3e/5036af9d5031374c64c387469bfcc3af537fc0f5b1187d83a1cf6fab1639/frozenlist-1.7.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c193dda2b6d49f4c4398962810fa7d7c78f032bf45572b3e04dd5249dff27e08", size = 233524, upload-time = "2025-06-09T23:00:47.73Z" }, + { url = "https://files.pythonhosted.org/packages/06/39/6a17b7c107a2887e781a48ecf20ad20f1c39d94b2a548c83615b5b879f28/frozenlist-1.7.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfe2b675cf0aaa6d61bf8fbffd3c274b3c9b7b1623beb3809df8a81399a4a9c4", size = 248493, upload-time = "2025-06-09T23:00:49.742Z" }, + { url = "https://files.pythonhosted.org/packages/be/00/711d1337c7327d88c44d91dd0f556a1c47fb99afc060ae0ef66b4d24793d/frozenlist-1.7.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8fc5d5cda37f62b262405cf9652cf0856839c4be8ee41be0afe8858f17f4c94b", size = 244116, upload-time = "2025-06-09T23:00:51.352Z" }, + { url = "https://files.pythonhosted.org/packages/24/fe/74e6ec0639c115df13d5850e75722750adabdc7de24e37e05a40527ca539/frozenlist-1.7.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0d5ce521d1dd7d620198829b87ea002956e4319002ef0bc8d3e6d045cb4646e", size = 224557, upload-time = "2025-06-09T23:00:52.855Z" }, + { url = "https://files.pythonhosted.org/packages/8d/db/48421f62a6f77c553575201e89048e97198046b793f4a089c79a6e3268bd/frozenlist-1.7.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:488d0a7d6a0008ca0db273c542098a0fa9e7dfaa7e57f70acef43f32b3f69dca", size = 241820, upload-time = "2025-06-09T23:00:54.43Z" }, + { url = "https://files.pythonhosted.org/packages/1d/fa/cb4a76bea23047c8462976ea7b7a2bf53997a0ca171302deae9d6dd12096/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:15a7eaba63983d22c54d255b854e8108e7e5f3e89f647fc854bd77a237e767df", size = 236542, upload-time = "2025-06-09T23:00:56.409Z" }, + { url = "https://files.pythonhosted.org/packages/5d/32/476a4b5cfaa0ec94d3f808f193301debff2ea42288a099afe60757ef6282/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:1eaa7e9c6d15df825bf255649e05bd8a74b04a4d2baa1ae46d9c2d00b2ca2cb5", size = 249350, upload-time = "2025-06-09T23:00:58.468Z" }, + { url = "https://files.pythonhosted.org/packages/8d/ba/9a28042f84a6bf8ea5dbc81cfff8eaef18d78b2a1ad9d51c7bc5b029ad16/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e4389e06714cfa9d47ab87f784a7c5be91d3934cd6e9a7b85beef808297cc025", size = 225093, upload-time = "2025-06-09T23:01:00.015Z" }, + { url = "https://files.pythonhosted.org/packages/bc/29/3a32959e68f9cf000b04e79ba574527c17e8842e38c91d68214a37455786/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:73bd45e1488c40b63fe5a7df892baf9e2a4d4bb6409a2b3b78ac1c6236178e01", size = 245482, upload-time = "2025-06-09T23:01:01.474Z" }, + { url = "https://files.pythonhosted.org/packages/80/e8/edf2f9e00da553f07f5fa165325cfc302dead715cab6ac8336a5f3d0adc2/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:99886d98e1643269760e5fe0df31e5ae7050788dd288947f7f007209b8c33f08", size = 249590, upload-time = "2025-06-09T23:01:02.961Z" }, + { url = "https://files.pythonhosted.org/packages/1c/80/9a0eb48b944050f94cc51ee1c413eb14a39543cc4f760ed12657a5a3c45a/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:290a172aae5a4c278c6da8a96222e6337744cd9c77313efe33d5670b9f65fc43", size = 237785, upload-time = "2025-06-09T23:01:05.095Z" }, + { url = "https://files.pythonhosted.org/packages/f3/74/87601e0fb0369b7a2baf404ea921769c53b7ae00dee7dcfe5162c8c6dbf0/frozenlist-1.7.0-cp312-cp312-win32.whl", hash = "sha256:426c7bc70e07cfebc178bc4c2bf2d861d720c4fff172181eeb4a4c41d4ca2ad3", size = 39487, upload-time = "2025-06-09T23:01:06.54Z" }, + { url = "https://files.pythonhosted.org/packages/0b/15/c026e9a9fc17585a9d461f65d8593d281fedf55fbf7eb53f16c6df2392f9/frozenlist-1.7.0-cp312-cp312-win_amd64.whl", hash = "sha256:563b72efe5da92e02eb68c59cb37205457c977aa7a449ed1b37e6939e5c47c6a", size = 43874, upload-time = "2025-06-09T23:01:07.752Z" }, + { url = "https://files.pythonhosted.org/packages/24/90/6b2cebdabdbd50367273c20ff6b57a3dfa89bd0762de02c3a1eb42cb6462/frozenlist-1.7.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ee80eeda5e2a4e660651370ebffd1286542b67e268aa1ac8d6dbe973120ef7ee", size = 79791, upload-time = "2025-06-09T23:01:09.368Z" }, + { url = "https://files.pythonhosted.org/packages/83/2e/5b70b6a3325363293fe5fc3ae74cdcbc3e996c2a11dde2fd9f1fb0776d19/frozenlist-1.7.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d1a81c85417b914139e3a9b995d4a1c84559afc839a93cf2cb7f15e6e5f6ed2d", size = 47165, upload-time = "2025-06-09T23:01:10.653Z" }, + { url = "https://files.pythonhosted.org/packages/f4/25/a0895c99270ca6966110f4ad98e87e5662eab416a17e7fd53c364bf8b954/frozenlist-1.7.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cbb65198a9132ebc334f237d7b0df163e4de83fb4f2bdfe46c1e654bdb0c5d43", size = 45881, upload-time = "2025-06-09T23:01:12.296Z" }, + { url = "https://files.pythonhosted.org/packages/19/7c/71bb0bbe0832793c601fff68cd0cf6143753d0c667f9aec93d3c323f4b55/frozenlist-1.7.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dab46c723eeb2c255a64f9dc05b8dd601fde66d6b19cdb82b2e09cc6ff8d8b5d", size = 232409, upload-time = "2025-06-09T23:01:13.641Z" }, + { url = "https://files.pythonhosted.org/packages/c0/45/ed2798718910fe6eb3ba574082aaceff4528e6323f9a8570be0f7028d8e9/frozenlist-1.7.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6aeac207a759d0dedd2e40745575ae32ab30926ff4fa49b1635def65806fddee", size = 225132, upload-time = "2025-06-09T23:01:15.264Z" }, + { url = "https://files.pythonhosted.org/packages/ba/e2/8417ae0f8eacb1d071d4950f32f229aa6bf68ab69aab797b72a07ea68d4f/frozenlist-1.7.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bd8c4e58ad14b4fa7802b8be49d47993182fdd4023393899632c88fd8cd994eb", size = 237638, upload-time = "2025-06-09T23:01:16.752Z" }, + { url = "https://files.pythonhosted.org/packages/f8/b7/2ace5450ce85f2af05a871b8c8719b341294775a0a6c5585d5e6170f2ce7/frozenlist-1.7.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04fb24d104f425da3540ed83cbfc31388a586a7696142004c577fa61c6298c3f", size = 233539, upload-time = "2025-06-09T23:01:18.202Z" }, + { url = "https://files.pythonhosted.org/packages/46/b9/6989292c5539553dba63f3c83dc4598186ab2888f67c0dc1d917e6887db6/frozenlist-1.7.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6a5c505156368e4ea6b53b5ac23c92d7edc864537ff911d2fb24c140bb175e60", size = 215646, upload-time = "2025-06-09T23:01:19.649Z" }, + { url = "https://files.pythonhosted.org/packages/72/31/bc8c5c99c7818293458fe745dab4fd5730ff49697ccc82b554eb69f16a24/frozenlist-1.7.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8bd7eb96a675f18aa5c553eb7ddc24a43c8c18f22e1f9925528128c052cdbe00", size = 232233, upload-time = "2025-06-09T23:01:21.175Z" }, + { url = "https://files.pythonhosted.org/packages/59/52/460db4d7ba0811b9ccb85af996019f5d70831f2f5f255f7cc61f86199795/frozenlist-1.7.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:05579bf020096fe05a764f1f84cd104a12f78eaab68842d036772dc6d4870b4b", size = 227996, upload-time = "2025-06-09T23:01:23.098Z" }, + { url = "https://files.pythonhosted.org/packages/ba/c9/f4b39e904c03927b7ecf891804fd3b4df3db29b9e487c6418e37988d6e9d/frozenlist-1.7.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:376b6222d114e97eeec13d46c486facd41d4f43bab626b7c3f6a8b4e81a5192c", size = 242280, upload-time = "2025-06-09T23:01:24.808Z" }, + { url = "https://files.pythonhosted.org/packages/b8/33/3f8d6ced42f162d743e3517781566b8481322be321b486d9d262adf70bfb/frozenlist-1.7.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:0aa7e176ebe115379b5b1c95b4096fb1c17cce0847402e227e712c27bdb5a949", size = 217717, upload-time = "2025-06-09T23:01:26.28Z" }, + { url = "https://files.pythonhosted.org/packages/3e/e8/ad683e75da6ccef50d0ab0c2b2324b32f84fc88ceee778ed79b8e2d2fe2e/frozenlist-1.7.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3fbba20e662b9c2130dc771e332a99eff5da078b2b2648153a40669a6d0e36ca", size = 236644, upload-time = "2025-06-09T23:01:27.887Z" }, + { url = "https://files.pythonhosted.org/packages/b2/14/8d19ccdd3799310722195a72ac94ddc677541fb4bef4091d8e7775752360/frozenlist-1.7.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:f3f4410a0a601d349dd406b5713fec59b4cee7e71678d5b17edda7f4655a940b", size = 238879, upload-time = "2025-06-09T23:01:29.524Z" }, + { url = "https://files.pythonhosted.org/packages/ce/13/c12bf657494c2fd1079a48b2db49fa4196325909249a52d8f09bc9123fd7/frozenlist-1.7.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e2cdfaaec6a2f9327bf43c933c0319a7c429058e8537c508964a133dffee412e", size = 232502, upload-time = "2025-06-09T23:01:31.287Z" }, + { url = "https://files.pythonhosted.org/packages/d7/8b/e7f9dfde869825489382bc0d512c15e96d3964180c9499efcec72e85db7e/frozenlist-1.7.0-cp313-cp313-win32.whl", hash = "sha256:5fc4df05a6591c7768459caba1b342d9ec23fa16195e744939ba5914596ae3e1", size = 39169, upload-time = "2025-06-09T23:01:35.503Z" }, + { url = "https://files.pythonhosted.org/packages/35/89/a487a98d94205d85745080a37860ff5744b9820a2c9acbcdd9440bfddf98/frozenlist-1.7.0-cp313-cp313-win_amd64.whl", hash = "sha256:52109052b9791a3e6b5d1b65f4b909703984b770694d3eb64fad124c835d7cba", size = 43219, upload-time = "2025-06-09T23:01:36.784Z" }, + { url = "https://files.pythonhosted.org/packages/56/d5/5c4cf2319a49eddd9dd7145e66c4866bdc6f3dbc67ca3d59685149c11e0d/frozenlist-1.7.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:a6f86e4193bb0e235ef6ce3dde5cbabed887e0b11f516ce8a0f4d3b33078ec2d", size = 84345, upload-time = "2025-06-09T23:01:38.295Z" }, + { url = "https://files.pythonhosted.org/packages/a4/7d/ec2c1e1dc16b85bc9d526009961953df9cec8481b6886debb36ec9107799/frozenlist-1.7.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:82d664628865abeb32d90ae497fb93df398a69bb3434463d172b80fc25b0dd7d", size = 48880, upload-time = "2025-06-09T23:01:39.887Z" }, + { url = "https://files.pythonhosted.org/packages/69/86/f9596807b03de126e11e7d42ac91e3d0b19a6599c714a1989a4e85eeefc4/frozenlist-1.7.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:912a7e8375a1c9a68325a902f3953191b7b292aa3c3fb0d71a216221deca460b", size = 48498, upload-time = "2025-06-09T23:01:41.318Z" }, + { url = "https://files.pythonhosted.org/packages/5e/cb/df6de220f5036001005f2d726b789b2c0b65f2363b104bbc16f5be8084f8/frozenlist-1.7.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9537c2777167488d539bc5de2ad262efc44388230e5118868e172dd4a552b146", size = 292296, upload-time = "2025-06-09T23:01:42.685Z" }, + { url = "https://files.pythonhosted.org/packages/83/1f/de84c642f17c8f851a2905cee2dae401e5e0daca9b5ef121e120e19aa825/frozenlist-1.7.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:f34560fb1b4c3e30ba35fa9a13894ba39e5acfc5f60f57d8accde65f46cc5e74", size = 273103, upload-time = "2025-06-09T23:01:44.166Z" }, + { url = "https://files.pythonhosted.org/packages/88/3c/c840bfa474ba3fa13c772b93070893c6e9d5c0350885760376cbe3b6c1b3/frozenlist-1.7.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:acd03d224b0175f5a850edc104ac19040d35419eddad04e7cf2d5986d98427f1", size = 292869, upload-time = "2025-06-09T23:01:45.681Z" }, + { url = "https://files.pythonhosted.org/packages/a6/1c/3efa6e7d5a39a1d5ef0abeb51c48fb657765794a46cf124e5aca2c7a592c/frozenlist-1.7.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2038310bc582f3d6a09b3816ab01737d60bf7b1ec70f5356b09e84fb7408ab1", size = 291467, upload-time = "2025-06-09T23:01:47.234Z" }, + { url = "https://files.pythonhosted.org/packages/4f/00/d5c5e09d4922c395e2f2f6b79b9a20dab4b67daaf78ab92e7729341f61f6/frozenlist-1.7.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b8c05e4c8e5f36e5e088caa1bf78a687528f83c043706640a92cb76cd6999384", size = 266028, upload-time = "2025-06-09T23:01:48.819Z" }, + { url = "https://files.pythonhosted.org/packages/4e/27/72765be905619dfde25a7f33813ac0341eb6b076abede17a2e3fbfade0cb/frozenlist-1.7.0-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:765bb588c86e47d0b68f23c1bee323d4b703218037765dcf3f25c838c6fecceb", size = 284294, upload-time = "2025-06-09T23:01:50.394Z" }, + { url = "https://files.pythonhosted.org/packages/88/67/c94103a23001b17808eb7dd1200c156bb69fb68e63fcf0693dde4cd6228c/frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:32dc2e08c67d86d0969714dd484fd60ff08ff81d1a1e40a77dd34a387e6ebc0c", size = 281898, upload-time = "2025-06-09T23:01:52.234Z" }, + { url = "https://files.pythonhosted.org/packages/42/34/a3e2c00c00f9e2a9db5653bca3fec306349e71aff14ae45ecc6d0951dd24/frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:c0303e597eb5a5321b4de9c68e9845ac8f290d2ab3f3e2c864437d3c5a30cd65", size = 290465, upload-time = "2025-06-09T23:01:53.788Z" }, + { url = "https://files.pythonhosted.org/packages/bb/73/f89b7fbce8b0b0c095d82b008afd0590f71ccb3dee6eee41791cf8cd25fd/frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:a47f2abb4e29b3a8d0b530f7c3598badc6b134562b1a5caee867f7c62fee51e3", size = 266385, upload-time = "2025-06-09T23:01:55.769Z" }, + { url = "https://files.pythonhosted.org/packages/cd/45/e365fdb554159462ca12df54bc59bfa7a9a273ecc21e99e72e597564d1ae/frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:3d688126c242a6fabbd92e02633414d40f50bb6002fa4cf995a1d18051525657", size = 288771, upload-time = "2025-06-09T23:01:57.4Z" }, + { url = "https://files.pythonhosted.org/packages/00/11/47b6117002a0e904f004d70ec5194fe9144f117c33c851e3d51c765962d0/frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:4e7e9652b3d367c7bd449a727dc79d5043f48b88d0cbfd4f9f1060cf2b414104", size = 288206, upload-time = "2025-06-09T23:01:58.936Z" }, + { url = "https://files.pythonhosted.org/packages/40/37/5f9f3c3fd7f7746082ec67bcdc204db72dad081f4f83a503d33220a92973/frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:1a85e345b4c43db8b842cab1feb41be5cc0b10a1830e6295b69d7310f99becaf", size = 282620, upload-time = "2025-06-09T23:02:00.493Z" }, + { url = "https://files.pythonhosted.org/packages/0b/31/8fbc5af2d183bff20f21aa743b4088eac4445d2bb1cdece449ae80e4e2d1/frozenlist-1.7.0-cp313-cp313t-win32.whl", hash = "sha256:3a14027124ddb70dfcee5148979998066897e79f89f64b13328595c4bdf77c81", size = 43059, upload-time = "2025-06-09T23:02:02.072Z" }, + { url = "https://files.pythonhosted.org/packages/bb/ed/41956f52105b8dbc26e457c5705340c67c8cc2b79f394b79bffc09d0e938/frozenlist-1.7.0-cp313-cp313t-win_amd64.whl", hash = "sha256:3bf8010d71d4507775f658e9823210b7427be36625b387221642725b515dcf3e", size = 47516, upload-time = "2025-06-09T23:02:03.779Z" }, + { url = "https://files.pythonhosted.org/packages/ee/45/b82e3c16be2182bff01179db177fe144d58b5dc787a7d4492c6ed8b9317f/frozenlist-1.7.0-py3-none-any.whl", hash = "sha256:9a5af342e34f7e97caf8c995864c7a396418ae2859cc6fdf1b1073020d516a7e", size = 13106, upload-time = "2025-06-09T23:02:34.204Z" }, +] + +[[package]] +name = "fsspec" +version = "2025.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/24/7f/2747c0d332b9acfa75dc84447a066fdf812b5a6b8d30472b74d309bfe8cb/fsspec-2025.10.0.tar.gz", hash = "sha256:b6789427626f068f9a83ca4e8a3cc050850b6c0f71f99ddb4f542b8266a26a59", size = 309285, upload-time = "2025-10-30T14:58:44.036Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/02/a6b21098b1d5d6249b7c5ab69dde30108a71e4e819d4a9778f1de1d5b70d/fsspec-2025.10.0-py3-none-any.whl", hash = "sha256:7c7712353ae7d875407f97715f0e1ffcc21e33d5b24556cb1e090ae9409ec61d", size = 200966, upload-time = "2025-10-30T14:58:42.53Z" }, +] + +[[package]] +name = "google-ai-generativelanguage" +version = "0.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-api-core", extra = ["grpc"] }, + { name = "google-auth" }, + { name = "grpcio" }, + { name = "proto-plus" }, + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ad/7e/67fdc46187541ead599e77f259d915f129c2f49568ebf5cadb322130712b/google_ai_generativelanguage-0.9.0.tar.gz", hash = "sha256:2524748f413917446febc8e0879dc0d4f026a064f89f17c42b81bea77ab76c84", size = 1481662, upload-time = "2025-10-20T14:56:23.123Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/91/c2d39ad5d77813afadb0f0b8789d882d15c191710b6b6f7cb158376342ff/google_ai_generativelanguage-0.9.0-py3-none-any.whl", hash = "sha256:59f61e54cb341e602073098389876594c4d12e458617727558bb2628a86f3eb2", size = 1401288, upload-time = "2025-10-20T14:52:58.403Z" }, +] + +[[package]] +name = "google-api-core" +version = "2.28.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-auth" }, + { name = "googleapis-common-protos" }, + { name = "proto-plus" }, + { name = "protobuf" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/61/da/83d7043169ac2c8c7469f0e375610d78ae2160134bf1b80634c482fa079c/google_api_core-2.28.1.tar.gz", hash = "sha256:2b405df02d68e68ce0fbc138559e6036559e685159d148ae5861013dc201baf8", size = 176759, upload-time = "2025-10-28T21:34:51.529Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/d4/90197b416cb61cefd316964fd9e7bd8324bcbafabf40eef14a9f20b81974/google_api_core-2.28.1-py3-none-any.whl", hash = "sha256:4021b0f8ceb77a6fb4de6fde4502cecab45062e66ff4f2895169e0b35bc9466c", size = 173706, upload-time = "2025-10-28T21:34:50.151Z" }, +] + +[package.optional-dependencies] +grpc = [ + { name = "grpcio" }, + { name = "grpcio-status" }, +] + +[[package]] +name = "google-auth" +version = "2.43.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cachetools" }, + { name = "pyasn1-modules" }, + { name = "rsa" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ff/ef/66d14cf0e01b08d2d51ffc3c20410c4e134a1548fc246a6081eae585a4fe/google_auth-2.43.0.tar.gz", hash = "sha256:88228eee5fc21b62a1b5fe773ca15e67778cb07dc8363adcb4a8827b52d81483", size = 296359, upload-time = "2025-11-06T00:13:36.587Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6f/d1/385110a9ae86d91cc14c5282c61fe9f4dc41c0b9f7d423c6ad77038c4448/google_auth-2.43.0-py2.py3-none-any.whl", hash = "sha256:af628ba6fa493f75c7e9dbe9373d148ca9f4399b5ea29976519e0a3848eddd16", size = 223114, upload-time = "2025-11-06T00:13:35.209Z" }, +] + +[[package]] +name = "google-genai" +version = "1.52.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "google-auth" }, + { name = "httpx" }, + { name = "pydantic" }, + { name = "requests" }, + { name = "tenacity" }, + { name = "typing-extensions" }, + { name = "websockets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/09/4e/0ad8585d05312074bb69711b2d81cfed69ce0ae441913d57bf169bed20a7/google_genai-1.52.0.tar.gz", hash = "sha256:a74e8a4b3025f23aa98d6a0f84783119012ca6c336fd68f73c5d2b11465d7fc5", size = 258743, upload-time = "2025-11-21T02:18:55.742Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/66/03f663e7bca7abe9ccfebe6cb3fe7da9a118fd723a5abb278d6117e7990e/google_genai-1.52.0-py3-none-any.whl", hash = "sha256:c8352b9f065ae14b9322b949c7debab8562982f03bf71d44130cd2b798c20743", size = 261219, upload-time = "2025-11-21T02:18:54.515Z" }, +] + +[[package]] +name = "googleapis-common-protos" +version = "1.72.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e5/7b/adfd75544c415c487b33061fe7ae526165241c1ea133f9a9125a56b39fd8/googleapis_common_protos-1.72.0.tar.gz", hash = "sha256:e55a601c1b32b52d7a3e65f43563e2aa61bcd737998ee672ac9b951cd49319f5", size = 147433, upload-time = "2025-11-06T18:29:24.087Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c4/ab/09169d5a4612a5f92490806649ac8d41e3ec9129c636754575b3553f4ea4/googleapis_common_protos-1.72.0-py3-none-any.whl", hash = "sha256:4299c5a82d5ae1a9702ada957347726b167f9f8d1fc352477702a1e851ff4038", size = 297515, upload-time = "2025-11-06T18:29:13.14Z" }, +] + +[[package]] +name = "googlesearch-python" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "beautifulsoup4" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/00/c8/3f76213025b77de23f11d3f87349ff9825cf3b0054f62156858af1bd94f3/googlesearch_python-1.3.0.tar.gz", hash = "sha256:c5729b1247c2a8f5c4b48ed73c4f8e9fd558ac4e09de67865479f0a33f2d97dc", size = 5191, upload-time = "2025-01-21T02:31:24.285Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/a6/c1fe6a46a7ac2d3b08acfe88ce3d2b12cd8351c697ee4b300bfa350b7c9a/googlesearch_python-1.3.0-py3-none-any.whl", hash = "sha256:808c4dd390dc4c6a1cfba2f5151f5ef16dceb0a200d9770b388dcd39162b4e19", size = 5563, upload-time = "2025-01-21T02:31:22.102Z" }, +] + +[[package]] +name = "greenlet" +version = "3.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c9/92/bb85bd6e80148a4d2e0c59f7c0c2891029f8fd510183afc7d8d2feeed9b6/greenlet-3.2.3.tar.gz", hash = "sha256:8b0dd8ae4c0d6f5e54ee55ba935eeb3d735a9b58a8a1e5b5cbab64e01a39f365", size = 185752, upload-time = "2025-06-05T16:16:09.955Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/2e/d4fcb2978f826358b673f779f78fa8a32ee37df11920dc2bb5589cbeecef/greenlet-3.2.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:784ae58bba89fa1fa5733d170d42486580cab9decda3484779f4759345b29822", size = 270219, upload-time = "2025-06-05T16:10:10.414Z" }, + { url = "https://files.pythonhosted.org/packages/16/24/929f853e0202130e4fe163bc1d05a671ce8dcd604f790e14896adac43a52/greenlet-3.2.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0921ac4ea42a5315d3446120ad48f90c3a6b9bb93dd9b3cf4e4d84a66e42de83", size = 630383, upload-time = "2025-06-05T16:38:51.785Z" }, + { url = "https://files.pythonhosted.org/packages/d1/b2/0320715eb61ae70c25ceca2f1d5ae620477d246692d9cc284c13242ec31c/greenlet-3.2.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:d2971d93bb99e05f8c2c0c2f4aa9484a18d98c4c3bd3c62b65b7e6ae33dfcfaf", size = 642422, upload-time = "2025-06-05T16:41:35.259Z" }, + { url = "https://files.pythonhosted.org/packages/bd/49/445fd1a210f4747fedf77615d941444349c6a3a4a1135bba9701337cd966/greenlet-3.2.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:c667c0bf9d406b77a15c924ef3285e1e05250948001220368e039b6aa5b5034b", size = 638375, upload-time = "2025-06-05T16:48:18.235Z" }, + { url = "https://files.pythonhosted.org/packages/7e/c8/ca19760cf6eae75fa8dc32b487e963d863b3ee04a7637da77b616703bc37/greenlet-3.2.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:592c12fb1165be74592f5de0d70f82bc5ba552ac44800d632214b76089945147", size = 637627, upload-time = "2025-06-05T16:13:02.858Z" }, + { url = "https://files.pythonhosted.org/packages/65/89/77acf9e3da38e9bcfca881e43b02ed467c1dedc387021fc4d9bd9928afb8/greenlet-3.2.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:29e184536ba333003540790ba29829ac14bb645514fbd7e32af331e8202a62a5", size = 585502, upload-time = "2025-06-05T16:12:49.642Z" }, + { url = "https://files.pythonhosted.org/packages/97/c6/ae244d7c95b23b7130136e07a9cc5aadd60d59b5951180dc7dc7e8edaba7/greenlet-3.2.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:93c0bb79844a367782ec4f429d07589417052e621aa39a5ac1fb99c5aa308edc", size = 1114498, upload-time = "2025-06-05T16:36:46.598Z" }, + { url = "https://files.pythonhosted.org/packages/89/5f/b16dec0cbfd3070658e0d744487919740c6d45eb90946f6787689a7efbce/greenlet-3.2.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:751261fc5ad7b6705f5f76726567375bb2104a059454e0226e1eef6c756748ba", size = 1139977, upload-time = "2025-06-05T16:12:38.262Z" }, + { url = "https://files.pythonhosted.org/packages/66/77/d48fb441b5a71125bcac042fc5b1494c806ccb9a1432ecaa421e72157f77/greenlet-3.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:83a8761c75312361aa2b5b903b79da97f13f556164a7dd2d5448655425bd4c34", size = 297017, upload-time = "2025-06-05T16:25:05.225Z" }, + { url = "https://files.pythonhosted.org/packages/f3/94/ad0d435f7c48debe960c53b8f60fb41c2026b1d0fa4a99a1cb17c3461e09/greenlet-3.2.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:25ad29caed5783d4bd7a85c9251c651696164622494c00802a139c00d639242d", size = 271992, upload-time = "2025-06-05T16:11:23.467Z" }, + { url = "https://files.pythonhosted.org/packages/93/5d/7c27cf4d003d6e77749d299c7c8f5fd50b4f251647b5c2e97e1f20da0ab5/greenlet-3.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:88cd97bf37fe24a6710ec6a3a7799f3f81d9cd33317dcf565ff9950c83f55e0b", size = 638820, upload-time = "2025-06-05T16:38:52.882Z" }, + { url = "https://files.pythonhosted.org/packages/c6/7e/807e1e9be07a125bb4c169144937910bf59b9d2f6d931578e57f0bce0ae2/greenlet-3.2.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:baeedccca94880d2f5666b4fa16fc20ef50ba1ee353ee2d7092b383a243b0b0d", size = 653046, upload-time = "2025-06-05T16:41:36.343Z" }, + { url = "https://files.pythonhosted.org/packages/9d/ab/158c1a4ea1068bdbc78dba5a3de57e4c7aeb4e7fa034320ea94c688bfb61/greenlet-3.2.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:be52af4b6292baecfa0f397f3edb3c6092ce071b499dd6fe292c9ac9f2c8f264", size = 647701, upload-time = "2025-06-05T16:48:19.604Z" }, + { url = "https://files.pythonhosted.org/packages/cc/0d/93729068259b550d6a0288da4ff72b86ed05626eaf1eb7c0d3466a2571de/greenlet-3.2.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0cc73378150b8b78b0c9fe2ce56e166695e67478550769536a6742dca3651688", size = 649747, upload-time = "2025-06-05T16:13:04.628Z" }, + { url = "https://files.pythonhosted.org/packages/f6/f6/c82ac1851c60851302d8581680573245c8fc300253fc1ff741ae74a6c24d/greenlet-3.2.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:706d016a03e78df129f68c4c9b4c4f963f7d73534e48a24f5f5a7101ed13dbbb", size = 605461, upload-time = "2025-06-05T16:12:50.792Z" }, + { url = "https://files.pythonhosted.org/packages/98/82/d022cf25ca39cf1200650fc58c52af32c90f80479c25d1cbf57980ec3065/greenlet-3.2.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:419e60f80709510c343c57b4bb5a339d8767bf9aef9b8ce43f4f143240f88b7c", size = 1121190, upload-time = "2025-06-05T16:36:48.59Z" }, + { url = "https://files.pythonhosted.org/packages/f5/e1/25297f70717abe8104c20ecf7af0a5b82d2f5a980eb1ac79f65654799f9f/greenlet-3.2.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:93d48533fade144203816783373f27a97e4193177ebaaf0fc396db19e5d61163", size = 1149055, upload-time = "2025-06-05T16:12:40.457Z" }, + { url = "https://files.pythonhosted.org/packages/1f/8f/8f9e56c5e82eb2c26e8cde787962e66494312dc8cb261c460e1f3a9c88bc/greenlet-3.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:7454d37c740bb27bdeddfc3f358f26956a07d5220818ceb467a483197d84f849", size = 297817, upload-time = "2025-06-05T16:29:49.244Z" }, + { url = "https://files.pythonhosted.org/packages/b1/cf/f5c0b23309070ae93de75c90d29300751a5aacefc0a3ed1b1d8edb28f08b/greenlet-3.2.3-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:500b8689aa9dd1ab26872a34084503aeddefcb438e2e7317b89b11eaea1901ad", size = 270732, upload-time = "2025-06-05T16:10:08.26Z" }, + { url = "https://files.pythonhosted.org/packages/48/ae/91a957ba60482d3fecf9be49bc3948f341d706b52ddb9d83a70d42abd498/greenlet-3.2.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a07d3472c2a93117af3b0136f246b2833fdc0b542d4a9799ae5f41c28323faef", size = 639033, upload-time = "2025-06-05T16:38:53.983Z" }, + { url = "https://files.pythonhosted.org/packages/6f/df/20ffa66dd5a7a7beffa6451bdb7400d66251374ab40b99981478c69a67a8/greenlet-3.2.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:8704b3768d2f51150626962f4b9a9e4a17d2e37c8a8d9867bbd9fa4eb938d3b3", size = 652999, upload-time = "2025-06-05T16:41:37.89Z" }, + { url = "https://files.pythonhosted.org/packages/51/b4/ebb2c8cb41e521f1d72bf0465f2f9a2fd803f674a88db228887e6847077e/greenlet-3.2.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:5035d77a27b7c62db6cf41cf786cfe2242644a7a337a0e155c80960598baab95", size = 647368, upload-time = "2025-06-05T16:48:21.467Z" }, + { url = "https://files.pythonhosted.org/packages/8e/6a/1e1b5aa10dced4ae876a322155705257748108b7fd2e4fae3f2a091fe81a/greenlet-3.2.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2d8aa5423cd4a396792f6d4580f88bdc6efcb9205891c9d40d20f6e670992efb", size = 650037, upload-time = "2025-06-05T16:13:06.402Z" }, + { url = "https://files.pythonhosted.org/packages/26/f2/ad51331a157c7015c675702e2d5230c243695c788f8f75feba1af32b3617/greenlet-3.2.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2c724620a101f8170065d7dded3f962a2aea7a7dae133a009cada42847e04a7b", size = 608402, upload-time = "2025-06-05T16:12:51.91Z" }, + { url = "https://files.pythonhosted.org/packages/26/bc/862bd2083e6b3aff23300900a956f4ea9a4059de337f5c8734346b9b34fc/greenlet-3.2.3-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:873abe55f134c48e1f2a6f53f7d1419192a3d1a4e873bace00499a4e45ea6af0", size = 1119577, upload-time = "2025-06-05T16:36:49.787Z" }, + { url = "https://files.pythonhosted.org/packages/86/94/1fc0cc068cfde885170e01de40a619b00eaa8f2916bf3541744730ffb4c3/greenlet-3.2.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:024571bbce5f2c1cfff08bf3fbaa43bbc7444f580ae13b0099e95d0e6e67ed36", size = 1147121, upload-time = "2025-06-05T16:12:42.527Z" }, + { url = "https://files.pythonhosted.org/packages/27/1a/199f9587e8cb08a0658f9c30f3799244307614148ffe8b1e3aa22f324dea/greenlet-3.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:5195fb1e75e592dd04ce79881c8a22becdfa3e6f500e7feb059b1e6fdd54d3e3", size = 297603, upload-time = "2025-06-05T16:20:12.651Z" }, +] + +[[package]] +name = "grpcio" +version = "1.76.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b6/e0/318c1ce3ae5a17894d5791e87aea147587c9e702f24122cc7a5c8bbaeeb1/grpcio-1.76.0.tar.gz", hash = "sha256:7be78388d6da1a25c0d5ec506523db58b18be22d9c37d8d3a32c08be4987bd73", size = 12785182, upload-time = "2025-10-21T16:23:12.106Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/00/8163a1beeb6971f66b4bbe6ac9457b97948beba8dd2fc8e1281dce7f79ec/grpcio-1.76.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:2e1743fbd7f5fa713a1b0a8ac8ebabf0ec980b5d8809ec358d488e273b9cf02a", size = 5843567, upload-time = "2025-10-21T16:20:52.829Z" }, + { url = "https://files.pythonhosted.org/packages/10/c1/934202f5cf335e6d852530ce14ddb0fef21be612ba9ecbbcbd4d748ca32d/grpcio-1.76.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:a8c2cf1209497cf659a667d7dea88985e834c24b7c3b605e6254cbb5076d985c", size = 11848017, upload-time = "2025-10-21T16:20:56.705Z" }, + { url = "https://files.pythonhosted.org/packages/11/0b/8dec16b1863d74af6eb3543928600ec2195af49ca58b16334972f6775663/grpcio-1.76.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:08caea849a9d3c71a542827d6df9d5a69067b0a1efbea8a855633ff5d9571465", size = 6412027, upload-time = "2025-10-21T16:20:59.3Z" }, + { url = "https://files.pythonhosted.org/packages/d7/64/7b9e6e7ab910bea9d46f2c090380bab274a0b91fb0a2fe9b0cd399fffa12/grpcio-1.76.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:f0e34c2079d47ae9f6188211db9e777c619a21d4faba6977774e8fa43b085e48", size = 7075913, upload-time = "2025-10-21T16:21:01.645Z" }, + { url = "https://files.pythonhosted.org/packages/68/86/093c46e9546073cefa789bd76d44c5cb2abc824ca62af0c18be590ff13ba/grpcio-1.76.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8843114c0cfce61b40ad48df65abcfc00d4dba82eae8718fab5352390848c5da", size = 6615417, upload-time = "2025-10-21T16:21:03.844Z" }, + { url = "https://files.pythonhosted.org/packages/f7/b6/5709a3a68500a9c03da6fb71740dcdd5ef245e39266461a03f31a57036d8/grpcio-1.76.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8eddfb4d203a237da6f3cc8a540dad0517d274b5a1e9e636fd8d2c79b5c1d397", size = 7199683, upload-time = "2025-10-21T16:21:06.195Z" }, + { url = "https://files.pythonhosted.org/packages/91/d3/4b1f2bf16ed52ce0b508161df3a2d186e4935379a159a834cb4a7d687429/grpcio-1.76.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:32483fe2aab2c3794101c2a159070584e5db11d0aa091b2c0ea9c4fc43d0d749", size = 8163109, upload-time = "2025-10-21T16:21:08.498Z" }, + { url = "https://files.pythonhosted.org/packages/5c/61/d9043f95f5f4cf085ac5dd6137b469d41befb04bd80280952ffa2a4c3f12/grpcio-1.76.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:dcfe41187da8992c5f40aa8c5ec086fa3672834d2be57a32384c08d5a05b4c00", size = 7626676, upload-time = "2025-10-21T16:21:10.693Z" }, + { url = "https://files.pythonhosted.org/packages/36/95/fd9a5152ca02d8881e4dd419cdd790e11805979f499a2e5b96488b85cf27/grpcio-1.76.0-cp311-cp311-win32.whl", hash = "sha256:2107b0c024d1b35f4083f11245c0e23846ae64d02f40b2b226684840260ed054", size = 3997688, upload-time = "2025-10-21T16:21:12.746Z" }, + { url = "https://files.pythonhosted.org/packages/60/9c/5c359c8d4c9176cfa3c61ecd4efe5affe1f38d9bae81e81ac7186b4c9cc8/grpcio-1.76.0-cp311-cp311-win_amd64.whl", hash = "sha256:522175aba7af9113c48ec10cc471b9b9bd4f6ceb36aeb4544a8e2c80ed9d252d", size = 4709315, upload-time = "2025-10-21T16:21:15.26Z" }, + { url = "https://files.pythonhosted.org/packages/bf/05/8e29121994b8d959ffa0afd28996d452f291b48cfc0875619de0bde2c50c/grpcio-1.76.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:81fd9652b37b36f16138611c7e884eb82e0cec137c40d3ef7c3f9b3ed00f6ed8", size = 5799718, upload-time = "2025-10-21T16:21:17.939Z" }, + { url = "https://files.pythonhosted.org/packages/d9/75/11d0e66b3cdf998c996489581bdad8900db79ebd83513e45c19548f1cba4/grpcio-1.76.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:04bbe1bfe3a68bbfd4e52402ab7d4eb59d72d02647ae2042204326cf4bbad280", size = 11825627, upload-time = "2025-10-21T16:21:20.466Z" }, + { url = "https://files.pythonhosted.org/packages/28/50/2f0aa0498bc188048f5d9504dcc5c2c24f2eb1a9337cd0fa09a61a2e75f0/grpcio-1.76.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d388087771c837cdb6515539f43b9d4bf0b0f23593a24054ac16f7a960be16f4", size = 6359167, upload-time = "2025-10-21T16:21:23.122Z" }, + { url = "https://files.pythonhosted.org/packages/66/e5/bbf0bb97d29ede1d59d6588af40018cfc345b17ce979b7b45424628dc8bb/grpcio-1.76.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:9f8f757bebaaea112c00dba718fc0d3260052ce714e25804a03f93f5d1c6cc11", size = 7044267, upload-time = "2025-10-21T16:21:25.995Z" }, + { url = "https://files.pythonhosted.org/packages/f5/86/f6ec2164f743d9609691115ae8ece098c76b894ebe4f7c94a655c6b03e98/grpcio-1.76.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:980a846182ce88c4f2f7e2c22c56aefd515daeb36149d1c897f83cf57999e0b6", size = 6573963, upload-time = "2025-10-21T16:21:28.631Z" }, + { url = "https://files.pythonhosted.org/packages/60/bc/8d9d0d8505feccfdf38a766d262c71e73639c165b311c9457208b56d92ae/grpcio-1.76.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f92f88e6c033db65a5ae3d97905c8fea9c725b63e28d5a75cb73b49bda5024d8", size = 7164484, upload-time = "2025-10-21T16:21:30.837Z" }, + { url = "https://files.pythonhosted.org/packages/67/e6/5d6c2fc10b95edf6df9b8f19cf10a34263b7fd48493936fffd5085521292/grpcio-1.76.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4baf3cbe2f0be3289eb68ac8ae771156971848bb8aaff60bad42005539431980", size = 8127777, upload-time = "2025-10-21T16:21:33.577Z" }, + { url = "https://files.pythonhosted.org/packages/3f/c8/dce8ff21c86abe025efe304d9e31fdb0deaaa3b502b6a78141080f206da0/grpcio-1.76.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:615ba64c208aaceb5ec83bfdce7728b80bfeb8be97562944836a7a0a9647d882", size = 7594014, upload-time = "2025-10-21T16:21:41.882Z" }, + { url = "https://files.pythonhosted.org/packages/e0/42/ad28191ebf983a5d0ecef90bab66baa5a6b18f2bfdef9d0a63b1973d9f75/grpcio-1.76.0-cp312-cp312-win32.whl", hash = "sha256:45d59a649a82df5718fd9527ce775fd66d1af35e6d31abdcdc906a49c6822958", size = 3984750, upload-time = "2025-10-21T16:21:44.006Z" }, + { url = "https://files.pythonhosted.org/packages/9e/00/7bd478cbb851c04a48baccaa49b75abaa8e4122f7d86da797500cccdd771/grpcio-1.76.0-cp312-cp312-win_amd64.whl", hash = "sha256:c088e7a90b6017307f423efbb9d1ba97a22aa2170876223f9709e9d1de0b5347", size = 4704003, upload-time = "2025-10-21T16:21:46.244Z" }, + { url = "https://files.pythonhosted.org/packages/fc/ed/71467ab770effc9e8cef5f2e7388beb2be26ed642d567697bb103a790c72/grpcio-1.76.0-cp313-cp313-linux_armv7l.whl", hash = "sha256:26ef06c73eb53267c2b319f43e6634c7556ea37672029241a056629af27c10e2", size = 5807716, upload-time = "2025-10-21T16:21:48.475Z" }, + { url = "https://files.pythonhosted.org/packages/2c/85/c6ed56f9817fab03fa8a111ca91469941fb514e3e3ce6d793cb8f1e1347b/grpcio-1.76.0-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:45e0111e73f43f735d70786557dc38141185072d7ff8dc1829d6a77ac1471468", size = 11821522, upload-time = "2025-10-21T16:21:51.142Z" }, + { url = "https://files.pythonhosted.org/packages/ac/31/2b8a235ab40c39cbc141ef647f8a6eb7b0028f023015a4842933bc0d6831/grpcio-1.76.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:83d57312a58dcfe2a3a0f9d1389b299438909a02db60e2f2ea2ae2d8034909d3", size = 6362558, upload-time = "2025-10-21T16:21:54.213Z" }, + { url = "https://files.pythonhosted.org/packages/bd/64/9784eab483358e08847498ee56faf8ff6ea8e0a4592568d9f68edc97e9e9/grpcio-1.76.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:3e2a27c89eb9ac3d81ec8835e12414d73536c6e620355d65102503064a4ed6eb", size = 7049990, upload-time = "2025-10-21T16:21:56.476Z" }, + { url = "https://files.pythonhosted.org/packages/2b/94/8c12319a6369434e7a184b987e8e9f3b49a114c489b8315f029e24de4837/grpcio-1.76.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:61f69297cba3950a524f61c7c8ee12e55c486cb5f7db47ff9dcee33da6f0d3ae", size = 6575387, upload-time = "2025-10-21T16:21:59.051Z" }, + { url = "https://files.pythonhosted.org/packages/15/0f/f12c32b03f731f4a6242f771f63039df182c8b8e2cf8075b245b409259d4/grpcio-1.76.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6a15c17af8839b6801d554263c546c69c4d7718ad4321e3166175b37eaacca77", size = 7166668, upload-time = "2025-10-21T16:22:02.049Z" }, + { url = "https://files.pythonhosted.org/packages/ff/2d/3ec9ce0c2b1d92dd59d1c3264aaec9f0f7c817d6e8ac683b97198a36ed5a/grpcio-1.76.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:25a18e9810fbc7e7f03ec2516addc116a957f8cbb8cbc95ccc80faa072743d03", size = 8124928, upload-time = "2025-10-21T16:22:04.984Z" }, + { url = "https://files.pythonhosted.org/packages/1a/74/fd3317be5672f4856bcdd1a9e7b5e17554692d3db9a3b273879dc02d657d/grpcio-1.76.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:931091142fd8cc14edccc0845a79248bc155425eee9a98b2db2ea4f00a235a42", size = 7589983, upload-time = "2025-10-21T16:22:07.881Z" }, + { url = "https://files.pythonhosted.org/packages/45/bb/ca038cf420f405971f19821c8c15bcbc875505f6ffadafe9ffd77871dc4c/grpcio-1.76.0-cp313-cp313-win32.whl", hash = "sha256:5e8571632780e08526f118f74170ad8d50fb0a48c23a746bef2a6ebade3abd6f", size = 3984727, upload-time = "2025-10-21T16:22:10.032Z" }, + { url = "https://files.pythonhosted.org/packages/41/80/84087dc56437ced7cdd4b13d7875e7439a52a261e3ab4e06488ba6173b0a/grpcio-1.76.0-cp313-cp313-win_amd64.whl", hash = "sha256:f9f7bd5faab55f47231ad8dba7787866b69f5e93bc306e3915606779bbfb4ba8", size = 4702799, upload-time = "2025-10-21T16:22:12.709Z" }, +] + +[[package]] +name = "grpcio-status" +version = "1.76.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "googleapis-common-protos" }, + { name = "grpcio" }, + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3f/46/e9f19d5be65e8423f886813a2a9d0056ba94757b0c5007aa59aed1a961fa/grpcio_status-1.76.0.tar.gz", hash = "sha256:25fcbfec74c15d1a1cb5da3fab8ee9672852dc16a5a9eeb5baf7d7a9952943cd", size = 13679, upload-time = "2025-10-21T16:28:52.545Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8c/cc/27ba60ad5a5f2067963e6a858743500df408eb5855e98be778eaef8c9b02/grpcio_status-1.76.0-py3-none-any.whl", hash = "sha256:380568794055a8efbbd8871162df92012e0228a5f6dffaf57f2a00c534103b18", size = 14425, upload-time = "2025-10-21T16:28:40.853Z" }, +] + +[[package]] +name = "h11" +version = "0.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, +] + +[[package]] +name = "hf-xet" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/6e/0f11bacf08a67f7fb5ee09740f2ca54163863b07b70d579356e9222ce5d8/hf_xet-1.2.0.tar.gz", hash = "sha256:a8c27070ca547293b6890c4bf389f713f80e8c478631432962bb7f4bc0bd7d7f", size = 506020, upload-time = "2025-10-24T19:04:32.129Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/a5/85ef910a0aa034a2abcfadc360ab5ac6f6bc4e9112349bd40ca97551cff0/hf_xet-1.2.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:ceeefcd1b7aed4956ae8499e2199607765fbd1c60510752003b6cc0b8413b649", size = 2861870, upload-time = "2025-10-24T19:04:11.422Z" }, + { url = "https://files.pythonhosted.org/packages/ea/40/e2e0a7eb9a51fe8828ba2d47fe22a7e74914ea8a0db68a18c3aa7449c767/hf_xet-1.2.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:b70218dd548e9840224df5638fdc94bd033552963cfa97f9170829381179c813", size = 2717584, upload-time = "2025-10-24T19:04:09.586Z" }, + { url = "https://files.pythonhosted.org/packages/a5/7d/daf7f8bc4594fdd59a8a596f9e3886133fdc68e675292218a5e4c1b7e834/hf_xet-1.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d40b18769bb9a8bc82a9ede575ce1a44c75eb80e7375a01d76259089529b5dc", size = 3315004, upload-time = "2025-10-24T19:04:00.314Z" }, + { url = "https://files.pythonhosted.org/packages/b1/ba/45ea2f605fbf6d81c8b21e4d970b168b18a53515923010c312c06cd83164/hf_xet-1.2.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:cd3a6027d59cfb60177c12d6424e31f4b5ff13d8e3a1247b3a584bf8977e6df5", size = 3222636, upload-time = "2025-10-24T19:03:58.111Z" }, + { url = "https://files.pythonhosted.org/packages/4a/1d/04513e3cab8f29ab8c109d309ddd21a2705afab9d52f2ba1151e0c14f086/hf_xet-1.2.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6de1fc44f58f6dd937956c8d304d8c2dea264c80680bcfa61ca4a15e7b76780f", size = 3408448, upload-time = "2025-10-24T19:04:20.951Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7c/60a2756d7feec7387db3a1176c632357632fbe7849fce576c5559d4520c7/hf_xet-1.2.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f182f264ed2acd566c514e45da9f2119110e48a87a327ca271027904c70c5832", size = 3503401, upload-time = "2025-10-24T19:04:22.549Z" }, + { url = "https://files.pythonhosted.org/packages/4e/64/48fffbd67fb418ab07451e4ce641a70de1c40c10a13e25325e24858ebe5a/hf_xet-1.2.0-cp313-cp313t-win_amd64.whl", hash = "sha256:293a7a3787e5c95d7be1857358a9130694a9c6021de3f27fa233f37267174382", size = 2900866, upload-time = "2025-10-24T19:04:33.461Z" }, + { url = "https://files.pythonhosted.org/packages/96/2d/22338486473df5923a9ab7107d375dbef9173c338ebef5098ef593d2b560/hf_xet-1.2.0-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:46740d4ac024a7ca9b22bebf77460ff43332868b661186a8e46c227fdae01848", size = 2866099, upload-time = "2025-10-24T19:04:15.366Z" }, + { url = "https://files.pythonhosted.org/packages/7f/8c/c5becfa53234299bc2210ba314eaaae36c2875e0045809b82e40a9544f0c/hf_xet-1.2.0-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:27df617a076420d8845bea087f59303da8be17ed7ec0cd7ee3b9b9f579dff0e4", size = 2722178, upload-time = "2025-10-24T19:04:13.695Z" }, + { url = "https://files.pythonhosted.org/packages/9a/92/cf3ab0b652b082e66876d08da57fcc6fa2f0e6c70dfbbafbd470bb73eb47/hf_xet-1.2.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3651fd5bfe0281951b988c0facbe726aa5e347b103a675f49a3fa8144c7968fd", size = 3320214, upload-time = "2025-10-24T19:04:03.596Z" }, + { url = "https://files.pythonhosted.org/packages/46/92/3f7ec4a1b6a65bf45b059b6d4a5d38988f63e193056de2f420137e3c3244/hf_xet-1.2.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:d06fa97c8562fb3ee7a378dd9b51e343bc5bc8190254202c9771029152f5e08c", size = 3229054, upload-time = "2025-10-24T19:04:01.949Z" }, + { url = "https://files.pythonhosted.org/packages/0b/dd/7ac658d54b9fb7999a0ccb07ad863b413cbaf5cf172f48ebcd9497ec7263/hf_xet-1.2.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:4c1428c9ae73ec0939410ec73023c4f842927f39db09b063b9482dac5a3bb737", size = 3413812, upload-time = "2025-10-24T19:04:24.585Z" }, + { url = "https://files.pythonhosted.org/packages/92/68/89ac4e5b12a9ff6286a12174c8538a5930e2ed662091dd2572bbe0a18c8a/hf_xet-1.2.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a55558084c16b09b5ed32ab9ed38421e2d87cf3f1f89815764d1177081b99865", size = 3508920, upload-time = "2025-10-24T19:04:26.927Z" }, + { url = "https://files.pythonhosted.org/packages/cb/44/870d44b30e1dcfb6a65932e3e1506c103a8a5aea9103c337e7a53180322c/hf_xet-1.2.0-cp37-abi3-win_amd64.whl", hash = "sha256:e6584a52253f72c9f52f9e549d5895ca7a471608495c4ecaa6cc73dba2b24d69", size = 2905735, upload-time = "2025-10-24T19:04:35.928Z" }, +] + +[[package]] +name = "httpcore" +version = "1.0.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, +] + +[[package]] +name = "httpx" +version = "0.28.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "certifi" }, + { name = "httpcore" }, + { name = "idna" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload-time = "2024-12-06T15:37:23.222Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, +] + +[[package]] +name = "httpx-sse" +version = "0.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6e/fa/66bd985dd0b7c109a3bcb89272ee0bfb7e2b4d06309ad7b38ff866734b2a/httpx_sse-0.4.1.tar.gz", hash = "sha256:8f44d34414bc7b21bf3602713005c5df4917884f76072479b21f68befa4ea26e", size = 12998, upload-time = "2025-06-24T13:21:05.71Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/0a/6269e3473b09aed2dab8aa1a600c70f31f00ae1349bee30658f7e358a159/httpx_sse-0.4.1-py3-none-any.whl", hash = "sha256:cba42174344c3a5b06f255ce65b350880f962d99ead85e776f23c6618a377a37", size = 8054, upload-time = "2025-06-24T13:21:04.772Z" }, +] + +[[package]] +name = "huggingface-hub" +version = "0.36.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "filelock" }, + { name = "fsspec" }, + { name = "hf-xet", marker = "platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64'" }, + { name = "packaging" }, + { name = "pyyaml" }, + { name = "requests" }, + { name = "tqdm" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/63/4910c5fa9128fdadf6a9c5ac138e8b1b6cee4ca44bf7915bbfbce4e355ee/huggingface_hub-0.36.0.tar.gz", hash = "sha256:47b3f0e2539c39bf5cde015d63b72ec49baff67b6931c3d97f3f84532e2b8d25", size = 463358, upload-time = "2025-10-23T12:12:01.413Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/bd/1a875e0d592d447cbc02805fd3fe0f497714d6a2583f59d14fa9ebad96eb/huggingface_hub-0.36.0-py3-none-any.whl", hash = "sha256:7bcc9ad17d5b3f07b57c78e79d527102d08313caa278a641993acddcb894548d", size = 566094, upload-time = "2025-10-23T12:11:59.557Z" }, +] + +[[package]] +name = "idna" +version = "3.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490, upload-time = "2024-09-15T18:07:39.745Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload-time = "2024-09-15T18:07:37.964Z" }, +] + +[[package]] +name = "ipykernel" +version = "6.30.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "appnope", marker = "sys_platform == 'darwin'" }, + { name = "comm" }, + { name = "debugpy" }, + { name = "ipython" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "matplotlib-inline" }, + { name = "nest-asyncio" }, + { name = "packaging" }, + { name = "psutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/38/27/9e6e30ed92f2ac53d29f70b09da8b2dc456e256148e289678fa0e825f46a/ipykernel-6.30.0.tar.gz", hash = "sha256:b7b808ddb2d261aae2df3a26ff3ff810046e6de3dfbc6f7de8c98ea0a6cb632c", size = 165125, upload-time = "2025-07-21T10:36:09.259Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1f/3d/00813c3d9b46e3dcd88bd4530e0a3c63c0509e5d8c9eff34723ea243ab04/ipykernel-6.30.0-py3-none-any.whl", hash = "sha256:fd2936e55c4a1c2ee8b1e5fa6a372b8eecc0ab1338750dee76f48fa5cca1301e", size = 117264, upload-time = "2025-07-21T10:36:06.854Z" }, +] + +[[package]] +name = "ipython" +version = "9.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "decorator" }, + { name = "ipython-pygments-lexers" }, + { name = "jedi" }, + { name = "matplotlib-inline" }, + { name = "pexpect", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "prompt-toolkit" }, + { name = "pygments" }, + { name = "stack-data" }, + { name = "traitlets" }, + { name = "typing-extensions", marker = "python_full_version < '3.12'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/54/80/406f9e3bde1c1fd9bf5a0be9d090f8ae623e401b7670d8f6fdf2ab679891/ipython-9.4.0.tar.gz", hash = "sha256:c033c6d4e7914c3d9768aabe76bbe87ba1dc66a92a05db6bfa1125d81f2ee270", size = 4385338, upload-time = "2025-07-01T11:11:30.606Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/63/f8/0031ee2b906a15a33d6bfc12dd09c3dfa966b3cb5b284ecfb7549e6ac3c4/ipython-9.4.0-py3-none-any.whl", hash = "sha256:25850f025a446d9b359e8d296ba175a36aedd32e83ca9b5060430fe16801f066", size = 611021, upload-time = "2025-07-01T11:11:27.85Z" }, +] + +[[package]] +name = "ipython-pygments-lexers" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393, upload-time = "2025-01-17T11:24:34.505Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074, upload-time = "2025-01-17T11:24:33.271Z" }, +] + +[[package]] +name = "ipywidgets" +version = "8.1.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "comm" }, + { name = "ipython" }, + { name = "jupyterlab-widgets" }, + { name = "traitlets" }, + { name = "widgetsnbextension" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3e/48/d3dbac45c2814cb73812f98dd6b38bbcc957a4e7bb31d6ea9c03bf94ed87/ipywidgets-8.1.7.tar.gz", hash = "sha256:15f1ac050b9ccbefd45dccfbb2ef6bed0029d8278682d569d71b8dd96bee0376", size = 116721, upload-time = "2025-05-05T12:42:03.489Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/58/6a/9166369a2f092bd286d24e6307de555d63616e8ddb373ebad2b5635ca4cd/ipywidgets-8.1.7-py3-none-any.whl", hash = "sha256:764f2602d25471c213919b8a1997df04bef869251db4ca8efba1b76b1bd9f7bb", size = 139806, upload-time = "2025-05-05T12:41:56.833Z" }, +] + +[[package]] +name = "isoduration" +version = "20.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "arrow" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7c/1a/3c8edc664e06e6bd06cce40c6b22da5f1429aa4224d0c590f3be21c91ead/isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9", size = 11649, upload-time = "2020-11-01T11:00:00.312Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042", size = 11321, upload-time = "2020-11-01T10:59:58.02Z" }, +] + +[[package]] +name = "jedi" +version = "0.19.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "parso" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287, upload-time = "2024-11-11T01:41:42.873Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278, upload-time = "2024-11-11T01:41:40.175Z" }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, +] + +[[package]] +name = "jiter" +version = "0.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/9d/ae7ddb4b8ab3fb1b51faf4deb36cb48a4fbbd7cb36bad6a5fca4741306f7/jiter-0.10.0.tar.gz", hash = "sha256:07a7142c38aacc85194391108dc91b5b57093c978a9932bd86a36862759d9500", size = 162759, upload-time = "2025-05-18T19:04:59.73Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1b/dd/6cefc6bd68b1c3c979cecfa7029ab582b57690a31cd2f346c4d0ce7951b6/jiter-0.10.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3bebe0c558e19902c96e99217e0b8e8b17d570906e72ed8a87170bc290b1e978", size = 317473, upload-time = "2025-05-18T19:03:25.942Z" }, + { url = "https://files.pythonhosted.org/packages/be/cf/fc33f5159ce132be1d8dd57251a1ec7a631c7df4bd11e1cd198308c6ae32/jiter-0.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:558cc7e44fd8e507a236bee6a02fa17199ba752874400a0ca6cd6e2196cdb7dc", size = 321971, upload-time = "2025-05-18T19:03:27.255Z" }, + { url = "https://files.pythonhosted.org/packages/68/a4/da3f150cf1d51f6c472616fb7650429c7ce053e0c962b41b68557fdf6379/jiter-0.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d613e4b379a07d7c8453c5712ce7014e86c6ac93d990a0b8e7377e18505e98d", size = 345574, upload-time = "2025-05-18T19:03:28.63Z" }, + { url = "https://files.pythonhosted.org/packages/84/34/6e8d412e60ff06b186040e77da5f83bc158e9735759fcae65b37d681f28b/jiter-0.10.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f62cf8ba0618eda841b9bf61797f21c5ebd15a7a1e19daab76e4e4b498d515b2", size = 371028, upload-time = "2025-05-18T19:03:30.292Z" }, + { url = "https://files.pythonhosted.org/packages/fb/d9/9ee86173aae4576c35a2f50ae930d2ccb4c4c236f6cb9353267aa1d626b7/jiter-0.10.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:919d139cdfa8ae8945112398511cb7fca58a77382617d279556b344867a37e61", size = 491083, upload-time = "2025-05-18T19:03:31.654Z" }, + { url = "https://files.pythonhosted.org/packages/d9/2c/f955de55e74771493ac9e188b0f731524c6a995dffdcb8c255b89c6fb74b/jiter-0.10.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:13ddbc6ae311175a3b03bd8994881bc4635c923754932918e18da841632349db", size = 388821, upload-time = "2025-05-18T19:03:33.184Z" }, + { url = "https://files.pythonhosted.org/packages/81/5a/0e73541b6edd3f4aada586c24e50626c7815c561a7ba337d6a7eb0a915b4/jiter-0.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c440ea003ad10927a30521a9062ce10b5479592e8a70da27f21eeb457b4a9c5", size = 352174, upload-time = "2025-05-18T19:03:34.965Z" }, + { url = "https://files.pythonhosted.org/packages/1c/c0/61eeec33b8c75b31cae42be14d44f9e6fe3ac15a4e58010256ac3abf3638/jiter-0.10.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dc347c87944983481e138dea467c0551080c86b9d21de6ea9306efb12ca8f606", size = 391869, upload-time = "2025-05-18T19:03:36.436Z" }, + { url = "https://files.pythonhosted.org/packages/41/22/5beb5ee4ad4ef7d86f5ea5b4509f680a20706c4a7659e74344777efb7739/jiter-0.10.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:13252b58c1f4d8c5b63ab103c03d909e8e1e7842d302473f482915d95fefd605", size = 523741, upload-time = "2025-05-18T19:03:38.168Z" }, + { url = "https://files.pythonhosted.org/packages/ea/10/768e8818538e5817c637b0df52e54366ec4cebc3346108a4457ea7a98f32/jiter-0.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7d1bbf3c465de4a24ab12fb7766a0003f6f9bce48b8b6a886158c4d569452dc5", size = 514527, upload-time = "2025-05-18T19:03:39.577Z" }, + { url = "https://files.pythonhosted.org/packages/73/6d/29b7c2dc76ce93cbedabfd842fc9096d01a0550c52692dfc33d3cc889815/jiter-0.10.0-cp311-cp311-win32.whl", hash = "sha256:db16e4848b7e826edca4ccdd5b145939758dadf0dc06e7007ad0e9cfb5928ae7", size = 210765, upload-time = "2025-05-18T19:03:41.271Z" }, + { url = "https://files.pythonhosted.org/packages/c2/c9/d394706deb4c660137caf13e33d05a031d734eb99c051142e039d8ceb794/jiter-0.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:9c9c1d5f10e18909e993f9641f12fe1c77b3e9b533ee94ffa970acc14ded3812", size = 209234, upload-time = "2025-05-18T19:03:42.918Z" }, + { url = "https://files.pythonhosted.org/packages/6d/b5/348b3313c58f5fbfb2194eb4d07e46a35748ba6e5b3b3046143f3040bafa/jiter-0.10.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1e274728e4a5345a6dde2d343c8da018b9d4bd4350f5a472fa91f66fda44911b", size = 312262, upload-time = "2025-05-18T19:03:44.637Z" }, + { url = "https://files.pythonhosted.org/packages/9c/4a/6a2397096162b21645162825f058d1709a02965606e537e3304b02742e9b/jiter-0.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7202ae396446c988cb2a5feb33a543ab2165b786ac97f53b59aafb803fef0744", size = 320124, upload-time = "2025-05-18T19:03:46.341Z" }, + { url = "https://files.pythonhosted.org/packages/2a/85/1ce02cade7516b726dd88f59a4ee46914bf79d1676d1228ef2002ed2f1c9/jiter-0.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23ba7722d6748b6920ed02a8f1726fb4b33e0fd2f3f621816a8b486c66410ab2", size = 345330, upload-time = "2025-05-18T19:03:47.596Z" }, + { url = "https://files.pythonhosted.org/packages/75/d0/bb6b4f209a77190ce10ea8d7e50bf3725fc16d3372d0a9f11985a2b23eff/jiter-0.10.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:371eab43c0a288537d30e1f0b193bc4eca90439fc08a022dd83e5e07500ed026", size = 369670, upload-time = "2025-05-18T19:03:49.334Z" }, + { url = "https://files.pythonhosted.org/packages/a0/f5/a61787da9b8847a601e6827fbc42ecb12be2c925ced3252c8ffcb56afcaf/jiter-0.10.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6c675736059020365cebc845a820214765162728b51ab1e03a1b7b3abb70f74c", size = 489057, upload-time = "2025-05-18T19:03:50.66Z" }, + { url = "https://files.pythonhosted.org/packages/12/e4/6f906272810a7b21406c760a53aadbe52e99ee070fc5c0cb191e316de30b/jiter-0.10.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0c5867d40ab716e4684858e4887489685968a47e3ba222e44cde6e4a2154f959", size = 389372, upload-time = "2025-05-18T19:03:51.98Z" }, + { url = "https://files.pythonhosted.org/packages/e2/ba/77013b0b8ba904bf3762f11e0129b8928bff7f978a81838dfcc958ad5728/jiter-0.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:395bb9a26111b60141757d874d27fdea01b17e8fac958b91c20128ba8f4acc8a", size = 352038, upload-time = "2025-05-18T19:03:53.703Z" }, + { url = "https://files.pythonhosted.org/packages/67/27/c62568e3ccb03368dbcc44a1ef3a423cb86778a4389e995125d3d1aaa0a4/jiter-0.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6842184aed5cdb07e0c7e20e5bdcfafe33515ee1741a6835353bb45fe5d1bd95", size = 391538, upload-time = "2025-05-18T19:03:55.046Z" }, + { url = "https://files.pythonhosted.org/packages/c0/72/0d6b7e31fc17a8fdce76164884edef0698ba556b8eb0af9546ae1a06b91d/jiter-0.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:62755d1bcea9876770d4df713d82606c8c1a3dca88ff39046b85a048566d56ea", size = 523557, upload-time = "2025-05-18T19:03:56.386Z" }, + { url = "https://files.pythonhosted.org/packages/2f/09/bc1661fbbcbeb6244bd2904ff3a06f340aa77a2b94e5a7373fd165960ea3/jiter-0.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:533efbce2cacec78d5ba73a41756beff8431dfa1694b6346ce7af3a12c42202b", size = 514202, upload-time = "2025-05-18T19:03:57.675Z" }, + { url = "https://files.pythonhosted.org/packages/1b/84/5a5d5400e9d4d54b8004c9673bbe4403928a00d28529ff35b19e9d176b19/jiter-0.10.0-cp312-cp312-win32.whl", hash = "sha256:8be921f0cadd245e981b964dfbcd6fd4bc4e254cdc069490416dd7a2632ecc01", size = 211781, upload-time = "2025-05-18T19:03:59.025Z" }, + { url = "https://files.pythonhosted.org/packages/9b/52/7ec47455e26f2d6e5f2ea4951a0652c06e5b995c291f723973ae9e724a65/jiter-0.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:a7c7d785ae9dda68c2678532a5a1581347e9c15362ae9f6e68f3fdbfb64f2e49", size = 206176, upload-time = "2025-05-18T19:04:00.305Z" }, + { url = "https://files.pythonhosted.org/packages/2e/b0/279597e7a270e8d22623fea6c5d4eeac328e7d95c236ed51a2b884c54f70/jiter-0.10.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:e0588107ec8e11b6f5ef0e0d656fb2803ac6cf94a96b2b9fc675c0e3ab5e8644", size = 311617, upload-time = "2025-05-18T19:04:02.078Z" }, + { url = "https://files.pythonhosted.org/packages/91/e3/0916334936f356d605f54cc164af4060e3e7094364add445a3bc79335d46/jiter-0.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cafc4628b616dc32530c20ee53d71589816cf385dd9449633e910d596b1f5c8a", size = 318947, upload-time = "2025-05-18T19:04:03.347Z" }, + { url = "https://files.pythonhosted.org/packages/6a/8e/fd94e8c02d0e94539b7d669a7ebbd2776e51f329bb2c84d4385e8063a2ad/jiter-0.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:520ef6d981172693786a49ff5b09eda72a42e539f14788124a07530f785c3ad6", size = 344618, upload-time = "2025-05-18T19:04:04.709Z" }, + { url = "https://files.pythonhosted.org/packages/6f/b0/f9f0a2ec42c6e9c2e61c327824687f1e2415b767e1089c1d9135f43816bd/jiter-0.10.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:554dedfd05937f8fc45d17ebdf298fe7e0c77458232bcb73d9fbbf4c6455f5b3", size = 368829, upload-time = "2025-05-18T19:04:06.912Z" }, + { url = "https://files.pythonhosted.org/packages/e8/57/5bbcd5331910595ad53b9fd0c610392ac68692176f05ae48d6ce5c852967/jiter-0.10.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5bc299da7789deacf95f64052d97f75c16d4fc8c4c214a22bf8d859a4288a1c2", size = 491034, upload-time = "2025-05-18T19:04:08.222Z" }, + { url = "https://files.pythonhosted.org/packages/9b/be/c393df00e6e6e9e623a73551774449f2f23b6ec6a502a3297aeeece2c65a/jiter-0.10.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5161e201172de298a8a1baad95eb85db4fb90e902353b1f6a41d64ea64644e25", size = 388529, upload-time = "2025-05-18T19:04:09.566Z" }, + { url = "https://files.pythonhosted.org/packages/42/3e/df2235c54d365434c7f150b986a6e35f41ebdc2f95acea3036d99613025d/jiter-0.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e2227db6ba93cb3e2bf67c87e594adde0609f146344e8207e8730364db27041", size = 350671, upload-time = "2025-05-18T19:04:10.98Z" }, + { url = "https://files.pythonhosted.org/packages/c6/77/71b0b24cbcc28f55ab4dbfe029f9a5b73aeadaba677843fc6dc9ed2b1d0a/jiter-0.10.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:15acb267ea5e2c64515574b06a8bf393fbfee6a50eb1673614aa45f4613c0cca", size = 390864, upload-time = "2025-05-18T19:04:12.722Z" }, + { url = "https://files.pythonhosted.org/packages/6a/d3/ef774b6969b9b6178e1d1e7a89a3bd37d241f3d3ec5f8deb37bbd203714a/jiter-0.10.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:901b92f2e2947dc6dfcb52fd624453862e16665ea909a08398dde19c0731b7f4", size = 522989, upload-time = "2025-05-18T19:04:14.261Z" }, + { url = "https://files.pythonhosted.org/packages/0c/41/9becdb1d8dd5d854142f45a9d71949ed7e87a8e312b0bede2de849388cb9/jiter-0.10.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:d0cb9a125d5a3ec971a094a845eadde2db0de85b33c9f13eb94a0c63d463879e", size = 513495, upload-time = "2025-05-18T19:04:15.603Z" }, + { url = "https://files.pythonhosted.org/packages/9c/36/3468e5a18238bdedae7c4d19461265b5e9b8e288d3f86cd89d00cbb48686/jiter-0.10.0-cp313-cp313-win32.whl", hash = "sha256:48a403277ad1ee208fb930bdf91745e4d2d6e47253eedc96e2559d1e6527006d", size = 211289, upload-time = "2025-05-18T19:04:17.541Z" }, + { url = "https://files.pythonhosted.org/packages/7e/07/1c96b623128bcb913706e294adb5f768fb7baf8db5e1338ce7b4ee8c78ef/jiter-0.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:75f9eb72ecb640619c29bf714e78c9c46c9c4eaafd644bf78577ede459f330d4", size = 205074, upload-time = "2025-05-18T19:04:19.21Z" }, + { url = "https://files.pythonhosted.org/packages/54/46/caa2c1342655f57d8f0f2519774c6d67132205909c65e9aa8255e1d7b4f4/jiter-0.10.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:28ed2a4c05a1f32ef0e1d24c2611330219fed727dae01789f4a335617634b1ca", size = 318225, upload-time = "2025-05-18T19:04:20.583Z" }, + { url = "https://files.pythonhosted.org/packages/43/84/c7d44c75767e18946219ba2d703a5a32ab37b0bc21886a97bc6062e4da42/jiter-0.10.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14a4c418b1ec86a195f1ca69da8b23e8926c752b685af665ce30777233dfe070", size = 350235, upload-time = "2025-05-18T19:04:22.363Z" }, + { url = "https://files.pythonhosted.org/packages/01/16/f5a0135ccd968b480daad0e6ab34b0c7c5ba3bc447e5088152696140dcb3/jiter-0.10.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d7bfed2fe1fe0e4dda6ef682cee888ba444b21e7a6553e03252e4feb6cf0adca", size = 207278, upload-time = "2025-05-18T19:04:23.627Z" }, +] + +[[package]] +name = "json5" +version = "0.12.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/12/be/c6c745ec4c4539b25a278b70e29793f10382947df0d9efba2fa09120895d/json5-0.12.0.tar.gz", hash = "sha256:0b4b6ff56801a1c7dc817b0241bca4ce474a0e6a163bfef3fc594d3fd263ff3a", size = 51907, upload-time = "2025-04-03T16:33:13.201Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/9f/3500910d5a98549e3098807493851eeef2b89cdd3032227558a104dfe926/json5-0.12.0-py3-none-any.whl", hash = "sha256:6d37aa6c08b0609f16e1ec5ff94697e2cbbfbad5ac112afa05794da9ab7810db", size = 36079, upload-time = "2025-04-03T16:33:11.927Z" }, +] + +[[package]] +name = "jsonpatch" +version = "1.33" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jsonpointer" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/78/18813351fe5d63acad16aec57f94ec2b70a09e53ca98145589e185423873/jsonpatch-1.33.tar.gz", hash = "sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c", size = 21699, upload-time = "2023-06-26T12:07:29.144Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/73/07/02e16ed01e04a374e644b575638ec7987ae846d25ad97bcc9945a3ee4b0e/jsonpatch-1.33-py2.py3-none-any.whl", hash = "sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade", size = 12898, upload-time = "2023-06-16T21:01:28.466Z" }, +] + +[[package]] +name = "jsonpointer" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114, upload-time = "2024-06-10T19:24:42.462Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595, upload-time = "2024-06-10T19:24:40.698Z" }, +] + +[[package]] +name = "jsonschema" +version = "4.25.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "jsonschema-specifications" }, + { name = "referencing" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d5/00/a297a868e9d0784450faa7365c2172a7d6110c763e30ba861867c32ae6a9/jsonschema-4.25.0.tar.gz", hash = "sha256:e63acf5c11762c0e6672ffb61482bdf57f0876684d8d249c0fe2d730d48bc55f", size = 356830, upload-time = "2025-07-18T15:39:45.11Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/54/c86cd8e011fe98803d7e382fd67c0df5ceab8d2b7ad8c5a81524f791551c/jsonschema-4.25.0-py3-none-any.whl", hash = "sha256:24c2e8da302de79c8b9382fee3e76b355e44d2a4364bb207159ce10b517bd716", size = 89184, upload-time = "2025-07-18T15:39:42.956Z" }, +] + +[package.optional-dependencies] +format-nongpl = [ + { name = "fqdn" }, + { name = "idna" }, + { name = "isoduration" }, + { name = "jsonpointer" }, + { name = "rfc3339-validator" }, + { name = "rfc3986-validator" }, + { name = "rfc3987-syntax" }, + { name = "uri-template" }, + { name = "webcolors" }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2025.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "referencing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608", size = 15513, upload-time = "2025-04-23T12:34:07.418Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437, upload-time = "2025-04-23T12:34:05.422Z" }, +] + +[[package]] +name = "jupyter" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ipykernel" }, + { name = "ipywidgets" }, + { name = "jupyter-console" }, + { name = "jupyterlab" }, + { name = "nbconvert" }, + { name = "notebook" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/58/f3/af28ea964ab8bc1e472dba2e82627d36d470c51f5cd38c37502eeffaa25e/jupyter-1.1.1.tar.gz", hash = "sha256:d55467bceabdea49d7e3624af7e33d59c37fff53ed3a350e1ac957bed731de7a", size = 5714959, upload-time = "2024-08-30T07:15:48.299Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/64/285f20a31679bf547b75602702f7800e74dbabae36ef324f716c02804753/jupyter-1.1.1-py2.py3-none-any.whl", hash = "sha256:7a59533c22af65439b24bbe60373a4e95af8f16ac65a6c00820ad378e3f7cc83", size = 2657, upload-time = "2024-08-30T07:15:47.045Z" }, +] + +[[package]] +name = "jupyter-client" +version = "8.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-core" }, + { name = "python-dateutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/71/22/bf9f12fdaeae18019a468b68952a60fe6dbab5d67cd2a103cac7659b41ca/jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419", size = 342019, upload-time = "2024-09-17T10:44:17.613Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105, upload-time = "2024-09-17T10:44:15.218Z" }, +] + +[[package]] +name = "jupyter-console" +version = "6.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ipykernel" }, + { name = "ipython" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "prompt-toolkit" }, + { name = "pygments" }, + { name = "pyzmq" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bd/2d/e2fd31e2fc41c14e2bcb6c976ab732597e907523f6b2420305f9fc7fdbdb/jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539", size = 34363, upload-time = "2023-03-06T14:13:31.02Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ca/77/71d78d58f15c22db16328a476426f7ac4a60d3a5a7ba3b9627ee2f7903d4/jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485", size = 24510, upload-time = "2023-03-06T14:13:28.229Z" }, +] + +[[package]] +name = "jupyter-core" +version = "5.8.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "platformdirs" }, + { name = "pywin32", marker = "platform_python_implementation != 'PyPy' and sys_platform == 'win32'" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/1b/72906d554acfeb588332eaaa6f61577705e9ec752ddb486f302dafa292d9/jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941", size = 88923, upload-time = "2025-05-27T07:38:16.655Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/57/6bffd4b20b88da3800c5d691e0337761576ee688eb01299eae865689d2df/jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0", size = 28880, upload-time = "2025-05-27T07:38:15.137Z" }, +] + +[[package]] +name = "jupyter-events" +version = "0.12.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jsonschema", extra = ["format-nongpl"] }, + { name = "packaging" }, + { name = "python-json-logger" }, + { name = "pyyaml" }, + { name = "referencing" }, + { name = "rfc3339-validator" }, + { name = "rfc3986-validator" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9d/c3/306d090461e4cf3cd91eceaff84bede12a8e52cd821c2d20c9a4fd728385/jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b", size = 62196, upload-time = "2025-02-03T17:23:41.485Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e2/48/577993f1f99c552f18a0428731a755e06171f9902fa118c379eb7c04ea22/jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb", size = 19430, upload-time = "2025-02-03T17:23:38.643Z" }, +] + +[[package]] +name = "jupyter-lsp" +version = "2.2.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-server" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/3d/40bdb41b665d3302390ed1356cebd5917c10769d1f190ee4ca595900840e/jupyter_lsp-2.2.6.tar.gz", hash = "sha256:0566bd9bb04fd9e6774a937ed01522b555ba78be37bebef787c8ab22de4c0361", size = 48948, upload-time = "2025-07-18T21:35:19.885Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/7c/12f68daf85b469b4896d5e4a629baa33c806d61de75ac5b39d8ef27ec4a2/jupyter_lsp-2.2.6-py3-none-any.whl", hash = "sha256:283783752bf0b459ee7fa88effa72104d87dd343b82d5c06cf113ef755b15b6d", size = 69371, upload-time = "2025-07-18T21:35:16.585Z" }, +] + +[[package]] +name = "jupyter-server" +version = "2.16.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "argon2-cffi" }, + { name = "jinja2" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "jupyter-events" }, + { name = "jupyter-server-terminals" }, + { name = "nbconvert" }, + { name = "nbformat" }, + { name = "overrides" }, + { name = "packaging" }, + { name = "prometheus-client" }, + { name = "pywinpty", marker = "os_name == 'nt'" }, + { name = "pyzmq" }, + { name = "send2trash" }, + { name = "terminado" }, + { name = "tornado" }, + { name = "traitlets" }, + { name = "websocket-client" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/41/c8/ba2bbcd758c47f1124c4ca14061e8ce60d9c6fd537faee9534a95f83521a/jupyter_server-2.16.0.tar.gz", hash = "sha256:65d4b44fdf2dcbbdfe0aa1ace4a842d4aaf746a2b7b168134d5aaed35621b7f6", size = 728177, upload-time = "2025-05-12T16:44:46.245Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/1f/5ebbced977171d09a7b0c08a285ff9a20aafb9c51bde07e52349ff1ddd71/jupyter_server-2.16.0-py3-none-any.whl", hash = "sha256:3d8db5be3bc64403b1c65b400a1d7f4647a5ce743f3b20dbdefe8ddb7b55af9e", size = 386904, upload-time = "2025-05-12T16:44:43.335Z" }, +] + +[[package]] +name = "jupyter-server-terminals" +version = "0.5.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pywinpty", marker = "os_name == 'nt'" }, + { name = "terminado" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/d5/562469734f476159e99a55426d697cbf8e7eb5efe89fb0e0b4f83a3d3459/jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269", size = 31430, upload-time = "2024-03-12T14:37:03.049Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa", size = 13656, upload-time = "2024-03-12T14:37:00.708Z" }, +] + +[[package]] +name = "jupyterlab" +version = "4.4.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "async-lru" }, + { name = "httpx" }, + { name = "ipykernel" }, + { name = "jinja2" }, + { name = "jupyter-core" }, + { name = "jupyter-lsp" }, + { name = "jupyter-server" }, + { name = "jupyterlab-server" }, + { name = "notebook-shim" }, + { name = "packaging" }, + { name = "setuptools" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/20/89/695805a6564bafe08ef2505f3c473ae7140b8ba431d381436f11bdc2c266/jupyterlab-4.4.5.tar.gz", hash = "sha256:0bd6c18e6a3c3d91388af6540afa3d0bb0b2e76287a7b88ddf20ab41b336e595", size = 23037079, upload-time = "2025-07-20T09:21:30.151Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/74/e144ce85b34414e44b14c1f6bf2e3bfe17964c8e5670ebdc7629f2e53672/jupyterlab-4.4.5-py3-none-any.whl", hash = "sha256:e76244cceb2d1fb4a99341f3edc866f2a13a9e14c50368d730d75d8017be0863", size = 12267763, upload-time = "2025-07-20T09:21:26.37Z" }, +] + +[[package]] +name = "jupyterlab-pygments" +version = "0.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/90/51/9187be60d989df97f5f0aba133fa54e7300f17616e065d1ada7d7646b6d6/jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d", size = 512900, upload-time = "2023-11-23T09:26:37.44Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780", size = 15884, upload-time = "2023-11-23T09:26:34.325Z" }, +] + +[[package]] +name = "jupyterlab-server" +version = "2.27.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "babel" }, + { name = "jinja2" }, + { name = "json5" }, + { name = "jsonschema" }, + { name = "jupyter-server" }, + { name = "packaging" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0a/c9/a883ce65eb27905ce77ace410d83587c82ea64dc85a48d1f7ed52bcfa68d/jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4", size = 76173, upload-time = "2024-07-16T17:02:04.149Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/09/2032e7d15c544a0e3cd831c51d77a8ca57f7555b2e1b2922142eddb02a84/jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4", size = 59700, upload-time = "2024-07-16T17:02:01.115Z" }, +] + +[[package]] +name = "jupyterlab-widgets" +version = "3.0.15" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b9/7d/160595ca88ee87ac6ba95d82177d29ec60aaa63821d3077babb22ce031a5/jupyterlab_widgets-3.0.15.tar.gz", hash = "sha256:2920888a0c2922351a9202817957a68c07d99673504d6cd37345299e971bb08b", size = 213149, upload-time = "2025-05-05T12:32:31.004Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/6a/ca128561b22b60bd5a0c4ea26649e68c8556b82bc70a0c396eebc977fe86/jupyterlab_widgets-3.0.15-py3-none-any.whl", hash = "sha256:d59023d7d7ef71400d51e6fee9a88867f6e65e10a4201605d2d7f3e8f012a31c", size = 216571, upload-time = "2025-05-05T12:32:29.534Z" }, +] + +[[package]] +name = "kiwisolver" +version = "1.4.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5c/3c/85844f1b0feb11ee581ac23fe5fce65cd049a200c1446708cc1b7f922875/kiwisolver-1.4.9.tar.gz", hash = "sha256:c3b22c26c6fd6811b0ae8363b95ca8ce4ea3c202d3d0975b2914310ceb1bcc4d", size = 97564, upload-time = "2025-08-10T21:27:49.279Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6f/ab/c80b0d5a9d8a1a65f4f815f2afff9798b12c3b9f31f1d304dd233dd920e2/kiwisolver-1.4.9-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:eb14a5da6dc7642b0f3a18f13654847cd8b7a2550e2645a5bda677862b03ba16", size = 124167, upload-time = "2025-08-10T21:25:53.403Z" }, + { url = "https://files.pythonhosted.org/packages/a0/c0/27fe1a68a39cf62472a300e2879ffc13c0538546c359b86f149cc19f6ac3/kiwisolver-1.4.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:39a219e1c81ae3b103643d2aedb90f1ef22650deb266ff12a19e7773f3e5f089", size = 66579, upload-time = "2025-08-10T21:25:54.79Z" }, + { url = "https://files.pythonhosted.org/packages/31/a2/a12a503ac1fd4943c50f9822678e8015a790a13b5490354c68afb8489814/kiwisolver-1.4.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2405a7d98604b87f3fc28b1716783534b1b4b8510d8142adca34ee0bc3c87543", size = 65309, upload-time = "2025-08-10T21:25:55.76Z" }, + { url = "https://files.pythonhosted.org/packages/66/e1/e533435c0be77c3f64040d68d7a657771194a63c279f55573188161e81ca/kiwisolver-1.4.9-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:dc1ae486f9abcef254b5618dfb4113dd49f94c68e3e027d03cf0143f3f772b61", size = 1435596, upload-time = "2025-08-10T21:25:56.861Z" }, + { url = "https://files.pythonhosted.org/packages/67/1e/51b73c7347f9aabdc7215aa79e8b15299097dc2f8e67dee2b095faca9cb0/kiwisolver-1.4.9-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8a1f570ce4d62d718dce3f179ee78dac3b545ac16c0c04bb363b7607a949c0d1", size = 1246548, upload-time = "2025-08-10T21:25:58.246Z" }, + { url = "https://files.pythonhosted.org/packages/21/aa/72a1c5d1e430294f2d32adb9542719cfb441b5da368d09d268c7757af46c/kiwisolver-1.4.9-cp311-cp311-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:cb27e7b78d716c591e88e0a09a2139c6577865d7f2e152488c2cc6257f460872", size = 1263618, upload-time = "2025-08-10T21:25:59.857Z" }, + { url = "https://files.pythonhosted.org/packages/a3/af/db1509a9e79dbf4c260ce0cfa3903ea8945f6240e9e59d1e4deb731b1a40/kiwisolver-1.4.9-cp311-cp311-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:15163165efc2f627eb9687ea5f3a28137217d217ac4024893d753f46bce9de26", size = 1317437, upload-time = "2025-08-10T21:26:01.105Z" }, + { url = "https://files.pythonhosted.org/packages/e0/f2/3ea5ee5d52abacdd12013a94130436e19969fa183faa1e7c7fbc89e9a42f/kiwisolver-1.4.9-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bdee92c56a71d2b24c33a7d4c2856bd6419d017e08caa7802d2963870e315028", size = 2195742, upload-time = "2025-08-10T21:26:02.675Z" }, + { url = "https://files.pythonhosted.org/packages/6f/9b/1efdd3013c2d9a2566aa6a337e9923a00590c516add9a1e89a768a3eb2fc/kiwisolver-1.4.9-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:412f287c55a6f54b0650bd9b6dce5aceddb95864a1a90c87af16979d37c89771", size = 2290810, upload-time = "2025-08-10T21:26:04.009Z" }, + { url = "https://files.pythonhosted.org/packages/fb/e5/cfdc36109ae4e67361f9bc5b41323648cb24a01b9ade18784657e022e65f/kiwisolver-1.4.9-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2c93f00dcba2eea70af2be5f11a830a742fe6b579a1d4e00f47760ef13be247a", size = 2461579, upload-time = "2025-08-10T21:26:05.317Z" }, + { url = "https://files.pythonhosted.org/packages/62/86/b589e5e86c7610842213994cdea5add00960076bef4ae290c5fa68589cac/kiwisolver-1.4.9-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f117e1a089d9411663a3207ba874f31be9ac8eaa5b533787024dc07aeb74f464", size = 2268071, upload-time = "2025-08-10T21:26:06.686Z" }, + { url = "https://files.pythonhosted.org/packages/3b/c6/f8df8509fd1eee6c622febe54384a96cfaf4d43bf2ccec7a0cc17e4715c9/kiwisolver-1.4.9-cp311-cp311-win_amd64.whl", hash = "sha256:be6a04e6c79819c9a8c2373317d19a96048e5a3f90bec587787e86a1153883c2", size = 73840, upload-time = "2025-08-10T21:26:07.94Z" }, + { url = "https://files.pythonhosted.org/packages/e2/2d/16e0581daafd147bc11ac53f032a2b45eabac897f42a338d0a13c1e5c436/kiwisolver-1.4.9-cp311-cp311-win_arm64.whl", hash = "sha256:0ae37737256ba2de764ddc12aed4956460277f00c4996d51a197e72f62f5eec7", size = 65159, upload-time = "2025-08-10T21:26:09.048Z" }, + { url = "https://files.pythonhosted.org/packages/86/c9/13573a747838aeb1c76e3267620daa054f4152444d1f3d1a2324b78255b5/kiwisolver-1.4.9-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ac5a486ac389dddcc5bef4f365b6ae3ffff2c433324fb38dd35e3fab7c957999", size = 123686, upload-time = "2025-08-10T21:26:10.034Z" }, + { url = "https://files.pythonhosted.org/packages/51/ea/2ecf727927f103ffd1739271ca19c424d0e65ea473fbaeea1c014aea93f6/kiwisolver-1.4.9-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f2ba92255faa7309d06fe44c3a4a97efe1c8d640c2a79a5ef728b685762a6fd2", size = 66460, upload-time = "2025-08-10T21:26:11.083Z" }, + { url = "https://files.pythonhosted.org/packages/5b/5a/51f5464373ce2aeb5194508298a508b6f21d3867f499556263c64c621914/kiwisolver-1.4.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a2899935e724dd1074cb568ce7ac0dce28b2cd6ab539c8e001a8578eb106d14", size = 64952, upload-time = "2025-08-10T21:26:12.058Z" }, + { url = "https://files.pythonhosted.org/packages/70/90/6d240beb0f24b74371762873e9b7f499f1e02166a2d9c5801f4dbf8fa12e/kiwisolver-1.4.9-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f6008a4919fdbc0b0097089f67a1eb55d950ed7e90ce2cc3e640abadd2757a04", size = 1474756, upload-time = "2025-08-10T21:26:13.096Z" }, + { url = "https://files.pythonhosted.org/packages/12/42/f36816eaf465220f683fb711efdd1bbf7a7005a2473d0e4ed421389bd26c/kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:67bb8b474b4181770f926f7b7d2f8c0248cbcb78b660fdd41a47054b28d2a752", size = 1276404, upload-time = "2025-08-10T21:26:14.457Z" }, + { url = "https://files.pythonhosted.org/packages/2e/64/bc2de94800adc830c476dce44e9b40fd0809cddeef1fde9fcf0f73da301f/kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2327a4a30d3ee07d2fbe2e7933e8a37c591663b96ce42a00bc67461a87d7df77", size = 1294410, upload-time = "2025-08-10T21:26:15.73Z" }, + { url = "https://files.pythonhosted.org/packages/5f/42/2dc82330a70aa8e55b6d395b11018045e58d0bb00834502bf11509f79091/kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7a08b491ec91b1d5053ac177afe5290adacf1f0f6307d771ccac5de30592d198", size = 1343631, upload-time = "2025-08-10T21:26:17.045Z" }, + { url = "https://files.pythonhosted.org/packages/22/fd/f4c67a6ed1aab149ec5a8a401c323cee7a1cbe364381bb6c9c0d564e0e20/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d8fc5c867c22b828001b6a38d2eaeb88160bf5783c6cb4a5e440efc981ce286d", size = 2224963, upload-time = "2025-08-10T21:26:18.737Z" }, + { url = "https://files.pythonhosted.org/packages/45/aa/76720bd4cb3713314677d9ec94dcc21ced3f1baf4830adde5bb9b2430a5f/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:3b3115b2581ea35bb6d1f24a4c90af37e5d9b49dcff267eeed14c3893c5b86ab", size = 2321295, upload-time = "2025-08-10T21:26:20.11Z" }, + { url = "https://files.pythonhosted.org/packages/80/19/d3ec0d9ab711242f56ae0dc2fc5d70e298bb4a1f9dfab44c027668c673a1/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858e4c22fb075920b96a291928cb7dea5644e94c0ee4fcd5af7e865655e4ccf2", size = 2487987, upload-time = "2025-08-10T21:26:21.49Z" }, + { url = "https://files.pythonhosted.org/packages/39/e9/61e4813b2c97e86b6fdbd4dd824bf72d28bcd8d4849b8084a357bc0dd64d/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ed0fecd28cc62c54b262e3736f8bb2512d8dcfdc2bcf08be5f47f96bf405b145", size = 2291817, upload-time = "2025-08-10T21:26:22.812Z" }, + { url = "https://files.pythonhosted.org/packages/a0/41/85d82b0291db7504da3c2defe35c9a8a5c9803a730f297bd823d11d5fb77/kiwisolver-1.4.9-cp312-cp312-win_amd64.whl", hash = "sha256:f68208a520c3d86ea51acf688a3e3002615a7f0238002cccc17affecc86a8a54", size = 73895, upload-time = "2025-08-10T21:26:24.37Z" }, + { url = "https://files.pythonhosted.org/packages/e2/92/5f3068cf15ee5cb624a0c7596e67e2a0bb2adee33f71c379054a491d07da/kiwisolver-1.4.9-cp312-cp312-win_arm64.whl", hash = "sha256:2c1a4f57df73965f3f14df20b80ee29e6a7930a57d2d9e8491a25f676e197c60", size = 64992, upload-time = "2025-08-10T21:26:25.732Z" }, + { url = "https://files.pythonhosted.org/packages/31/c1/c2686cda909742ab66c7388e9a1a8521a59eb89f8bcfbee28fc980d07e24/kiwisolver-1.4.9-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a5d0432ccf1c7ab14f9949eec60c5d1f924f17c037e9f8b33352fa05799359b8", size = 123681, upload-time = "2025-08-10T21:26:26.725Z" }, + { url = "https://files.pythonhosted.org/packages/ca/f0/f44f50c9f5b1a1860261092e3bc91ecdc9acda848a8b8c6abfda4a24dd5c/kiwisolver-1.4.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efb3a45b35622bb6c16dbfab491a8f5a391fe0e9d45ef32f4df85658232ca0e2", size = 66464, upload-time = "2025-08-10T21:26:27.733Z" }, + { url = "https://files.pythonhosted.org/packages/2d/7a/9d90a151f558e29c3936b8a47ac770235f436f2120aca41a6d5f3d62ae8d/kiwisolver-1.4.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1a12cf6398e8a0a001a059747a1cbf24705e18fe413bc22de7b3d15c67cffe3f", size = 64961, upload-time = "2025-08-10T21:26:28.729Z" }, + { url = "https://files.pythonhosted.org/packages/e9/e9/f218a2cb3a9ffbe324ca29a9e399fa2d2866d7f348ec3a88df87fc248fc5/kiwisolver-1.4.9-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b67e6efbf68e077dd71d1a6b37e43e1a99d0bff1a3d51867d45ee8908b931098", size = 1474607, upload-time = "2025-08-10T21:26:29.798Z" }, + { url = "https://files.pythonhosted.org/packages/d9/28/aac26d4c882f14de59041636292bc838db8961373825df23b8eeb807e198/kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5656aa670507437af0207645273ccdfee4f14bacd7f7c67a4306d0dcaeaf6eed", size = 1276546, upload-time = "2025-08-10T21:26:31.401Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ad/8bfc1c93d4cc565e5069162f610ba2f48ff39b7de4b5b8d93f69f30c4bed/kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:bfc08add558155345129c7803b3671cf195e6a56e7a12f3dde7c57d9b417f525", size = 1294482, upload-time = "2025-08-10T21:26:32.721Z" }, + { url = "https://files.pythonhosted.org/packages/da/f1/6aca55ff798901d8ce403206d00e033191f63d82dd708a186e0ed2067e9c/kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:40092754720b174e6ccf9e845d0d8c7d8e12c3d71e7fc35f55f3813e96376f78", size = 1343720, upload-time = "2025-08-10T21:26:34.032Z" }, + { url = "https://files.pythonhosted.org/packages/d1/91/eed031876c595c81d90d0f6fc681ece250e14bf6998c3d7c419466b523b7/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:497d05f29a1300d14e02e6441cf0f5ee81c1ff5a304b0d9fb77423974684e08b", size = 2224907, upload-time = "2025-08-10T21:26:35.824Z" }, + { url = "https://files.pythonhosted.org/packages/e9/ec/4d1925f2e49617b9cca9c34bfa11adefad49d00db038e692a559454dfb2e/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:bdd1a81a1860476eb41ac4bc1e07b3f07259e6d55bbf739b79c8aaedcf512799", size = 2321334, upload-time = "2025-08-10T21:26:37.534Z" }, + { url = "https://files.pythonhosted.org/packages/43/cb/450cd4499356f68802750c6ddc18647b8ea01ffa28f50d20598e0befe6e9/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e6b93f13371d341afee3be9f7c5964e3fe61d5fa30f6a30eb49856935dfe4fc3", size = 2488313, upload-time = "2025-08-10T21:26:39.191Z" }, + { url = "https://files.pythonhosted.org/packages/71/67/fc76242bd99f885651128a5d4fa6083e5524694b7c88b489b1b55fdc491d/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d75aa530ccfaa593da12834b86a0724f58bff12706659baa9227c2ccaa06264c", size = 2291970, upload-time = "2025-08-10T21:26:40.828Z" }, + { url = "https://files.pythonhosted.org/packages/75/bd/f1a5d894000941739f2ae1b65a32892349423ad49c2e6d0771d0bad3fae4/kiwisolver-1.4.9-cp313-cp313-win_amd64.whl", hash = "sha256:dd0a578400839256df88c16abddf9ba14813ec5f21362e1fe65022e00c883d4d", size = 73894, upload-time = "2025-08-10T21:26:42.33Z" }, + { url = "https://files.pythonhosted.org/packages/95/38/dce480814d25b99a391abbddadc78f7c117c6da34be68ca8b02d5848b424/kiwisolver-1.4.9-cp313-cp313-win_arm64.whl", hash = "sha256:d4188e73af84ca82468f09cadc5ac4db578109e52acb4518d8154698d3a87ca2", size = 64995, upload-time = "2025-08-10T21:26:43.889Z" }, + { url = "https://files.pythonhosted.org/packages/e2/37/7d218ce5d92dadc5ebdd9070d903e0c7cf7edfe03f179433ac4d13ce659c/kiwisolver-1.4.9-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:5a0f2724dfd4e3b3ac5a82436a8e6fd16baa7d507117e4279b660fe8ca38a3a1", size = 126510, upload-time = "2025-08-10T21:26:44.915Z" }, + { url = "https://files.pythonhosted.org/packages/23/b0/e85a2b48233daef4b648fb657ebbb6f8367696a2d9548a00b4ee0eb67803/kiwisolver-1.4.9-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:1b11d6a633e4ed84fc0ddafd4ebfd8ea49b3f25082c04ad12b8315c11d504dc1", size = 67903, upload-time = "2025-08-10T21:26:45.934Z" }, + { url = "https://files.pythonhosted.org/packages/44/98/f2425bc0113ad7de24da6bb4dae1343476e95e1d738be7c04d31a5d037fd/kiwisolver-1.4.9-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61874cdb0a36016354853593cffc38e56fc9ca5aa97d2c05d3dcf6922cd55a11", size = 66402, upload-time = "2025-08-10T21:26:47.101Z" }, + { url = "https://files.pythonhosted.org/packages/98/d8/594657886df9f34c4177cc353cc28ca7e6e5eb562d37ccc233bff43bbe2a/kiwisolver-1.4.9-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:60c439763a969a6af93b4881db0eed8fadf93ee98e18cbc35bc8da868d0c4f0c", size = 1582135, upload-time = "2025-08-10T21:26:48.665Z" }, + { url = "https://files.pythonhosted.org/packages/5c/c6/38a115b7170f8b306fc929e166340c24958347308ea3012c2b44e7e295db/kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92a2f997387a1b79a75e7803aa7ded2cfbe2823852ccf1ba3bcf613b62ae3197", size = 1389409, upload-time = "2025-08-10T21:26:50.335Z" }, + { url = "https://files.pythonhosted.org/packages/bf/3b/e04883dace81f24a568bcee6eb3001da4ba05114afa622ec9b6fafdc1f5e/kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a31d512c812daea6d8b3be3b2bfcbeb091dbb09177706569bcfc6240dcf8b41c", size = 1401763, upload-time = "2025-08-10T21:26:51.867Z" }, + { url = "https://files.pythonhosted.org/packages/9f/80/20ace48e33408947af49d7d15c341eaee69e4e0304aab4b7660e234d6288/kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:52a15b0f35dad39862d376df10c5230155243a2c1a436e39eb55623ccbd68185", size = 1453643, upload-time = "2025-08-10T21:26:53.592Z" }, + { url = "https://files.pythonhosted.org/packages/64/31/6ce4380a4cd1f515bdda976a1e90e547ccd47b67a1546d63884463c92ca9/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a30fd6fdef1430fd9e1ba7b3398b5ee4e2887783917a687d86ba69985fb08748", size = 2330818, upload-time = "2025-08-10T21:26:55.051Z" }, + { url = "https://files.pythonhosted.org/packages/fa/e9/3f3fcba3bcc7432c795b82646306e822f3fd74df0ee81f0fa067a1f95668/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:cc9617b46837c6468197b5945e196ee9ca43057bb7d9d1ae688101e4e1dddf64", size = 2419963, upload-time = "2025-08-10T21:26:56.421Z" }, + { url = "https://files.pythonhosted.org/packages/99/43/7320c50e4133575c66e9f7dadead35ab22d7c012a3b09bb35647792b2a6d/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:0ab74e19f6a2b027ea4f845a78827969af45ce790e6cb3e1ebab71bdf9f215ff", size = 2594639, upload-time = "2025-08-10T21:26:57.882Z" }, + { url = "https://files.pythonhosted.org/packages/65/d6/17ae4a270d4a987ef8a385b906d2bdfc9fce502d6dc0d3aea865b47f548c/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dba5ee5d3981160c28d5490f0d1b7ed730c22470ff7f6cc26cfcfaacb9896a07", size = 2391741, upload-time = "2025-08-10T21:26:59.237Z" }, + { url = "https://files.pythonhosted.org/packages/2a/8f/8f6f491d595a9e5912971f3f863d81baddccc8a4d0c3749d6a0dd9ffc9df/kiwisolver-1.4.9-cp313-cp313t-win_arm64.whl", hash = "sha256:0749fd8f4218ad2e851e11cc4dc05c7cbc0cbc4267bdfdb31782e65aace4ee9c", size = 68646, upload-time = "2025-08-10T21:27:00.52Z" }, + { url = "https://files.pythonhosted.org/packages/a3/0f/36d89194b5a32c054ce93e586d4049b6c2c22887b0eb229c61c68afd3078/kiwisolver-1.4.9-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:720e05574713db64c356e86732c0f3c5252818d05f9df320f0ad8380641acea5", size = 60104, upload-time = "2025-08-10T21:27:43.287Z" }, + { url = "https://files.pythonhosted.org/packages/52/ba/4ed75f59e4658fd21fe7dde1fee0ac397c678ec3befba3fe6482d987af87/kiwisolver-1.4.9-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:17680d737d5335b552994a2008fab4c851bcd7de33094a82067ef3a576ff02fa", size = 58592, upload-time = "2025-08-10T21:27:44.314Z" }, + { url = "https://files.pythonhosted.org/packages/33/01/a8ea7c5ea32a9b45ceeaee051a04c8ed4320f5add3c51bfa20879b765b70/kiwisolver-1.4.9-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:85b5352f94e490c028926ea567fc569c52ec79ce131dadb968d3853e809518c2", size = 80281, upload-time = "2025-08-10T21:27:45.369Z" }, + { url = "https://files.pythonhosted.org/packages/da/e3/dbd2ecdce306f1d07a1aaf324817ee993aab7aee9db47ceac757deabafbe/kiwisolver-1.4.9-pp311-pypy311_pp73-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:464415881e4801295659462c49461a24fb107c140de781d55518c4b80cb6790f", size = 78009, upload-time = "2025-08-10T21:27:46.376Z" }, + { url = "https://files.pythonhosted.org/packages/da/e9/0d4add7873a73e462aeb45c036a2dead2562b825aa46ba326727b3f31016/kiwisolver-1.4.9-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:fb940820c63a9590d31d88b815e7a3aa5915cad3ce735ab45f0c730b39547de1", size = 73929, upload-time = "2025-08-10T21:27:48.236Z" }, +] + +[[package]] +name = "langchain" +version = "0.3.27" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "langchain-core" }, + { name = "langchain-text-splitters" }, + { name = "langsmith" }, + { name = "pydantic" }, + { name = "pyyaml" }, + { name = "requests" }, + { name = "sqlalchemy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/83/f6/f4f7f3a56626fe07e2bb330feb61254dbdf06c506e6b59a536a337da51cf/langchain-0.3.27.tar.gz", hash = "sha256:aa6f1e6274ff055d0fd36254176770f356ed0a8994297d1df47df341953cec62", size = 10233809, upload-time = "2025-07-24T14:42:32.959Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f6/d5/4861816a95b2f6993f1360cfb605aacb015506ee2090433a71de9cca8477/langchain-0.3.27-py3-none-any.whl", hash = "sha256:7b20c4f338826acb148d885b20a73a16e410ede9ee4f19bb02011852d5f98798", size = 1018194, upload-time = "2025-07-24T14:42:30.23Z" }, +] + +[[package]] +name = "langchain-community" +version = "0.3.31" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohttp" }, + { name = "dataclasses-json" }, + { name = "httpx-sse" }, + { name = "langchain" }, + { name = "langchain-core" }, + { name = "langsmith" }, + { name = "numpy" }, + { name = "pydantic-settings" }, + { name = "pyyaml" }, + { name = "requests" }, + { name = "sqlalchemy" }, + { name = "tenacity" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/83/49/2ff5354273809e9811392bc24bcffda545a196070666aef27bc6aacf1c21/langchain_community-0.3.31.tar.gz", hash = "sha256:250e4c1041539130f6d6ac6f9386cb018354eafccd917b01a4cff1950b80fd81", size = 33241237, upload-time = "2025-10-07T20:17:57.857Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/0a/b8848db67ad7c8d4652cb6f4cb78d49b5b5e6e8e51d695d62025aa3f7dbc/langchain_community-0.3.31-py3-none-any.whl", hash = "sha256:1c727e3ebbacd4d891b07bd440647668001cea3e39cbe732499ad655ec5cb569", size = 2532920, upload-time = "2025-10-07T20:17:54.91Z" }, +] + +[[package]] +name = "langchain-core" +version = "0.3.79" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jsonpatch" }, + { name = "langsmith" }, + { name = "packaging" }, + { name = "pydantic" }, + { name = "pyyaml" }, + { name = "tenacity" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c8/99/f926495f467e0f43289f12e951655d267d1eddc1136c3cf4dd907794a9a7/langchain_core-0.3.79.tar.gz", hash = "sha256:024ba54a346dd9b13fb8b2342e0c83d0111e7f26fa01f545ada23ad772b55a60", size = 580895, upload-time = "2025-10-09T21:59:08.359Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/71/46b0efaf3fc6ad2c2bd600aef500f1cb2b7038a4042f58905805630dd29d/langchain_core-0.3.79-py3-none-any.whl", hash = "sha256:92045bfda3e741f8018e1356f83be203ec601561c6a7becfefe85be5ddc58fdb", size = 449779, upload-time = "2025-10-09T21:59:06.493Z" }, +] + +[[package]] +name = "langchain-google-genai" +version = "2.1.12" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "filetype" }, + { name = "google-ai-generativelanguage" }, + { name = "langchain-core" }, + { name = "pydantic" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/09/38/8b3a71c729bd03e9eb0fd8bdb19e06a074c35bc2eaa61b1b9edfa863f38d/langchain_google_genai-2.1.12.tar.gz", hash = "sha256:4a98371e545eb97fcdf483086a4aebbb8eceeb9597ca5a9c4c35e92f4fbbd271", size = 77566, upload-time = "2025-09-17T01:27:11.747Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/8d/9dd9653e5414e73cae3480e5947bbbbd94ba7fa824efdf46e7ff2c0faef2/langchain_google_genai-2.1.12-py3-none-any.whl", hash = "sha256:4c07630419a8fbe7a2ec512c6dea68289663bfe7d5fae0ba431d2cd59a0d0880", size = 50746, upload-time = "2025-09-17T01:27:10.653Z" }, +] + +[[package]] +name = "langchain-mcp-adapters" +version = "0.1.12" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "langchain-core" }, + { name = "mcp" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/08/c7/2f6fdebb39d20e97866f8dce67b2f910e814cb618cded9e29e5c9674bd7c/langchain_mcp_adapters-0.1.12.tar.gz", hash = "sha256:0c7baa974278e44148b36fe6cb04173e9bf3c540619017a8f1bb602f90a24c1f", size = 29353, upload-time = "2025-10-30T21:19:39.893Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/5e/285001f98420304b2a03d38b341a9c0ec9ebb2a47d06fc0338d5f757d145/langchain_mcp_adapters-0.1.12-py3-none-any.whl", hash = "sha256:ea9894ed8baf83dce485cf4fb64d7afb74c34b95e2e627fde6bf307eaa49ea1c", size = 20429, upload-time = "2025-10-30T21:19:38.85Z" }, +] + +[[package]] +name = "langchain-openai" +version = "0.3.35" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "langchain-core" }, + { name = "openai" }, + { name = "tiktoken" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fb/96/06d0d25a37e05a0ff2d918f0a4b0bf0732aed6a43b472b0b68426ce04ef8/langchain_openai-0.3.35.tar.gz", hash = "sha256:fa985fd041c3809da256a040c98e8a43e91c6d165b96dcfeb770d8bd457bf76f", size = 786635, upload-time = "2025-10-06T15:09:28.463Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d8/d5/c90c5478215c20ee71d8feaf676f7ffd78d0568f8c98bd83f81ce7562ed7/langchain_openai-0.3.35-py3-none-any.whl", hash = "sha256:76d5707e6e81fd461d33964ad618bd326cb661a1975cef7c1cb0703576bdada5", size = 75952, upload-time = "2025-10-06T15:09:27.137Z" }, +] + +[[package]] +name = "langchain-tavily" +version = "0.2.13" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohttp" }, + { name = "langchain" }, + { name = "langchain-core" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/05/75/a08ff73441fdaaef6e1ed83ee3b6747fd7c562ff772a09ebf5fe8fb252d3/langchain_tavily-0.2.13.tar.gz", hash = "sha256:97752167225b1459ffd2055bc8ffcec30658ff808dd5f7f9b2efa85ebbc7895a", size = 21842, upload-time = "2025-11-04T15:30:32.756Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/a2/7de8e9071b6a60cf9fe974744a2961e2dc77492d0ac29285a70b465cdb57/langchain_tavily-0.2.13-py3-none-any.whl", hash = "sha256:aa5b445c336f5f9314ab00f348554a42316af75ac839a0016442e382dd2cb1cb", size = 26025, upload-time = "2025-11-04T15:30:31.679Z" }, +] + +[[package]] +name = "langchain-text-splitters" +version = "0.3.11" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "langchain-core" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/11/43/dcda8fd25f0b19cb2835f2f6bb67f26ad58634f04ac2d8eae00526b0fa55/langchain_text_splitters-0.3.11.tar.gz", hash = "sha256:7a50a04ada9a133bbabb80731df7f6ddac51bc9f1b9cab7fa09304d71d38a6cc", size = 46458, upload-time = "2025-08-31T23:02:58.316Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/58/0d/41a51b40d24ff0384ec4f7ab8dd3dcea8353c05c973836b5e289f1465d4f/langchain_text_splitters-0.3.11-py3-none-any.whl", hash = "sha256:cf079131166a487f1372c8ab5d0bfaa6c0a4291733d9c43a34a16ac9bcd6a393", size = 33845, upload-time = "2025-08-31T23:02:57.195Z" }, +] + +[[package]] +name = "langchain-upstage" +version = "0.7.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "langchain-core" }, + { name = "langchain-openai" }, + { name = "pypdf" }, + { name = "requests" }, + { name = "tokenizers" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/2a/5d3e4733143a41d0f32335babe6db7225ca4518c595e78f4f1872b63f25f/langchain_upstage-0.7.4.tar.gz", hash = "sha256:3381fe01e9cc58ba866b6d02f4144e58b9b55ab783922df2c8f8bbb08307e3f5", size = 20142, upload-time = "2025-10-14T03:14:24.619Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/b3/1b4d4e9084a7786d4142d5167acd6041fc11b10d2be77e0149c8f1935427/langchain_upstage-0.7.4-py3-none-any.whl", hash = "sha256:e69c5c52b77a7627da32796c1bfc88fef0d4c9baf23a5da56773fd5e7354efcb", size = 25112, upload-time = "2025-10-14T03:14:23.798Z" }, +] + +[[package]] +name = "langgraph" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "langchain-core" }, + { name = "langgraph-checkpoint" }, + { name = "langgraph-prebuilt" }, + { name = "langgraph-sdk" }, + { name = "pydantic" }, + { name = "xxhash" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/20/7c/a0f4211f751b8b37aae2d88c6243ceb14027ca9ebf00ac8f3b210657af6a/langgraph-1.0.1.tar.gz", hash = "sha256:4985b32ceabb046a802621660836355dfcf2402c5876675dc353db684aa8f563", size = 480245, upload-time = "2025-10-20T18:51:59.839Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b1/3c/acc0956a0da96b25a2c5c1a85168eacf1253639a04ed391d7a7bcaae5d6c/langgraph-1.0.1-py3-none-any.whl", hash = "sha256:892f04f64f4889abc80140265cc6bd57823dd8e327a5eef4968875f2cd9013bd", size = 155415, upload-time = "2025-10-20T18:51:58.321Z" }, +] + +[[package]] +name = "langgraph-checkpoint" +version = "2.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "langchain-core" }, + { name = "ormsgpack" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/73/3e/d00eb2b56c3846a0cabd2e5aa71c17a95f882d4f799a6ffe96a19b55eba9/langgraph_checkpoint-2.1.1.tar.gz", hash = "sha256:72038c0f9e22260cb9bff1f3ebe5eb06d940b7ee5c1e4765019269d4f21cf92d", size = 136256, upload-time = "2025-07-17T13:07:52.411Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4c/dd/64686797b0927fb18b290044be12ae9d4df01670dce6bb2498d5ab65cb24/langgraph_checkpoint-2.1.1-py3-none-any.whl", hash = "sha256:5a779134fd28134a9a83d078be4450bbf0e0c79fdf5e992549658899e6fc5ea7", size = 43925, upload-time = "2025-07-17T13:07:51.023Z" }, +] + +[[package]] +name = "langgraph-prebuilt" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "langchain-core" }, + { name = "langgraph-checkpoint" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b2/b6/2bcb992acf67713a3557e51c1955854672ec6c1abe6ba51173a87eb8d825/langgraph_prebuilt-1.0.1.tar.gz", hash = "sha256:ecbfb9024d9d7ed9652dde24eef894650aaab96bf79228e862c503e2a060b469", size = 119918, upload-time = "2025-10-20T18:49:55.991Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/68/47/9ffd10882403020ea866e381de7f8e504a78f606a914af7f8244456c7783/langgraph_prebuilt-1.0.1-py3-none-any.whl", hash = "sha256:8c02e023538f7ef6ad5ed76219ba1ab4f6de0e31b749e4d278f57a8a95eec9f7", size = 28458, upload-time = "2025-10-20T18:49:54.723Z" }, +] + +[[package]] +name = "langgraph-sdk" +version = "0.2.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "httpx" }, + { name = "orjson" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/23/d8/40e01190a73c564a4744e29a6c902f78d34d43dad9b652a363a92a67059c/langgraph_sdk-0.2.9.tar.gz", hash = "sha256:b3bd04c6be4fa382996cd2be8fbc1e7cc94857d2bc6b6f4599a7f2a245975303", size = 99802, upload-time = "2025-09-20T18:49:14.734Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/66/05/b2d34e16638241e6f27a6946d28160d4b8b641383787646d41a3727e0896/langgraph_sdk-0.2.9-py3-none-any.whl", hash = "sha256:fbf302edadbf0fb343596f91c597794e936ef68eebc0d3e1d358b6f9f72a1429", size = 56752, upload-time = "2025-09-20T18:49:13.346Z" }, +] + +[[package]] +name = "langsmith" +version = "0.4.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "httpx" }, + { name = "orjson", marker = "platform_python_implementation != 'PyPy'" }, + { name = "packaging" }, + { name = "pydantic" }, + { name = "requests" }, + { name = "requests-toolbelt" }, + { name = "zstandard" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/46/38/0da897697ce29fb78cdaacae2d0fa3a4bc2a0abf23f84f6ecd1947f79245/langsmith-0.4.8.tar.gz", hash = "sha256:50eccb744473dd6bd3e0fe024786e2196b1f8598f8defffce7ac31113d6c140f", size = 352414, upload-time = "2025-07-18T19:36:06.082Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/19/4f/481324462c44ce21443b833ad73ee51117031d41c16fec06cddbb7495b26/langsmith-0.4.8-py3-none-any.whl", hash = "sha256:ca2f6024ab9d2cd4d091b2e5b58a5d2cb0c354a0c84fe214145a89ad450abae0", size = 367975, upload-time = "2025-07-18T19:36:04.025Z" }, +] + +[[package]] +name = "lark" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/af/60/bc7622aefb2aee1c0b4ba23c1446d3e30225c8770b38d7aedbfb65ca9d5a/lark-1.2.2.tar.gz", hash = "sha256:ca807d0162cd16cef15a8feecb862d7319e7a09bdb13aef927968e45040fed80", size = 252132, upload-time = "2024-08-13T19:49:00.652Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2d/00/d90b10b962b4277f5e64a78b6609968859ff86889f5b898c1a778c06ec00/lark-1.2.2-py3-none-any.whl", hash = "sha256:c2276486b02f0f1b90be155f2c8ba4a8e194d42775786db622faccd652d8e80c", size = 111036, upload-time = "2024-08-13T19:48:58.603Z" }, +] + +[[package]] +name = "lxml" +version = "6.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/aa/88/262177de60548e5a2bfc46ad28232c9e9cbde697bd94132aeb80364675cb/lxml-6.0.2.tar.gz", hash = "sha256:cd79f3367bd74b317dda655dc8fcfa304d9eb6e4fb06b7168c5cf27f96e0cd62", size = 4073426, upload-time = "2025-09-22T04:04:59.287Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/d5/becbe1e2569b474a23f0c672ead8a29ac50b2dc1d5b9de184831bda8d14c/lxml-6.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:13e35cbc684aadf05d8711a5d1b5857c92e5e580efa9a0d2be197199c8def607", size = 8634365, upload-time = "2025-09-22T04:00:45.672Z" }, + { url = "https://files.pythonhosted.org/packages/28/66/1ced58f12e804644426b85d0bb8a4478ca77bc1761455da310505f1a3526/lxml-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3b1675e096e17c6fe9c0e8c81434f5736c0739ff9ac6123c87c2d452f48fc938", size = 4650793, upload-time = "2025-09-22T04:00:47.783Z" }, + { url = "https://files.pythonhosted.org/packages/11/84/549098ffea39dfd167e3f174b4ce983d0eed61f9d8d25b7bf2a57c3247fc/lxml-6.0.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8ac6e5811ae2870953390452e3476694196f98d447573234592d30488147404d", size = 4944362, upload-time = "2025-09-22T04:00:49.845Z" }, + { url = "https://files.pythonhosted.org/packages/ac/bd/f207f16abf9749d2037453d56b643a7471d8fde855a231a12d1e095c4f01/lxml-6.0.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5aa0fc67ae19d7a64c3fe725dc9a1bb11f80e01f78289d05c6f62545affec438", size = 5083152, upload-time = "2025-09-22T04:00:51.709Z" }, + { url = "https://files.pythonhosted.org/packages/15/ae/bd813e87d8941d52ad5b65071b1affb48da01c4ed3c9c99e40abb266fbff/lxml-6.0.2-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:de496365750cc472b4e7902a485d3f152ecf57bd3ba03ddd5578ed8ceb4c5964", size = 5023539, upload-time = "2025-09-22T04:00:53.593Z" }, + { url = "https://files.pythonhosted.org/packages/02/cd/9bfef16bd1d874fbe0cb51afb00329540f30a3283beb9f0780adbb7eec03/lxml-6.0.2-cp311-cp311-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:200069a593c5e40b8f6fc0d84d86d970ba43138c3e68619ffa234bc9bb806a4d", size = 5344853, upload-time = "2025-09-22T04:00:55.524Z" }, + { url = "https://files.pythonhosted.org/packages/b8/89/ea8f91594bc5dbb879734d35a6f2b0ad50605d7fb419de2b63d4211765cc/lxml-6.0.2-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7d2de809c2ee3b888b59f995625385f74629707c9355e0ff856445cdcae682b7", size = 5225133, upload-time = "2025-09-22T04:00:57.269Z" }, + { url = "https://files.pythonhosted.org/packages/b9/37/9c735274f5dbec726b2db99b98a43950395ba3d4a1043083dba2ad814170/lxml-6.0.2-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:b2c3da8d93cf5db60e8858c17684c47d01fee6405e554fb55018dd85fc23b178", size = 4677944, upload-time = "2025-09-22T04:00:59.052Z" }, + { url = "https://files.pythonhosted.org/packages/20/28/7dfe1ba3475d8bfca3878365075abe002e05d40dfaaeb7ec01b4c587d533/lxml-6.0.2-cp311-cp311-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:442de7530296ef5e188373a1ea5789a46ce90c4847e597856570439621d9c553", size = 5284535, upload-time = "2025-09-22T04:01:01.335Z" }, + { url = "https://files.pythonhosted.org/packages/e7/cf/5f14bc0de763498fc29510e3532bf2b4b3a1c1d5d0dff2e900c16ba021ef/lxml-6.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2593c77efde7bfea7f6389f1ab249b15ed4aa5bc5cb5131faa3b843c429fbedb", size = 5067343, upload-time = "2025-09-22T04:01:03.13Z" }, + { url = "https://files.pythonhosted.org/packages/1c/b0/bb8275ab5472f32b28cfbbcc6db7c9d092482d3439ca279d8d6fa02f7025/lxml-6.0.2-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:3e3cb08855967a20f553ff32d147e14329b3ae70ced6edc2f282b94afbc74b2a", size = 4725419, upload-time = "2025-09-22T04:01:05.013Z" }, + { url = "https://files.pythonhosted.org/packages/25/4c/7c222753bc72edca3b99dbadba1b064209bc8ed4ad448af990e60dcce462/lxml-6.0.2-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:2ed6c667fcbb8c19c6791bbf40b7268ef8ddf5a96940ba9404b9f9a304832f6c", size = 5275008, upload-time = "2025-09-22T04:01:07.327Z" }, + { url = "https://files.pythonhosted.org/packages/6c/8c/478a0dc6b6ed661451379447cdbec77c05741a75736d97e5b2b729687828/lxml-6.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b8f18914faec94132e5b91e69d76a5c1d7b0c73e2489ea8929c4aaa10b76bbf7", size = 5248906, upload-time = "2025-09-22T04:01:09.452Z" }, + { url = "https://files.pythonhosted.org/packages/2d/d9/5be3a6ab2784cdf9accb0703b65e1b64fcdd9311c9f007630c7db0cfcce1/lxml-6.0.2-cp311-cp311-win32.whl", hash = "sha256:6605c604e6daa9e0d7f0a2137bdc47a2e93b59c60a65466353e37f8272f47c46", size = 3610357, upload-time = "2025-09-22T04:01:11.102Z" }, + { url = "https://files.pythonhosted.org/packages/e2/7d/ca6fb13349b473d5732fb0ee3eec8f6c80fc0688e76b7d79c1008481bf1f/lxml-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e5867f2651016a3afd8dd2c8238baa66f1e2802f44bc17e236f547ace6647078", size = 4036583, upload-time = "2025-09-22T04:01:12.766Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a2/51363b5ecd3eab46563645f3a2c3836a2fc67d01a1b87c5017040f39f567/lxml-6.0.2-cp311-cp311-win_arm64.whl", hash = "sha256:4197fb2534ee05fd3e7afaab5d8bfd6c2e186f65ea7f9cd6a82809c887bd1285", size = 3680591, upload-time = "2025-09-22T04:01:14.874Z" }, + { url = "https://files.pythonhosted.org/packages/f3/c8/8ff2bc6b920c84355146cd1ab7d181bc543b89241cfb1ebee824a7c81457/lxml-6.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a59f5448ba2ceccd06995c95ea59a7674a10de0810f2ce90c9006f3cbc044456", size = 8661887, upload-time = "2025-09-22T04:01:17.265Z" }, + { url = "https://files.pythonhosted.org/packages/37/6f/9aae1008083bb501ef63284220ce81638332f9ccbfa53765b2b7502203cf/lxml-6.0.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e8113639f3296706fbac34a30813929e29247718e88173ad849f57ca59754924", size = 4667818, upload-time = "2025-09-22T04:01:19.688Z" }, + { url = "https://files.pythonhosted.org/packages/f1/ca/31fb37f99f37f1536c133476674c10b577e409c0a624384147653e38baf2/lxml-6.0.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a8bef9b9825fa8bc816a6e641bb67219489229ebc648be422af695f6e7a4fa7f", size = 4950807, upload-time = "2025-09-22T04:01:21.487Z" }, + { url = "https://files.pythonhosted.org/packages/da/87/f6cb9442e4bada8aab5ae7e1046264f62fdbeaa6e3f6211b93f4c0dd97f1/lxml-6.0.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:65ea18d710fd14e0186c2f973dc60bb52039a275f82d3c44a0e42b43440ea534", size = 5109179, upload-time = "2025-09-22T04:01:23.32Z" }, + { url = "https://files.pythonhosted.org/packages/c8/20/a7760713e65888db79bbae4f6146a6ae5c04e4a204a3c48896c408cd6ed2/lxml-6.0.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c371aa98126a0d4c739ca93ceffa0fd7a5d732e3ac66a46e74339acd4d334564", size = 5023044, upload-time = "2025-09-22T04:01:25.118Z" }, + { url = "https://files.pythonhosted.org/packages/a2/b0/7e64e0460fcb36471899f75831509098f3fd7cd02a3833ac517433cb4f8f/lxml-6.0.2-cp312-cp312-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:700efd30c0fa1a3581d80a748157397559396090a51d306ea59a70020223d16f", size = 5359685, upload-time = "2025-09-22T04:01:27.398Z" }, + { url = "https://files.pythonhosted.org/packages/b9/e1/e5df362e9ca4e2f48ed6411bd4b3a0ae737cc842e96877f5bf9428055ab4/lxml-6.0.2-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c33e66d44fe60e72397b487ee92e01da0d09ba2d66df8eae42d77b6d06e5eba0", size = 5654127, upload-time = "2025-09-22T04:01:29.629Z" }, + { url = "https://files.pythonhosted.org/packages/c6/d1/232b3309a02d60f11e71857778bfcd4acbdb86c07db8260caf7d008b08f8/lxml-6.0.2-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:90a345bbeaf9d0587a3aaffb7006aa39ccb6ff0e96a57286c0cb2fd1520ea192", size = 5253958, upload-time = "2025-09-22T04:01:31.535Z" }, + { url = "https://files.pythonhosted.org/packages/35/35/d955a070994725c4f7d80583a96cab9c107c57a125b20bb5f708fe941011/lxml-6.0.2-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:064fdadaf7a21af3ed1dcaa106b854077fbeada827c18f72aec9346847cd65d0", size = 4711541, upload-time = "2025-09-22T04:01:33.801Z" }, + { url = "https://files.pythonhosted.org/packages/1e/be/667d17363b38a78c4bd63cfd4b4632029fd68d2c2dc81f25ce9eb5224dd5/lxml-6.0.2-cp312-cp312-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fbc74f42c3525ac4ffa4b89cbdd00057b6196bcefe8bce794abd42d33a018092", size = 5267426, upload-time = "2025-09-22T04:01:35.639Z" }, + { url = "https://files.pythonhosted.org/packages/ea/47/62c70aa4a1c26569bc958c9ca86af2bb4e1f614e8c04fb2989833874f7ae/lxml-6.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6ddff43f702905a4e32bc24f3f2e2edfe0f8fde3277d481bffb709a4cced7a1f", size = 5064917, upload-time = "2025-09-22T04:01:37.448Z" }, + { url = "https://files.pythonhosted.org/packages/bd/55/6ceddaca353ebd0f1908ef712c597f8570cc9c58130dbb89903198e441fd/lxml-6.0.2-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:6da5185951d72e6f5352166e3da7b0dc27aa70bd1090b0eb3f7f7212b53f1bb8", size = 4788795, upload-time = "2025-09-22T04:01:39.165Z" }, + { url = "https://files.pythonhosted.org/packages/cf/e8/fd63e15da5e3fd4c2146f8bbb3c14e94ab850589beab88e547b2dbce22e1/lxml-6.0.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:57a86e1ebb4020a38d295c04fc79603c7899e0df71588043eb218722dabc087f", size = 5676759, upload-time = "2025-09-22T04:01:41.506Z" }, + { url = "https://files.pythonhosted.org/packages/76/47/b3ec58dc5c374697f5ba37412cd2728f427d056315d124dd4b61da381877/lxml-6.0.2-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:2047d8234fe735ab77802ce5f2297e410ff40f5238aec569ad7c8e163d7b19a6", size = 5255666, upload-time = "2025-09-22T04:01:43.363Z" }, + { url = "https://files.pythonhosted.org/packages/19/93/03ba725df4c3d72afd9596eef4a37a837ce8e4806010569bedfcd2cb68fd/lxml-6.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6f91fd2b2ea15a6800c8e24418c0775a1694eefc011392da73bc6cef2623b322", size = 5277989, upload-time = "2025-09-22T04:01:45.215Z" }, + { url = "https://files.pythonhosted.org/packages/c6/80/c06de80bfce881d0ad738576f243911fccf992687ae09fd80b734712b39c/lxml-6.0.2-cp312-cp312-win32.whl", hash = "sha256:3ae2ce7d6fedfb3414a2b6c5e20b249c4c607f72cb8d2bb7cc9c6ec7c6f4e849", size = 3611456, upload-time = "2025-09-22T04:01:48.243Z" }, + { url = "https://files.pythonhosted.org/packages/f7/d7/0cdfb6c3e30893463fb3d1e52bc5f5f99684a03c29a0b6b605cfae879cd5/lxml-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:72c87e5ee4e58a8354fb9c7c84cbf95a1c8236c127a5d1b7683f04bed8361e1f", size = 4011793, upload-time = "2025-09-22T04:01:50.042Z" }, + { url = "https://files.pythonhosted.org/packages/ea/7b/93c73c67db235931527301ed3785f849c78991e2e34f3fd9a6663ffda4c5/lxml-6.0.2-cp312-cp312-win_arm64.whl", hash = "sha256:61cb10eeb95570153e0c0e554f58df92ecf5109f75eacad4a95baa709e26c3d6", size = 3672836, upload-time = "2025-09-22T04:01:52.145Z" }, + { url = "https://files.pythonhosted.org/packages/53/fd/4e8f0540608977aea078bf6d79f128e0e2c2bba8af1acf775c30baa70460/lxml-6.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:9b33d21594afab46f37ae58dfadd06636f154923c4e8a4d754b0127554eb2e77", size = 8648494, upload-time = "2025-09-22T04:01:54.242Z" }, + { url = "https://files.pythonhosted.org/packages/5d/f4/2a94a3d3dfd6c6b433501b8d470a1960a20ecce93245cf2db1706adf6c19/lxml-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6c8963287d7a4c5c9a432ff487c52e9c5618667179c18a204bdedb27310f022f", size = 4661146, upload-time = "2025-09-22T04:01:56.282Z" }, + { url = "https://files.pythonhosted.org/packages/25/2e/4efa677fa6b322013035d38016f6ae859d06cac67437ca7dc708a6af7028/lxml-6.0.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1941354d92699fb5ffe6ed7b32f9649e43c2feb4b97205f75866f7d21aa91452", size = 4946932, upload-time = "2025-09-22T04:01:58.989Z" }, + { url = "https://files.pythonhosted.org/packages/ce/0f/526e78a6d38d109fdbaa5049c62e1d32fdd70c75fb61c4eadf3045d3d124/lxml-6.0.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bb2f6ca0ae2d983ded09357b84af659c954722bbf04dea98030064996d156048", size = 5100060, upload-time = "2025-09-22T04:02:00.812Z" }, + { url = "https://files.pythonhosted.org/packages/81/76/99de58d81fa702cc0ea7edae4f4640416c2062813a00ff24bd70ac1d9c9b/lxml-6.0.2-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eb2a12d704f180a902d7fa778c6d71f36ceb7b0d317f34cdc76a5d05aa1dd1df", size = 5019000, upload-time = "2025-09-22T04:02:02.671Z" }, + { url = "https://files.pythonhosted.org/packages/b5/35/9e57d25482bc9a9882cb0037fdb9cc18f4b79d85df94fa9d2a89562f1d25/lxml-6.0.2-cp313-cp313-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:6ec0e3f745021bfed19c456647f0298d60a24c9ff86d9d051f52b509663feeb1", size = 5348496, upload-time = "2025-09-22T04:02:04.904Z" }, + { url = "https://files.pythonhosted.org/packages/a6/8e/cb99bd0b83ccc3e8f0f528e9aa1f7a9965dfec08c617070c5db8d63a87ce/lxml-6.0.2-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:846ae9a12d54e368933b9759052d6206a9e8b250291109c48e350c1f1f49d916", size = 5643779, upload-time = "2025-09-22T04:02:06.689Z" }, + { url = "https://files.pythonhosted.org/packages/d0/34/9e591954939276bb679b73773836c6684c22e56d05980e31d52a9a8deb18/lxml-6.0.2-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ef9266d2aa545d7374938fb5c484531ef5a2ec7f2d573e62f8ce722c735685fd", size = 5244072, upload-time = "2025-09-22T04:02:08.587Z" }, + { url = "https://files.pythonhosted.org/packages/8d/27/b29ff065f9aaca443ee377aff699714fcbffb371b4fce5ac4ca759e436d5/lxml-6.0.2-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:4077b7c79f31755df33b795dc12119cb557a0106bfdab0d2c2d97bd3cf3dffa6", size = 4718675, upload-time = "2025-09-22T04:02:10.783Z" }, + { url = "https://files.pythonhosted.org/packages/2b/9f/f756f9c2cd27caa1a6ef8c32ae47aadea697f5c2c6d07b0dae133c244fbe/lxml-6.0.2-cp313-cp313-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a7c5d5e5f1081955358533be077166ee97ed2571d6a66bdba6ec2f609a715d1a", size = 5255171, upload-time = "2025-09-22T04:02:12.631Z" }, + { url = "https://files.pythonhosted.org/packages/61/46/bb85ea42d2cb1bd8395484fd72f38e3389611aa496ac7772da9205bbda0e/lxml-6.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:8f8d0cbd0674ee89863a523e6994ac25fd5be9c8486acfc3e5ccea679bad2679", size = 5057175, upload-time = "2025-09-22T04:02:14.718Z" }, + { url = "https://files.pythonhosted.org/packages/95/0c/443fc476dcc8e41577f0af70458c50fe299a97bb6b7505bb1ae09aa7f9ac/lxml-6.0.2-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:2cbcbf6d6e924c28f04a43f3b6f6e272312a090f269eff68a2982e13e5d57659", size = 4785688, upload-time = "2025-09-22T04:02:16.957Z" }, + { url = "https://files.pythonhosted.org/packages/48/78/6ef0b359d45bb9697bc5a626e1992fa5d27aa3f8004b137b2314793b50a0/lxml-6.0.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:dfb874cfa53340009af6bdd7e54ebc0d21012a60a4e65d927c2e477112e63484", size = 5660655, upload-time = "2025-09-22T04:02:18.815Z" }, + { url = "https://files.pythonhosted.org/packages/ff/ea/e1d33808f386bc1339d08c0dcada6e4712d4ed8e93fcad5f057070b7988a/lxml-6.0.2-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:fb8dae0b6b8b7f9e96c26fdd8121522ce5de9bb5538010870bd538683d30e9a2", size = 5247695, upload-time = "2025-09-22T04:02:20.593Z" }, + { url = "https://files.pythonhosted.org/packages/4f/47/eba75dfd8183673725255247a603b4ad606f4ae657b60c6c145b381697da/lxml-6.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:358d9adae670b63e95bc59747c72f4dc97c9ec58881d4627fe0120da0f90d314", size = 5269841, upload-time = "2025-09-22T04:02:22.489Z" }, + { url = "https://files.pythonhosted.org/packages/76/04/5c5e2b8577bc936e219becb2e98cdb1aca14a4921a12995b9d0c523502ae/lxml-6.0.2-cp313-cp313-win32.whl", hash = "sha256:e8cd2415f372e7e5a789d743d133ae474290a90b9023197fd78f32e2dc6873e2", size = 3610700, upload-time = "2025-09-22T04:02:24.465Z" }, + { url = "https://files.pythonhosted.org/packages/fe/0a/4643ccc6bb8b143e9f9640aa54e38255f9d3b45feb2cbe7ae2ca47e8782e/lxml-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:b30d46379644fbfc3ab81f8f82ae4de55179414651f110a1514f0b1f8f6cb2d7", size = 4010347, upload-time = "2025-09-22T04:02:26.286Z" }, + { url = "https://files.pythonhosted.org/packages/31/ef/dcf1d29c3f530577f61e5fe2f1bd72929acf779953668a8a47a479ae6f26/lxml-6.0.2-cp313-cp313-win_arm64.whl", hash = "sha256:13dcecc9946dca97b11b7c40d29fba63b55ab4170d3c0cf8c0c164343b9bfdcf", size = 3671248, upload-time = "2025-09-22T04:02:27.918Z" }, + { url = "https://files.pythonhosted.org/packages/0b/11/29d08bc103a62c0eba8016e7ed5aeebbf1e4312e83b0b1648dd203b0e87d/lxml-6.0.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1c06035eafa8404b5cf475bb37a9f6088b0aca288d4ccc9d69389750d5543700", size = 3949829, upload-time = "2025-09-22T04:04:45.608Z" }, + { url = "https://files.pythonhosted.org/packages/12/b3/52ab9a3b31e5ab8238da241baa19eec44d2ab426532441ee607165aebb52/lxml-6.0.2-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c7d13103045de1bdd6fe5d61802565f1a3537d70cd3abf596aa0af62761921ee", size = 4226277, upload-time = "2025-09-22T04:04:47.754Z" }, + { url = "https://files.pythonhosted.org/packages/a0/33/1eaf780c1baad88224611df13b1c2a9dfa460b526cacfe769103ff50d845/lxml-6.0.2-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0a3c150a95fbe5ac91de323aa756219ef9cf7fde5a3f00e2281e30f33fa5fa4f", size = 4330433, upload-time = "2025-09-22T04:04:49.907Z" }, + { url = "https://files.pythonhosted.org/packages/7a/c1/27428a2ff348e994ab4f8777d3a0ad510b6b92d37718e5887d2da99952a2/lxml-6.0.2-pp311-pypy311_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:60fa43be34f78bebb27812ed90f1925ec99560b0fa1decdb7d12b84d857d31e9", size = 4272119, upload-time = "2025-09-22T04:04:51.801Z" }, + { url = "https://files.pythonhosted.org/packages/f0/d0/3020fa12bcec4ab62f97aab026d57c2f0cfd480a558758d9ca233bb6a79d/lxml-6.0.2-pp311-pypy311_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:21c73b476d3cfe836be731225ec3421fa2f048d84f6df6a8e70433dff1376d5a", size = 4417314, upload-time = "2025-09-22T04:04:55.024Z" }, + { url = "https://files.pythonhosted.org/packages/6c/77/d7f491cbc05303ac6801651aabeb262d43f319288c1ea96c66b1d2692ff3/lxml-6.0.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:27220da5be049e936c3aca06f174e8827ca6445a4353a1995584311487fc4e3e", size = 3518768, upload-time = "2025-09-22T04:04:57.097Z" }, +] + +[[package]] +name = "markdown-it-py" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mdurl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596, upload-time = "2023-06-03T06:41:14.443Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528, upload-time = "2023-06-03T06:41:11.019Z" }, +] + +[[package]] +name = "markupsafe" +version = "3.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537, upload-time = "2024-10-18T15:21:54.129Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/28/bbf83e3f76936960b850435576dd5e67034e200469571be53f69174a2dfd/MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d", size = 14353, upload-time = "2024-10-18T15:21:02.187Z" }, + { url = "https://files.pythonhosted.org/packages/6c/30/316d194b093cde57d448a4c3209f22e3046c5bb2fb0820b118292b334be7/MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93", size = 12392, upload-time = "2024-10-18T15:21:02.941Z" }, + { url = "https://files.pythonhosted.org/packages/f2/96/9cdafba8445d3a53cae530aaf83c38ec64c4d5427d975c974084af5bc5d2/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832", size = 23984, upload-time = "2024-10-18T15:21:03.953Z" }, + { url = "https://files.pythonhosted.org/packages/f1/a4/aefb044a2cd8d7334c8a47d3fb2c9f328ac48cb349468cc31c20b539305f/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84", size = 23120, upload-time = "2024-10-18T15:21:06.495Z" }, + { url = "https://files.pythonhosted.org/packages/8d/21/5e4851379f88f3fad1de30361db501300d4f07bcad047d3cb0449fc51f8c/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca", size = 23032, upload-time = "2024-10-18T15:21:07.295Z" }, + { url = "https://files.pythonhosted.org/packages/00/7b/e92c64e079b2d0d7ddf69899c98842f3f9a60a1ae72657c89ce2655c999d/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798", size = 24057, upload-time = "2024-10-18T15:21:08.073Z" }, + { url = "https://files.pythonhosted.org/packages/f9/ac/46f960ca323037caa0a10662ef97d0a4728e890334fc156b9f9e52bcc4ca/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e", size = 23359, upload-time = "2024-10-18T15:21:09.318Z" }, + { url = "https://files.pythonhosted.org/packages/69/84/83439e16197337b8b14b6a5b9c2105fff81d42c2a7c5b58ac7b62ee2c3b1/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4", size = 23306, upload-time = "2024-10-18T15:21:10.185Z" }, + { url = "https://files.pythonhosted.org/packages/9a/34/a15aa69f01e2181ed8d2b685c0d2f6655d5cca2c4db0ddea775e631918cd/MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d", size = 15094, upload-time = "2024-10-18T15:21:11.005Z" }, + { url = "https://files.pythonhosted.org/packages/da/b8/3a3bd761922d416f3dc5d00bfbed11f66b1ab89a0c2b6e887240a30b0f6b/MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b", size = 15521, upload-time = "2024-10-18T15:21:12.911Z" }, + { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274, upload-time = "2024-10-18T15:21:13.777Z" }, + { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348, upload-time = "2024-10-18T15:21:14.822Z" }, + { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149, upload-time = "2024-10-18T15:21:15.642Z" }, + { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118, upload-time = "2024-10-18T15:21:17.133Z" }, + { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993, upload-time = "2024-10-18T15:21:18.064Z" }, + { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178, upload-time = "2024-10-18T15:21:18.859Z" }, + { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319, upload-time = "2024-10-18T15:21:19.671Z" }, + { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352, upload-time = "2024-10-18T15:21:20.971Z" }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097, upload-time = "2024-10-18T15:21:22.646Z" }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601, upload-time = "2024-10-18T15:21:23.499Z" }, + { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274, upload-time = "2024-10-18T15:21:24.577Z" }, + { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352, upload-time = "2024-10-18T15:21:25.382Z" }, + { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122, upload-time = "2024-10-18T15:21:26.199Z" }, + { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085, upload-time = "2024-10-18T15:21:27.029Z" }, + { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978, upload-time = "2024-10-18T15:21:27.846Z" }, + { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208, upload-time = "2024-10-18T15:21:28.744Z" }, + { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357, upload-time = "2024-10-18T15:21:29.545Z" }, + { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344, upload-time = "2024-10-18T15:21:30.366Z" }, + { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101, upload-time = "2024-10-18T15:21:31.207Z" }, + { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603, upload-time = "2024-10-18T15:21:32.032Z" }, + { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510, upload-time = "2024-10-18T15:21:33.625Z" }, + { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486, upload-time = "2024-10-18T15:21:34.611Z" }, + { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480, upload-time = "2024-10-18T15:21:35.398Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914, upload-time = "2024-10-18T15:21:36.231Z" }, + { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796, upload-time = "2024-10-18T15:21:37.073Z" }, + { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473, upload-time = "2024-10-18T15:21:37.932Z" }, + { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114, upload-time = "2024-10-18T15:21:39.799Z" }, + { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098, upload-time = "2024-10-18T15:21:40.813Z" }, + { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208, upload-time = "2024-10-18T15:21:41.814Z" }, + { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739, upload-time = "2024-10-18T15:21:42.784Z" }, +] + +[[package]] +name = "marshmallow" +version = "3.26.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ab/5e/5e53d26b42ab75491cda89b871dab9e97c840bf12c63ec58a1919710cd06/marshmallow-3.26.1.tar.gz", hash = "sha256:e6d8affb6cb61d39d26402096dc0aee12d5a26d490a121f118d2e81dc0719dc6", size = 221825, upload-time = "2025-02-03T15:32:25.093Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/34/75/51952c7b2d3873b44a0028b1bd26a25078c18f92f256608e8d1dc61b39fd/marshmallow-3.26.1-py3-none-any.whl", hash = "sha256:3350409f20a70a7e4e11a27661187b77cdcaeb20abca41c1454fe33636bea09c", size = 50878, upload-time = "2025-02-03T15:32:22.295Z" }, +] + +[[package]] +name = "matplotlib" +version = "3.10.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "contourpy" }, + { name = "cycler" }, + { name = "fonttools" }, + { name = "kiwisolver" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "pillow" }, + { name = "pyparsing" }, + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ae/e2/d2d5295be2f44c678ebaf3544ba32d20c1f9ef08c49fe47f496180e1db15/matplotlib-3.10.7.tar.gz", hash = "sha256:a06ba7e2a2ef9131c79c49e63dad355d2d878413a0376c1727c8b9335ff731c7", size = 34804865, upload-time = "2025-10-09T00:28:00.669Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/bc/0fb489005669127ec13f51be0c6adc074d7cf191075dab1da9fe3b7a3cfc/matplotlib-3.10.7-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:53b492410a6cd66c7a471de6c924f6ede976e963c0f3097a3b7abfadddc67d0a", size = 8257507, upload-time = "2025-10-09T00:26:19.073Z" }, + { url = "https://files.pythonhosted.org/packages/e2/6a/d42588ad895279ff6708924645b5d2ed54a7fb2dc045c8a804e955aeace1/matplotlib-3.10.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d9749313deb729f08207718d29c86246beb2ea3fdba753595b55901dee5d2fd6", size = 8119565, upload-time = "2025-10-09T00:26:21.023Z" }, + { url = "https://files.pythonhosted.org/packages/10/b7/4aa196155b4d846bd749cf82aa5a4c300cf55a8b5e0dfa5b722a63c0f8a0/matplotlib-3.10.7-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2222c7ba2cbde7fe63032769f6eb7e83ab3227f47d997a8453377709b7fe3a5a", size = 8692668, upload-time = "2025-10-09T00:26:22.967Z" }, + { url = "https://files.pythonhosted.org/packages/e6/e7/664d2b97016f46683a02d854d730cfcf54ff92c1dafa424beebef50f831d/matplotlib-3.10.7-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e91f61a064c92c307c5a9dc8c05dc9f8a68f0a3be199d9a002a0622e13f874a1", size = 9521051, upload-time = "2025-10-09T00:26:25.041Z" }, + { url = "https://files.pythonhosted.org/packages/a8/a3/37aef1404efa615f49b5758a5e0261c16dd88f389bc1861e722620e4a754/matplotlib-3.10.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6f1851eab59ca082c95df5a500106bad73672645625e04538b3ad0f69471ffcc", size = 9576878, upload-time = "2025-10-09T00:26:27.478Z" }, + { url = "https://files.pythonhosted.org/packages/33/cd/b145f9797126f3f809d177ca378de57c45413c5099c5990de2658760594a/matplotlib-3.10.7-cp311-cp311-win_amd64.whl", hash = "sha256:6516ce375109c60ceec579e699524e9d504cd7578506f01150f7a6bc174a775e", size = 8115142, upload-time = "2025-10-09T00:26:29.774Z" }, + { url = "https://files.pythonhosted.org/packages/2e/39/63bca9d2b78455ed497fcf51a9c71df200a11048f48249038f06447fa947/matplotlib-3.10.7-cp311-cp311-win_arm64.whl", hash = "sha256:b172db79759f5f9bc13ef1c3ef8b9ee7b37b0247f987fbbbdaa15e4f87fd46a9", size = 7992439, upload-time = "2025-10-09T00:26:40.32Z" }, + { url = "https://files.pythonhosted.org/packages/be/b3/09eb0f7796932826ec20c25b517d568627754f6c6462fca19e12c02f2e12/matplotlib-3.10.7-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7a0edb7209e21840e8361e91ea84ea676658aa93edd5f8762793dec77a4a6748", size = 8272389, upload-time = "2025-10-09T00:26:42.474Z" }, + { url = "https://files.pythonhosted.org/packages/11/0b/1ae80ddafb8652fd8046cb5c8460ecc8d4afccb89e2c6d6bec61e04e1eaf/matplotlib-3.10.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c380371d3c23e0eadf8ebff114445b9f970aff2010198d498d4ab4c3b41eea4f", size = 8128247, upload-time = "2025-10-09T00:26:44.77Z" }, + { url = "https://files.pythonhosted.org/packages/7d/18/95ae2e242d4a5c98bd6e90e36e128d71cf1c7e39b0874feaed3ef782e789/matplotlib-3.10.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d5f256d49fea31f40f166a5e3131235a5d2f4b7f44520b1cf0baf1ce568ccff0", size = 8696996, upload-time = "2025-10-09T00:26:46.792Z" }, + { url = "https://files.pythonhosted.org/packages/7e/3d/5b559efc800bd05cb2033aa85f7e13af51958136a48327f7c261801ff90a/matplotlib-3.10.7-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:11ae579ac83cdf3fb72573bb89f70e0534de05266728740d478f0f818983c695", size = 9530153, upload-time = "2025-10-09T00:26:49.07Z" }, + { url = "https://files.pythonhosted.org/packages/88/57/eab4a719fd110312d3c220595d63a3c85ec2a39723f0f4e7fa7e6e3f74ba/matplotlib-3.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4c14b6acd16cddc3569a2d515cfdd81c7a68ac5639b76548cfc1a9e48b20eb65", size = 9593093, upload-time = "2025-10-09T00:26:51.067Z" }, + { url = "https://files.pythonhosted.org/packages/31/3c/80816f027b3a4a28cd2a0a6ef7f89a2db22310e945cd886ec25bfb399221/matplotlib-3.10.7-cp312-cp312-win_amd64.whl", hash = "sha256:0d8c32b7ea6fb80b1aeff5a2ceb3fb9778e2759e899d9beff75584714afcc5ee", size = 8122771, upload-time = "2025-10-09T00:26:53.296Z" }, + { url = "https://files.pythonhosted.org/packages/de/77/ef1fc78bfe99999b2675435cc52120887191c566b25017d78beaabef7f2d/matplotlib-3.10.7-cp312-cp312-win_arm64.whl", hash = "sha256:5f3f6d315dcc176ba7ca6e74c7768fb7e4cf566c49cb143f6bc257b62e634ed8", size = 7992812, upload-time = "2025-10-09T00:26:54.882Z" }, + { url = "https://files.pythonhosted.org/packages/02/9c/207547916a02c78f6bdd83448d9b21afbc42f6379ed887ecf610984f3b4e/matplotlib-3.10.7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1d9d3713a237970569156cfb4de7533b7c4eacdd61789726f444f96a0d28f57f", size = 8273212, upload-time = "2025-10-09T00:26:56.752Z" }, + { url = "https://files.pythonhosted.org/packages/bc/d0/b3d3338d467d3fc937f0bb7f256711395cae6f78e22cef0656159950adf0/matplotlib-3.10.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:37a1fea41153dd6ee061d21ab69c9cf2cf543160b1b85d89cd3d2e2a7902ca4c", size = 8128713, upload-time = "2025-10-09T00:26:59.001Z" }, + { url = "https://files.pythonhosted.org/packages/22/ff/6425bf5c20d79aa5b959d1ce9e65f599632345391381c9a104133fe0b171/matplotlib-3.10.7-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b3c4ea4948d93c9c29dc01c0c23eef66f2101bf75158c291b88de6525c55c3d1", size = 8698527, upload-time = "2025-10-09T00:27:00.69Z" }, + { url = "https://files.pythonhosted.org/packages/d0/7f/ccdca06f4c2e6c7989270ed7829b8679466682f4cfc0f8c9986241c023b6/matplotlib-3.10.7-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:22df30ffaa89f6643206cf13877191c63a50e8f800b038bc39bee9d2d4957632", size = 9529690, upload-time = "2025-10-09T00:27:02.664Z" }, + { url = "https://files.pythonhosted.org/packages/b8/95/b80fc2c1f269f21ff3d193ca697358e24408c33ce2b106a7438a45407b63/matplotlib-3.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b69676845a0a66f9da30e87f48be36734d6748024b525ec4710be40194282c84", size = 9593732, upload-time = "2025-10-09T00:27:04.653Z" }, + { url = "https://files.pythonhosted.org/packages/e1/b6/23064a96308b9aeceeffa65e96bcde459a2ea4934d311dee20afde7407a0/matplotlib-3.10.7-cp313-cp313-win_amd64.whl", hash = "sha256:744991e0cc863dd669c8dc9136ca4e6e0082be2070b9d793cbd64bec872a6815", size = 8122727, upload-time = "2025-10-09T00:27:06.814Z" }, + { url = "https://files.pythonhosted.org/packages/b3/a6/2faaf48133b82cf3607759027f82b5c702aa99cdfcefb7f93d6ccf26a424/matplotlib-3.10.7-cp313-cp313-win_arm64.whl", hash = "sha256:fba2974df0bf8ce3c995fa84b79cde38326e0f7b5409e7a3a481c1141340bcf7", size = 7992958, upload-time = "2025-10-09T00:27:08.567Z" }, + { url = "https://files.pythonhosted.org/packages/4a/f0/b018fed0b599bd48d84c08794cb242227fe3341952da102ee9d9682db574/matplotlib-3.10.7-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:932c55d1fa7af4423422cb6a492a31cbcbdbe68fd1a9a3f545aa5e7a143b5355", size = 8316849, upload-time = "2025-10-09T00:27:10.254Z" }, + { url = "https://files.pythonhosted.org/packages/b0/b7/bb4f23856197659f275e11a2a164e36e65e9b48ea3e93c4ec25b4f163198/matplotlib-3.10.7-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5e38c2d581d62ee729a6e144c47a71b3f42fb4187508dbbf4fe71d5612c3433b", size = 8178225, upload-time = "2025-10-09T00:27:12.241Z" }, + { url = "https://files.pythonhosted.org/packages/62/56/0600609893ff277e6f3ab3c0cef4eafa6e61006c058e84286c467223d4d5/matplotlib-3.10.7-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:786656bb13c237bbcebcd402f65f44dd61ead60ee3deb045af429d889c8dbc67", size = 8711708, upload-time = "2025-10-09T00:27:13.879Z" }, + { url = "https://files.pythonhosted.org/packages/d8/1a/6bfecb0cafe94d6658f2f1af22c43b76cf7a1c2f0dc34ef84cbb6809617e/matplotlib-3.10.7-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:09d7945a70ea43bf9248f4b6582734c2fe726723204a76eca233f24cffc7ef67", size = 9541409, upload-time = "2025-10-09T00:27:15.684Z" }, + { url = "https://files.pythonhosted.org/packages/08/50/95122a407d7f2e446fd865e2388a232a23f2b81934960ea802f3171518e4/matplotlib-3.10.7-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:d0b181e9fa8daf1d9f2d4c547527b167cb8838fc587deabca7b5c01f97199e84", size = 9594054, upload-time = "2025-10-09T00:27:17.547Z" }, + { url = "https://files.pythonhosted.org/packages/13/76/75b194a43b81583478a81e78a07da8d9ca6ddf50dd0a2ccabf258059481d/matplotlib-3.10.7-cp313-cp313t-win_amd64.whl", hash = "sha256:31963603041634ce1a96053047b40961f7a29eb8f9a62e80cc2c0427aa1d22a2", size = 8200100, upload-time = "2025-10-09T00:27:20.039Z" }, + { url = "https://files.pythonhosted.org/packages/f5/9e/6aefebdc9f8235c12bdeeda44cc0383d89c1e41da2c400caf3ee2073a3ce/matplotlib-3.10.7-cp313-cp313t-win_arm64.whl", hash = "sha256:aebed7b50aa6ac698c90f60f854b47e48cd2252b30510e7a1feddaf5a3f72cbf", size = 8042131, upload-time = "2025-10-09T00:27:21.608Z" }, + { url = "https://files.pythonhosted.org/packages/58/8f/76d5dc21ac64a49e5498d7f0472c0781dae442dd266a67458baec38288ec/matplotlib-3.10.7-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:15112bcbaef211bd663fa935ec33313b948e214454d949b723998a43357b17b0", size = 8252283, upload-time = "2025-10-09T00:27:54.739Z" }, + { url = "https://files.pythonhosted.org/packages/27/0d/9c5d4c2317feb31d819e38c9f947c942f42ebd4eb935fc6fd3518a11eaa7/matplotlib-3.10.7-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d2a959c640cdeecdd2ec3136e8ea0441da59bcaf58d67e9c590740addba2cb68", size = 8116733, upload-time = "2025-10-09T00:27:56.406Z" }, + { url = "https://files.pythonhosted.org/packages/9a/cc/3fe688ff1355010937713164caacf9ed443675ac48a997bab6ed23b3f7c0/matplotlib-3.10.7-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3886e47f64611046bc1db523a09dd0a0a6bed6081e6f90e13806dd1d1d1b5e91", size = 8693919, upload-time = "2025-10-09T00:27:58.41Z" }, +] + +[[package]] +name = "matplotlib-inline" +version = "0.1.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/5b/a36a337438a14116b16480db471ad061c36c3694df7c2084a0da7ba538b7/matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90", size = 8159, upload-time = "2024-04-15T13:44:44.803Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899, upload-time = "2024-04-15T13:44:43.265Z" }, +] + +[[package]] +name = "mcp" +version = "1.12.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "httpx" }, + { name = "httpx-sse" }, + { name = "jsonschema" }, + { name = "pydantic" }, + { name = "pydantic-settings" }, + { name = "python-multipart" }, + { name = "pywin32", marker = "sys_platform == 'win32'" }, + { name = "sse-starlette" }, + { name = "starlette" }, + { name = "uvicorn", marker = "sys_platform != 'emscripten'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/45/94/caa0f4754e2437f7033068989f13fee784856f95870c786b0b5c2c0f511e/mcp-1.12.0.tar.gz", hash = "sha256:853f6b17a3f31ea6e2f278c2ec7d3b38457bc80c7c2c675260dd7f04a6fd0e70", size = 424678, upload-time = "2025-07-17T19:46:35.522Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/da/c7eaab6a58f1034de115b7902141ad8f81b4f3bbf7dc0cc267594947a4d7/mcp-1.12.0-py3-none-any.whl", hash = "sha256:19a498b2bf273283e463b4dd1ed83f791fbba5c25bfa16b8b34cfd5571673e7f", size = 158470, upload-time = "2025-07-17T19:46:34.166Z" }, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, +] + +[[package]] +name = "mistune" +version = "3.1.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c4/79/bda47f7dd7c3c55770478d6d02c9960c430b0cf1773b72366ff89126ea31/mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0", size = 94347, upload-time = "2025-03-19T14:27:24.955Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/4d/23c4e4f09da849e127e9f123241946c23c1e30f45a88366879e064211815/mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9", size = 53410, upload-time = "2025-03-19T14:27:23.451Z" }, +] + +[[package]] +name = "multidict" +version = "6.6.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3d/2c/5dad12e82fbdf7470f29bff2171484bf07cb3b16ada60a6589af8f376440/multidict-6.6.3.tar.gz", hash = "sha256:798a9eb12dab0a6c2e29c1de6f3468af5cb2da6053a20dfa3344907eed0937cc", size = 101006, upload-time = "2025-06-30T15:53:46.929Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/f0/1a39863ced51f639c81a5463fbfa9eb4df59c20d1a8769ab9ef4ca57ae04/multidict-6.6.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:18f4eba0cbac3546b8ae31e0bbc55b02c801ae3cbaf80c247fcdd89b456ff58c", size = 76445, upload-time = "2025-06-30T15:51:24.01Z" }, + { url = "https://files.pythonhosted.org/packages/c9/0e/a7cfa451c7b0365cd844e90b41e21fab32edaa1e42fc0c9f68461ce44ed7/multidict-6.6.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef43b5dd842382329e4797c46f10748d8c2b6e0614f46b4afe4aee9ac33159df", size = 44610, upload-time = "2025-06-30T15:51:25.158Z" }, + { url = "https://files.pythonhosted.org/packages/c6/bb/a14a4efc5ee748cc1904b0748be278c31b9295ce5f4d2ef66526f410b94d/multidict-6.6.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bf9bd1fd5eec01494e0f2e8e446a74a85d5e49afb63d75a9934e4a5423dba21d", size = 44267, upload-time = "2025-06-30T15:51:26.326Z" }, + { url = "https://files.pythonhosted.org/packages/c2/f8/410677d563c2d55e063ef74fe578f9d53fe6b0a51649597a5861f83ffa15/multidict-6.6.3-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:5bd8d6f793a787153956cd35e24f60485bf0651c238e207b9a54f7458b16d539", size = 230004, upload-time = "2025-06-30T15:51:27.491Z" }, + { url = "https://files.pythonhosted.org/packages/fd/df/2b787f80059314a98e1ec6a4cc7576244986df3e56b3c755e6fc7c99e038/multidict-6.6.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1bf99b4daf908c73856bd87ee0a2499c3c9a3d19bb04b9c6025e66af3fd07462", size = 247196, upload-time = "2025-06-30T15:51:28.762Z" }, + { url = "https://files.pythonhosted.org/packages/05/f2/f9117089151b9a8ab39f9019620d10d9718eec2ac89e7ca9d30f3ec78e96/multidict-6.6.3-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:0b9e59946b49dafaf990fd9c17ceafa62976e8471a14952163d10a7a630413a9", size = 225337, upload-time = "2025-06-30T15:51:30.025Z" }, + { url = "https://files.pythonhosted.org/packages/93/2d/7115300ec5b699faa152c56799b089a53ed69e399c3c2d528251f0aeda1a/multidict-6.6.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e2db616467070d0533832d204c54eea6836a5e628f2cb1e6dfd8cd6ba7277cb7", size = 257079, upload-time = "2025-06-30T15:51:31.716Z" }, + { url = "https://files.pythonhosted.org/packages/15/ea/ff4bab367623e39c20d3b07637225c7688d79e4f3cc1f3b9f89867677f9a/multidict-6.6.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7394888236621f61dcdd25189b2768ae5cc280f041029a5bcf1122ac63df79f9", size = 255461, upload-time = "2025-06-30T15:51:33.029Z" }, + { url = "https://files.pythonhosted.org/packages/74/07/2c9246cda322dfe08be85f1b8739646f2c4c5113a1422d7a407763422ec4/multidict-6.6.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f114d8478733ca7388e7c7e0ab34b72547476b97009d643644ac33d4d3fe1821", size = 246611, upload-time = "2025-06-30T15:51:34.47Z" }, + { url = "https://files.pythonhosted.org/packages/a8/62/279c13d584207d5697a752a66ffc9bb19355a95f7659140cb1b3cf82180e/multidict-6.6.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cdf22e4db76d323bcdc733514bf732e9fb349707c98d341d40ebcc6e9318ef3d", size = 243102, upload-time = "2025-06-30T15:51:36.525Z" }, + { url = "https://files.pythonhosted.org/packages/69/cc/e06636f48c6d51e724a8bc8d9e1db5f136fe1df066d7cafe37ef4000f86a/multidict-6.6.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:e995a34c3d44ab511bfc11aa26869b9d66c2d8c799fa0e74b28a473a692532d6", size = 238693, upload-time = "2025-06-30T15:51:38.278Z" }, + { url = "https://files.pythonhosted.org/packages/89/a4/66c9d8fb9acf3b226cdd468ed009537ac65b520aebdc1703dd6908b19d33/multidict-6.6.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:766a4a5996f54361d8d5a9050140aa5362fe48ce51c755a50c0bc3706460c430", size = 246582, upload-time = "2025-06-30T15:51:39.709Z" }, + { url = "https://files.pythonhosted.org/packages/cf/01/c69e0317be556e46257826d5449feb4e6aa0d18573e567a48a2c14156f1f/multidict-6.6.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:3893a0d7d28a7fe6ca7a1f760593bc13038d1d35daf52199d431b61d2660602b", size = 253355, upload-time = "2025-06-30T15:51:41.013Z" }, + { url = "https://files.pythonhosted.org/packages/c0/da/9cc1da0299762d20e626fe0042e71b5694f9f72d7d3f9678397cbaa71b2b/multidict-6.6.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:934796c81ea996e61914ba58064920d6cad5d99140ac3167901eb932150e2e56", size = 247774, upload-time = "2025-06-30T15:51:42.291Z" }, + { url = "https://files.pythonhosted.org/packages/e6/91/b22756afec99cc31105ddd4a52f95ab32b1a4a58f4d417979c570c4a922e/multidict-6.6.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9ed948328aec2072bc00f05d961ceadfd3e9bfc2966c1319aeaf7b7c21219183", size = 242275, upload-time = "2025-06-30T15:51:43.642Z" }, + { url = "https://files.pythonhosted.org/packages/be/f1/adcc185b878036a20399d5be5228f3cbe7f823d78985d101d425af35c800/multidict-6.6.3-cp311-cp311-win32.whl", hash = "sha256:9f5b28c074c76afc3e4c610c488e3493976fe0e596dd3db6c8ddfbb0134dcac5", size = 41290, upload-time = "2025-06-30T15:51:45.264Z" }, + { url = "https://files.pythonhosted.org/packages/e0/d4/27652c1c6526ea6b4f5ddd397e93f4232ff5de42bea71d339bc6a6cc497f/multidict-6.6.3-cp311-cp311-win_amd64.whl", hash = "sha256:bc7f6fbc61b1c16050a389c630da0b32fc6d4a3d191394ab78972bf5edc568c2", size = 45942, upload-time = "2025-06-30T15:51:46.377Z" }, + { url = "https://files.pythonhosted.org/packages/16/18/23f4932019804e56d3c2413e237f866444b774b0263bcb81df2fdecaf593/multidict-6.6.3-cp311-cp311-win_arm64.whl", hash = "sha256:d4e47d8faffaae822fb5cba20937c048d4f734f43572e7079298a6c39fb172cb", size = 42880, upload-time = "2025-06-30T15:51:47.561Z" }, + { url = "https://files.pythonhosted.org/packages/0e/a0/6b57988ea102da0623ea814160ed78d45a2645e4bbb499c2896d12833a70/multidict-6.6.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:056bebbeda16b2e38642d75e9e5310c484b7c24e3841dc0fb943206a72ec89d6", size = 76514, upload-time = "2025-06-30T15:51:48.728Z" }, + { url = "https://files.pythonhosted.org/packages/07/7a/d1e92665b0850c6c0508f101f9cf0410c1afa24973e1115fe9c6a185ebf7/multidict-6.6.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e5f481cccb3c5c5e5de5d00b5141dc589c1047e60d07e85bbd7dea3d4580d63f", size = 45394, upload-time = "2025-06-30T15:51:49.986Z" }, + { url = "https://files.pythonhosted.org/packages/52/6f/dd104490e01be6ef8bf9573705d8572f8c2d2c561f06e3826b081d9e6591/multidict-6.6.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:10bea2ee839a759ee368b5a6e47787f399b41e70cf0c20d90dfaf4158dfb4e55", size = 43590, upload-time = "2025-06-30T15:51:51.331Z" }, + { url = "https://files.pythonhosted.org/packages/44/fe/06e0e01b1b0611e6581b7fd5a85b43dacc08b6cea3034f902f383b0873e5/multidict-6.6.3-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:2334cfb0fa9549d6ce2c21af2bfbcd3ac4ec3646b1b1581c88e3e2b1779ec92b", size = 237292, upload-time = "2025-06-30T15:51:52.584Z" }, + { url = "https://files.pythonhosted.org/packages/ce/71/4f0e558fb77696b89c233c1ee2d92f3e1d5459070a0e89153c9e9e804186/multidict-6.6.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b8fee016722550a2276ca2cb5bb624480e0ed2bd49125b2b73b7010b9090e888", size = 258385, upload-time = "2025-06-30T15:51:53.913Z" }, + { url = "https://files.pythonhosted.org/packages/e3/25/cca0e68228addad24903801ed1ab42e21307a1b4b6dd2cf63da5d3ae082a/multidict-6.6.3-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5511cb35f5c50a2db21047c875eb42f308c5583edf96bd8ebf7d770a9d68f6d", size = 242328, upload-time = "2025-06-30T15:51:55.672Z" }, + { url = "https://files.pythonhosted.org/packages/6e/a3/46f2d420d86bbcb8fe660b26a10a219871a0fbf4d43cb846a4031533f3e0/multidict-6.6.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:712b348f7f449948e0a6c4564a21c7db965af900973a67db432d724619b3c680", size = 268057, upload-time = "2025-06-30T15:51:57.037Z" }, + { url = "https://files.pythonhosted.org/packages/9e/73/1c743542fe00794a2ec7466abd3f312ccb8fad8dff9f36d42e18fb1ec33e/multidict-6.6.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e4e15d2138ee2694e038e33b7c3da70e6b0ad8868b9f8094a72e1414aeda9c1a", size = 269341, upload-time = "2025-06-30T15:51:59.111Z" }, + { url = "https://files.pythonhosted.org/packages/a4/11/6ec9dcbe2264b92778eeb85407d1df18812248bf3506a5a1754bc035db0c/multidict-6.6.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8df25594989aebff8a130f7899fa03cbfcc5d2b5f4a461cf2518236fe6f15961", size = 256081, upload-time = "2025-06-30T15:52:00.533Z" }, + { url = "https://files.pythonhosted.org/packages/9b/2b/631b1e2afeb5f1696846d747d36cda075bfdc0bc7245d6ba5c319278d6c4/multidict-6.6.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:159ca68bfd284a8860f8d8112cf0521113bffd9c17568579e4d13d1f1dc76b65", size = 253581, upload-time = "2025-06-30T15:52:02.43Z" }, + { url = "https://files.pythonhosted.org/packages/bf/0e/7e3b93f79efeb6111d3bf9a1a69e555ba1d07ad1c11bceb56b7310d0d7ee/multidict-6.6.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:e098c17856a8c9ade81b4810888c5ad1914099657226283cab3062c0540b0643", size = 250750, upload-time = "2025-06-30T15:52:04.26Z" }, + { url = "https://files.pythonhosted.org/packages/ad/9e/086846c1d6601948e7de556ee464a2d4c85e33883e749f46b9547d7b0704/multidict-6.6.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:67c92ed673049dec52d7ed39f8cf9ebbadf5032c774058b4406d18c8f8fe7063", size = 251548, upload-time = "2025-06-30T15:52:06.002Z" }, + { url = "https://files.pythonhosted.org/packages/8c/7b/86ec260118e522f1a31550e87b23542294880c97cfbf6fb18cc67b044c66/multidict-6.6.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:bd0578596e3a835ef451784053cfd327d607fc39ea1a14812139339a18a0dbc3", size = 262718, upload-time = "2025-06-30T15:52:07.707Z" }, + { url = "https://files.pythonhosted.org/packages/8c/bd/22ce8f47abb0be04692c9fc4638508b8340987b18691aa7775d927b73f72/multidict-6.6.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:346055630a2df2115cd23ae271910b4cae40f4e336773550dca4889b12916e75", size = 259603, upload-time = "2025-06-30T15:52:09.58Z" }, + { url = "https://files.pythonhosted.org/packages/07/9c/91b7ac1691be95cd1f4a26e36a74b97cda6aa9820632d31aab4410f46ebd/multidict-6.6.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:555ff55a359302b79de97e0468e9ee80637b0de1fce77721639f7cd9440b3a10", size = 251351, upload-time = "2025-06-30T15:52:10.947Z" }, + { url = "https://files.pythonhosted.org/packages/6f/5c/4d7adc739884f7a9fbe00d1eac8c034023ef8bad71f2ebe12823ca2e3649/multidict-6.6.3-cp312-cp312-win32.whl", hash = "sha256:73ab034fb8d58ff85c2bcbadc470efc3fafeea8affcf8722855fb94557f14cc5", size = 41860, upload-time = "2025-06-30T15:52:12.334Z" }, + { url = "https://files.pythonhosted.org/packages/6a/a3/0fbc7afdf7cb1aa12a086b02959307848eb6bcc8f66fcb66c0cb57e2a2c1/multidict-6.6.3-cp312-cp312-win_amd64.whl", hash = "sha256:04cbcce84f63b9af41bad04a54d4cc4e60e90c35b9e6ccb130be2d75b71f8c17", size = 45982, upload-time = "2025-06-30T15:52:13.6Z" }, + { url = "https://files.pythonhosted.org/packages/b8/95/8c825bd70ff9b02462dc18d1295dd08d3e9e4eb66856d292ffa62cfe1920/multidict-6.6.3-cp312-cp312-win_arm64.whl", hash = "sha256:0f1130b896ecb52d2a1e615260f3ea2af55fa7dc3d7c3003ba0c3121a759b18b", size = 43210, upload-time = "2025-06-30T15:52:14.893Z" }, + { url = "https://files.pythonhosted.org/packages/52/1d/0bebcbbb4f000751fbd09957257903d6e002943fc668d841a4cf2fb7f872/multidict-6.6.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:540d3c06d48507357a7d57721e5094b4f7093399a0106c211f33540fdc374d55", size = 75843, upload-time = "2025-06-30T15:52:16.155Z" }, + { url = "https://files.pythonhosted.org/packages/07/8f/cbe241b0434cfe257f65c2b1bcf9e8d5fb52bc708c5061fb29b0fed22bdf/multidict-6.6.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9c19cea2a690f04247d43f366d03e4eb110a0dc4cd1bbeee4d445435428ed35b", size = 45053, upload-time = "2025-06-30T15:52:17.429Z" }, + { url = "https://files.pythonhosted.org/packages/32/d2/0b3b23f9dbad5b270b22a3ac3ea73ed0a50ef2d9a390447061178ed6bdb8/multidict-6.6.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7af039820cfd00effec86bda5d8debef711a3e86a1d3772e85bea0f243a4bd65", size = 43273, upload-time = "2025-06-30T15:52:19.346Z" }, + { url = "https://files.pythonhosted.org/packages/fd/fe/6eb68927e823999e3683bc49678eb20374ba9615097d085298fd5b386564/multidict-6.6.3-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:500b84f51654fdc3944e936f2922114349bf8fdcac77c3092b03449f0e5bc2b3", size = 237124, upload-time = "2025-06-30T15:52:20.773Z" }, + { url = "https://files.pythonhosted.org/packages/e7/ab/320d8507e7726c460cb77117848b3834ea0d59e769f36fdae495f7669929/multidict-6.6.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f3fc723ab8a5c5ed6c50418e9bfcd8e6dceba6c271cee6728a10a4ed8561520c", size = 256892, upload-time = "2025-06-30T15:52:22.242Z" }, + { url = "https://files.pythonhosted.org/packages/76/60/38ee422db515ac69834e60142a1a69111ac96026e76e8e9aa347fd2e4591/multidict-6.6.3-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:94c47ea3ade005b5976789baaed66d4de4480d0a0bf31cef6edaa41c1e7b56a6", size = 240547, upload-time = "2025-06-30T15:52:23.736Z" }, + { url = "https://files.pythonhosted.org/packages/27/fb/905224fde2dff042b030c27ad95a7ae744325cf54b890b443d30a789b80e/multidict-6.6.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:dbc7cf464cc6d67e83e136c9f55726da3a30176f020a36ead246eceed87f1cd8", size = 266223, upload-time = "2025-06-30T15:52:25.185Z" }, + { url = "https://files.pythonhosted.org/packages/76/35/dc38ab361051beae08d1a53965e3e1a418752fc5be4d3fb983c5582d8784/multidict-6.6.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:900eb9f9da25ada070f8ee4a23f884e0ee66fe4e1a38c3af644256a508ad81ca", size = 267262, upload-time = "2025-06-30T15:52:26.969Z" }, + { url = "https://files.pythonhosted.org/packages/1f/a3/0a485b7f36e422421b17e2bbb5a81c1af10eac1d4476f2ff92927c730479/multidict-6.6.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7c6df517cf177da5d47ab15407143a89cd1a23f8b335f3a28d57e8b0a3dbb884", size = 254345, upload-time = "2025-06-30T15:52:28.467Z" }, + { url = "https://files.pythonhosted.org/packages/b4/59/bcdd52c1dab7c0e0d75ff19cac751fbd5f850d1fc39172ce809a74aa9ea4/multidict-6.6.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4ef421045f13879e21c994b36e728d8e7d126c91a64b9185810ab51d474f27e7", size = 252248, upload-time = "2025-06-30T15:52:29.938Z" }, + { url = "https://files.pythonhosted.org/packages/bb/a4/2d96aaa6eae8067ce108d4acee6f45ced5728beda55c0f02ae1072c730d1/multidict-6.6.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:6c1e61bb4f80895c081790b6b09fa49e13566df8fbff817da3f85b3a8192e36b", size = 250115, upload-time = "2025-06-30T15:52:31.416Z" }, + { url = "https://files.pythonhosted.org/packages/25/d2/ed9f847fa5c7d0677d4f02ea2c163d5e48573de3f57bacf5670e43a5ffaa/multidict-6.6.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:e5e8523bb12d7623cd8300dbd91b9e439a46a028cd078ca695eb66ba31adee3c", size = 249649, upload-time = "2025-06-30T15:52:32.996Z" }, + { url = "https://files.pythonhosted.org/packages/1f/af/9155850372563fc550803d3f25373308aa70f59b52cff25854086ecb4a79/multidict-6.6.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:ef58340cc896219e4e653dade08fea5c55c6df41bcc68122e3be3e9d873d9a7b", size = 261203, upload-time = "2025-06-30T15:52:34.521Z" }, + { url = "https://files.pythonhosted.org/packages/36/2f/c6a728f699896252cf309769089568a33c6439626648843f78743660709d/multidict-6.6.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:fc9dc435ec8699e7b602b94fe0cd4703e69273a01cbc34409af29e7820f777f1", size = 258051, upload-time = "2025-06-30T15:52:35.999Z" }, + { url = "https://files.pythonhosted.org/packages/d0/60/689880776d6b18fa2b70f6cc74ff87dd6c6b9b47bd9cf74c16fecfaa6ad9/multidict-6.6.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9e864486ef4ab07db5e9cb997bad2b681514158d6954dd1958dfb163b83d53e6", size = 249601, upload-time = "2025-06-30T15:52:37.473Z" }, + { url = "https://files.pythonhosted.org/packages/75/5e/325b11f2222a549019cf2ef879c1f81f94a0d40ace3ef55cf529915ba6cc/multidict-6.6.3-cp313-cp313-win32.whl", hash = "sha256:5633a82fba8e841bc5c5c06b16e21529573cd654f67fd833650a215520a6210e", size = 41683, upload-time = "2025-06-30T15:52:38.927Z" }, + { url = "https://files.pythonhosted.org/packages/b1/ad/cf46e73f5d6e3c775cabd2a05976547f3f18b39bee06260369a42501f053/multidict-6.6.3-cp313-cp313-win_amd64.whl", hash = "sha256:e93089c1570a4ad54c3714a12c2cef549dc9d58e97bcded193d928649cab78e9", size = 45811, upload-time = "2025-06-30T15:52:40.207Z" }, + { url = "https://files.pythonhosted.org/packages/c5/c9/2e3fe950db28fb7c62e1a5f46e1e38759b072e2089209bc033c2798bb5ec/multidict-6.6.3-cp313-cp313-win_arm64.whl", hash = "sha256:c60b401f192e79caec61f166da9c924e9f8bc65548d4246842df91651e83d600", size = 43056, upload-time = "2025-06-30T15:52:41.575Z" }, + { url = "https://files.pythonhosted.org/packages/3a/58/aaf8114cf34966e084a8cc9517771288adb53465188843d5a19862cb6dc3/multidict-6.6.3-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:02fd8f32d403a6ff13864b0851f1f523d4c988051eea0471d4f1fd8010f11134", size = 82811, upload-time = "2025-06-30T15:52:43.281Z" }, + { url = "https://files.pythonhosted.org/packages/71/af/5402e7b58a1f5b987a07ad98f2501fdba2a4f4b4c30cf114e3ce8db64c87/multidict-6.6.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:f3aa090106b1543f3f87b2041eef3c156c8da2aed90c63a2fbed62d875c49c37", size = 48304, upload-time = "2025-06-30T15:52:45.026Z" }, + { url = "https://files.pythonhosted.org/packages/39/65/ab3c8cafe21adb45b24a50266fd747147dec7847425bc2a0f6934b3ae9ce/multidict-6.6.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e924fb978615a5e33ff644cc42e6aa241effcf4f3322c09d4f8cebde95aff5f8", size = 46775, upload-time = "2025-06-30T15:52:46.459Z" }, + { url = "https://files.pythonhosted.org/packages/49/ba/9fcc1b332f67cc0c0c8079e263bfab6660f87fe4e28a35921771ff3eea0d/multidict-6.6.3-cp313-cp313t-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:b9fe5a0e57c6dbd0e2ce81ca66272282c32cd11d31658ee9553849d91289e1c1", size = 229773, upload-time = "2025-06-30T15:52:47.88Z" }, + { url = "https://files.pythonhosted.org/packages/a4/14/0145a251f555f7c754ce2dcbcd012939bbd1f34f066fa5d28a50e722a054/multidict-6.6.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b24576f208793ebae00280c59927c3b7c2a3b1655e443a25f753c4611bc1c373", size = 250083, upload-time = "2025-06-30T15:52:49.366Z" }, + { url = "https://files.pythonhosted.org/packages/9e/d4/d5c0bd2bbb173b586c249a151a26d2fb3ec7d53c96e42091c9fef4e1f10c/multidict-6.6.3-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:135631cb6c58eac37d7ac0df380294fecdc026b28837fa07c02e459c7fb9c54e", size = 228980, upload-time = "2025-06-30T15:52:50.903Z" }, + { url = "https://files.pythonhosted.org/packages/21/32/c9a2d8444a50ec48c4733ccc67254100c10e1c8ae8e40c7a2d2183b59b97/multidict-6.6.3-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:274d416b0df887aef98f19f21578653982cfb8a05b4e187d4a17103322eeaf8f", size = 257776, upload-time = "2025-06-30T15:52:52.764Z" }, + { url = "https://files.pythonhosted.org/packages/68/d0/14fa1699f4ef629eae08ad6201c6b476098f5efb051b296f4c26be7a9fdf/multidict-6.6.3-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e252017a817fad7ce05cafbe5711ed40faeb580e63b16755a3a24e66fa1d87c0", size = 256882, upload-time = "2025-06-30T15:52:54.596Z" }, + { url = "https://files.pythonhosted.org/packages/da/88/84a27570fbe303c65607d517a5f147cd2fc046c2d1da02b84b17b9bdc2aa/multidict-6.6.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2e4cc8d848cd4fe1cdee28c13ea79ab0ed37fc2e89dd77bac86a2e7959a8c3bc", size = 247816, upload-time = "2025-06-30T15:52:56.175Z" }, + { url = "https://files.pythonhosted.org/packages/1c/60/dca352a0c999ce96a5d8b8ee0b2b9f729dcad2e0b0c195f8286269a2074c/multidict-6.6.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9e236a7094b9c4c1b7585f6b9cca34b9d833cf079f7e4c49e6a4a6ec9bfdc68f", size = 245341, upload-time = "2025-06-30T15:52:57.752Z" }, + { url = "https://files.pythonhosted.org/packages/50/ef/433fa3ed06028f03946f3993223dada70fb700f763f70c00079533c34578/multidict-6.6.3-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:e0cb0ab69915c55627c933f0b555a943d98ba71b4d1c57bc0d0a66e2567c7471", size = 235854, upload-time = "2025-06-30T15:52:59.74Z" }, + { url = "https://files.pythonhosted.org/packages/1b/1f/487612ab56fbe35715320905215a57fede20de7db40a261759690dc80471/multidict-6.6.3-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:81ef2f64593aba09c5212a3d0f8c906a0d38d710a011f2f42759704d4557d3f2", size = 243432, upload-time = "2025-06-30T15:53:01.602Z" }, + { url = "https://files.pythonhosted.org/packages/da/6f/ce8b79de16cd885c6f9052c96a3671373d00c59b3ee635ea93e6e81b8ccf/multidict-6.6.3-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:b9cbc60010de3562545fa198bfc6d3825df430ea96d2cc509c39bd71e2e7d648", size = 252731, upload-time = "2025-06-30T15:53:03.517Z" }, + { url = "https://files.pythonhosted.org/packages/bb/fe/a2514a6aba78e5abefa1624ca85ae18f542d95ac5cde2e3815a9fbf369aa/multidict-6.6.3-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:70d974eaaa37211390cd02ef93b7e938de564bbffa866f0b08d07e5e65da783d", size = 247086, upload-time = "2025-06-30T15:53:05.48Z" }, + { url = "https://files.pythonhosted.org/packages/8c/22/b788718d63bb3cce752d107a57c85fcd1a212c6c778628567c9713f9345a/multidict-6.6.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:3713303e4a6663c6d01d648a68f2848701001f3390a030edaaf3fc949c90bf7c", size = 243338, upload-time = "2025-06-30T15:53:07.522Z" }, + { url = "https://files.pythonhosted.org/packages/22/d6/fdb3d0670819f2228f3f7d9af613d5e652c15d170c83e5f1c94fbc55a25b/multidict-6.6.3-cp313-cp313t-win32.whl", hash = "sha256:639ecc9fe7cd73f2495f62c213e964843826f44505a3e5d82805aa85cac6f89e", size = 47812, upload-time = "2025-06-30T15:53:09.263Z" }, + { url = "https://files.pythonhosted.org/packages/b6/d6/a9d2c808f2c489ad199723197419207ecbfbc1776f6e155e1ecea9c883aa/multidict-6.6.3-cp313-cp313t-win_amd64.whl", hash = "sha256:9f97e181f344a0ef3881b573d31de8542cc0dbc559ec68c8f8b5ce2c2e91646d", size = 53011, upload-time = "2025-06-30T15:53:11.038Z" }, + { url = "https://files.pythonhosted.org/packages/f2/40/b68001cba8188dd267590a111f9661b6256debc327137667e832bf5d66e8/multidict-6.6.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ce8b7693da41a3c4fde5871c738a81490cea5496c671d74374c8ab889e1834fb", size = 45254, upload-time = "2025-06-30T15:53:12.421Z" }, + { url = "https://files.pythonhosted.org/packages/d8/30/9aec301e9772b098c1f5c0ca0279237c9766d94b97802e9888010c64b0ed/multidict-6.6.3-py3-none-any.whl", hash = "sha256:8db10f29c7541fc5da4defd8cd697e1ca429db743fa716325f236079b96f775a", size = 12313, upload-time = "2025-06-30T15:53:45.437Z" }, +] + +[[package]] +name = "mypy" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mypy-extensions" }, + { name = "pathspec" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1e/e3/034322d5a779685218ed69286c32faa505247f1f096251ef66c8fd203b08/mypy-1.17.0.tar.gz", hash = "sha256:e5d7ccc08ba089c06e2f5629c660388ef1fee708444f1dee0b9203fa031dee03", size = 3352114, upload-time = "2025-07-14T20:34:30.181Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d4/24/82efb502b0b0f661c49aa21cfe3e1999ddf64bf5500fc03b5a1536a39d39/mypy-1.17.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9d4fe5c72fd262d9c2c91c1117d16aac555e05f5beb2bae6a755274c6eec42be", size = 10914150, upload-time = "2025-07-14T20:31:51.985Z" }, + { url = "https://files.pythonhosted.org/packages/03/96/8ef9a6ff8cedadff4400e2254689ca1dc4b420b92c55255b44573de10c54/mypy-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d96b196e5c16f41b4f7736840e8455958e832871990c7ba26bf58175e357ed61", size = 10039845, upload-time = "2025-07-14T20:32:30.527Z" }, + { url = "https://files.pythonhosted.org/packages/df/32/7ce359a56be779d38021d07941cfbb099b41411d72d827230a36203dbb81/mypy-1.17.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:73a0ff2dd10337ceb521c080d4147755ee302dcde6e1a913babd59473904615f", size = 11837246, upload-time = "2025-07-14T20:32:01.28Z" }, + { url = "https://files.pythonhosted.org/packages/82/16/b775047054de4d8dbd668df9137707e54b07fe18c7923839cd1e524bf756/mypy-1.17.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:24cfcc1179c4447854e9e406d3af0f77736d631ec87d31c6281ecd5025df625d", size = 12571106, upload-time = "2025-07-14T20:34:26.942Z" }, + { url = "https://files.pythonhosted.org/packages/a1/cf/fa33eaf29a606102c8d9ffa45a386a04c2203d9ad18bf4eef3e20c43ebc8/mypy-1.17.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3c56f180ff6430e6373db7a1d569317675b0a451caf5fef6ce4ab365f5f2f6c3", size = 12759960, upload-time = "2025-07-14T20:33:42.882Z" }, + { url = "https://files.pythonhosted.org/packages/94/75/3f5a29209f27e739ca57e6350bc6b783a38c7621bdf9cac3ab8a08665801/mypy-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:eafaf8b9252734400f9b77df98b4eee3d2eecab16104680d51341c75702cad70", size = 9503888, upload-time = "2025-07-14T20:32:34.392Z" }, + { url = "https://files.pythonhosted.org/packages/12/e9/e6824ed620bbf51d3bf4d6cbbe4953e83eaf31a448d1b3cfb3620ccb641c/mypy-1.17.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f986f1cab8dbec39ba6e0eaa42d4d3ac6686516a5d3dccd64be095db05ebc6bb", size = 11086395, upload-time = "2025-07-14T20:34:11.452Z" }, + { url = "https://files.pythonhosted.org/packages/ba/51/a4afd1ae279707953be175d303f04a5a7bd7e28dc62463ad29c1c857927e/mypy-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:51e455a54d199dd6e931cd7ea987d061c2afbaf0960f7f66deef47c90d1b304d", size = 10120052, upload-time = "2025-07-14T20:33:09.897Z" }, + { url = "https://files.pythonhosted.org/packages/8a/71/19adfeac926ba8205f1d1466d0d360d07b46486bf64360c54cb5a2bd86a8/mypy-1.17.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3204d773bab5ff4ebbd1f8efa11b498027cd57017c003ae970f310e5b96be8d8", size = 11861806, upload-time = "2025-07-14T20:32:16.028Z" }, + { url = "https://files.pythonhosted.org/packages/0b/64/d6120eca3835baf7179e6797a0b61d6c47e0bc2324b1f6819d8428d5b9ba/mypy-1.17.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1051df7ec0886fa246a530ae917c473491e9a0ba6938cfd0ec2abc1076495c3e", size = 12744371, upload-time = "2025-07-14T20:33:33.503Z" }, + { url = "https://files.pythonhosted.org/packages/1f/dc/56f53b5255a166f5bd0f137eed960e5065f2744509dfe69474ff0ba772a5/mypy-1.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f773c6d14dcc108a5b141b4456b0871df638eb411a89cd1c0c001fc4a9d08fc8", size = 12914558, upload-time = "2025-07-14T20:33:56.961Z" }, + { url = "https://files.pythonhosted.org/packages/69/ac/070bad311171badc9add2910e7f89271695a25c136de24bbafc7eded56d5/mypy-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:1619a485fd0e9c959b943c7b519ed26b712de3002d7de43154a489a2d0fd817d", size = 9585447, upload-time = "2025-07-14T20:32:20.594Z" }, + { url = "https://files.pythonhosted.org/packages/be/7b/5f8ab461369b9e62157072156935cec9d272196556bdc7c2ff5f4c7c0f9b/mypy-1.17.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2c41aa59211e49d717d92b3bb1238c06d387c9325d3122085113c79118bebb06", size = 11070019, upload-time = "2025-07-14T20:32:07.99Z" }, + { url = "https://files.pythonhosted.org/packages/9c/f8/c49c9e5a2ac0badcc54beb24e774d2499748302c9568f7f09e8730e953fa/mypy-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0e69db1fb65b3114f98c753e3930a00514f5b68794ba80590eb02090d54a5d4a", size = 10114457, upload-time = "2025-07-14T20:33:47.285Z" }, + { url = "https://files.pythonhosted.org/packages/89/0c/fb3f9c939ad9beed3e328008b3fb90b20fda2cddc0f7e4c20dbefefc3b33/mypy-1.17.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:03ba330b76710f83d6ac500053f7727270b6b8553b0423348ffb3af6f2f7b889", size = 11857838, upload-time = "2025-07-14T20:33:14.462Z" }, + { url = "https://files.pythonhosted.org/packages/4c/66/85607ab5137d65e4f54d9797b77d5a038ef34f714929cf8ad30b03f628df/mypy-1.17.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:037bc0f0b124ce46bfde955c647f3e395c6174476a968c0f22c95a8d2f589bba", size = 12731358, upload-time = "2025-07-14T20:32:25.579Z" }, + { url = "https://files.pythonhosted.org/packages/73/d0/341dbbfb35ce53d01f8f2969facbb66486cee9804048bf6c01b048127501/mypy-1.17.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c38876106cb6132259683632b287238858bd58de267d80defb6f418e9ee50658", size = 12917480, upload-time = "2025-07-14T20:34:21.868Z" }, + { url = "https://files.pythonhosted.org/packages/64/63/70c8b7dbfc520089ac48d01367a97e8acd734f65bd07813081f508a8c94c/mypy-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:d30ba01c0f151998f367506fab31c2ac4527e6a7b2690107c7a7f9e3cb419a9c", size = 9589666, upload-time = "2025-07-14T20:34:16.841Z" }, + { url = "https://files.pythonhosted.org/packages/e3/fc/ee058cc4316f219078464555873e99d170bde1d9569abd833300dbeb484a/mypy-1.17.0-py3-none-any.whl", hash = "sha256:15d9d0018237ab058e5de3d8fce61b6fa72cc59cc78fd91f1b474bce12abf496", size = 2283195, upload-time = "2025-07-14T20:31:54.753Z" }, +] + +[[package]] +name = "mypy-extensions" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload-time = "2025-04-22T14:54:24.164Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, +] + +[[package]] +name = "nbclient" +version = "0.10.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "nbformat" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/87/66/7ffd18d58eae90d5721f9f39212327695b749e23ad44b3881744eaf4d9e8/nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193", size = 62424, upload-time = "2024-12-19T10:32:27.164Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d", size = 25434, upload-time = "2024-12-19T10:32:24.139Z" }, +] + +[[package]] +name = "nbconvert" +version = "7.16.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "beautifulsoup4" }, + { name = "bleach", extra = ["css"] }, + { name = "defusedxml" }, + { name = "jinja2" }, + { name = "jupyter-core" }, + { name = "jupyterlab-pygments" }, + { name = "markupsafe" }, + { name = "mistune" }, + { name = "nbclient" }, + { name = "nbformat" }, + { name = "packaging" }, + { name = "pandocfilters" }, + { name = "pygments" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a3/59/f28e15fc47ffb73af68a8d9b47367a8630d76e97ae85ad18271b9db96fdf/nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582", size = 857715, upload-time = "2025-01-28T09:29:14.724Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b", size = 258525, upload-time = "2025-01-28T09:29:12.551Z" }, +] + +[[package]] +name = "nbformat" +version = "5.10.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fastjsonschema" }, + { name = "jsonschema" }, + { name = "jupyter-core" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749, upload-time = "2024-04-04T11:20:37.371Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454, upload-time = "2024-04-04T11:20:34.895Z" }, +] + +[[package]] +name = "nest-asyncio" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418, upload-time = "2024-01-21T14:25:19.227Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195, upload-time = "2024-01-21T14:25:17.223Z" }, +] + +[[package]] +name = "notebook" +version = "7.4.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-server" }, + { name = "jupyterlab" }, + { name = "jupyterlab-server" }, + { name = "notebook-shim" }, + { name = "tornado" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/4e/a40b5a94eb01fc51746db7854296d88b84905ab18ee0fcef853a60d708a3/notebook-7.4.4.tar.gz", hash = "sha256:392fd501e266f2fb3466c6fcd3331163a2184968cb5c5accf90292e01dfe528c", size = 13883628, upload-time = "2025-06-30T13:04:18.099Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/c0/e64d2047fd752249b0b69f6aee2a7049eb94e7273e5baabc8b8ad05cc068/notebook-7.4.4-py3-none-any.whl", hash = "sha256:32840f7f777b6bff79bb101159336e9b332bdbfba1495b8739e34d1d65cbc1c0", size = 14288000, upload-time = "2025-06-30T13:04:14.584Z" }, +] + +[[package]] +name = "notebook-shim" +version = "0.2.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-server" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/54/d2/92fa3243712b9a3e8bafaf60aac366da1cada3639ca767ff4b5b3654ec28/notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb", size = 13167, upload-time = "2024-02-14T23:35:18.353Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef", size = 13307, upload-time = "2024-02-14T23:35:16.286Z" }, +] + +[[package]] +name = "numpy" +version = "2.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2e/19/d7c972dfe90a353dbd3efbbe1d14a5951de80c99c9dc1b93cd998d51dc0f/numpy-2.3.1.tar.gz", hash = "sha256:1ec9ae20a4226da374362cca3c62cd753faf2f951440b0e3b98e93c235441d2b", size = 20390372, upload-time = "2025-06-21T12:28:33.469Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b0/c7/87c64d7ab426156530676000c94784ef55676df2f13b2796f97722464124/numpy-2.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6ea9e48336a402551f52cd8f593343699003d2353daa4b72ce8d34f66b722070", size = 21199346, upload-time = "2025-06-21T11:47:47.57Z" }, + { url = "https://files.pythonhosted.org/packages/58/0e/0966c2f44beeac12af8d836e5b5f826a407cf34c45cb73ddcdfce9f5960b/numpy-2.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5ccb7336eaf0e77c1635b232c141846493a588ec9ea777a7c24d7166bb8533ae", size = 14361143, upload-time = "2025-06-21T11:48:10.766Z" }, + { url = "https://files.pythonhosted.org/packages/7d/31/6e35a247acb1bfc19226791dfc7d4c30002cd4e620e11e58b0ddf836fe52/numpy-2.3.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0bb3a4a61e1d327e035275d2a993c96fa786e4913aa089843e6a2d9dd205c66a", size = 5378989, upload-time = "2025-06-21T11:48:19.998Z" }, + { url = "https://files.pythonhosted.org/packages/b0/25/93b621219bb6f5a2d4e713a824522c69ab1f06a57cd571cda70e2e31af44/numpy-2.3.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:e344eb79dab01f1e838ebb67aab09965fb271d6da6b00adda26328ac27d4a66e", size = 6912890, upload-time = "2025-06-21T11:48:31.376Z" }, + { url = "https://files.pythonhosted.org/packages/ef/60/6b06ed98d11fb32e27fb59468b42383f3877146d3ee639f733776b6ac596/numpy-2.3.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:467db865b392168ceb1ef1ffa6f5a86e62468c43e0cfb4ab6da667ede10e58db", size = 14569032, upload-time = "2025-06-21T11:48:52.563Z" }, + { url = "https://files.pythonhosted.org/packages/75/c9/9bec03675192077467a9c7c2bdd1f2e922bd01d3a69b15c3a0fdcd8548f6/numpy-2.3.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:afed2ce4a84f6b0fc6c1ce734ff368cbf5a5e24e8954a338f3bdffa0718adffb", size = 16930354, upload-time = "2025-06-21T11:49:17.473Z" }, + { url = "https://files.pythonhosted.org/packages/6a/e2/5756a00cabcf50a3f527a0c968b2b4881c62b1379223931853114fa04cda/numpy-2.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0025048b3c1557a20bc80d06fdeb8cc7fc193721484cca82b2cfa072fec71a93", size = 15879605, upload-time = "2025-06-21T11:49:41.161Z" }, + { url = "https://files.pythonhosted.org/packages/ff/86/a471f65f0a86f1ca62dcc90b9fa46174dd48f50214e5446bc16a775646c5/numpy-2.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a5ee121b60aa509679b682819c602579e1df14a5b07fe95671c8849aad8f2115", size = 18666994, upload-time = "2025-06-21T11:50:08.516Z" }, + { url = "https://files.pythonhosted.org/packages/43/a6/482a53e469b32be6500aaf61cfafd1de7a0b0d484babf679209c3298852e/numpy-2.3.1-cp311-cp311-win32.whl", hash = "sha256:a8b740f5579ae4585831b3cf0e3b0425c667274f82a484866d2adf9570539369", size = 6603672, upload-time = "2025-06-21T11:50:19.584Z" }, + { url = "https://files.pythonhosted.org/packages/6b/fb/bb613f4122c310a13ec67585c70e14b03bfc7ebabd24f4d5138b97371d7c/numpy-2.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:d4580adadc53311b163444f877e0789f1c8861e2698f6b2a4ca852fda154f3ff", size = 13024015, upload-time = "2025-06-21T11:50:39.139Z" }, + { url = "https://files.pythonhosted.org/packages/51/58/2d842825af9a0c041aca246dc92eb725e1bc5e1c9ac89712625db0c4e11c/numpy-2.3.1-cp311-cp311-win_arm64.whl", hash = "sha256:ec0bdafa906f95adc9a0c6f26a4871fa753f25caaa0e032578a30457bff0af6a", size = 10456989, upload-time = "2025-06-21T11:50:55.616Z" }, + { url = "https://files.pythonhosted.org/packages/c6/56/71ad5022e2f63cfe0ca93559403d0edef14aea70a841d640bd13cdba578e/numpy-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2959d8f268f3d8ee402b04a9ec4bb7604555aeacf78b360dc4ec27f1d508177d", size = 20896664, upload-time = "2025-06-21T12:15:30.845Z" }, + { url = "https://files.pythonhosted.org/packages/25/65/2db52ba049813670f7f987cc5db6dac9be7cd95e923cc6832b3d32d87cef/numpy-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:762e0c0c6b56bdedfef9a8e1d4538556438288c4276901ea008ae44091954e29", size = 14131078, upload-time = "2025-06-21T12:15:52.23Z" }, + { url = "https://files.pythonhosted.org/packages/57/dd/28fa3c17b0e751047ac928c1e1b6990238faad76e9b147e585b573d9d1bd/numpy-2.3.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:867ef172a0976aaa1f1d1b63cf2090de8b636a7674607d514505fb7276ab08fc", size = 5112554, upload-time = "2025-06-21T12:16:01.434Z" }, + { url = "https://files.pythonhosted.org/packages/c9/fc/84ea0cba8e760c4644b708b6819d91784c290288c27aca916115e3311d17/numpy-2.3.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:4e602e1b8682c2b833af89ba641ad4176053aaa50f5cacda1a27004352dde943", size = 6646560, upload-time = "2025-06-21T12:16:11.895Z" }, + { url = "https://files.pythonhosted.org/packages/61/b2/512b0c2ddec985ad1e496b0bd853eeb572315c0f07cd6997473ced8f15e2/numpy-2.3.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:8e333040d069eba1652fb08962ec5b76af7f2c7bce1df7e1418c8055cf776f25", size = 14260638, upload-time = "2025-06-21T12:16:32.611Z" }, + { url = "https://files.pythonhosted.org/packages/6e/45/c51cb248e679a6c6ab14b7a8e3ead3f4a3fe7425fc7a6f98b3f147bec532/numpy-2.3.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:e7cbf5a5eafd8d230a3ce356d892512185230e4781a361229bd902ff403bc660", size = 16632729, upload-time = "2025-06-21T12:16:57.439Z" }, + { url = "https://files.pythonhosted.org/packages/e4/ff/feb4be2e5c09a3da161b412019caf47183099cbea1132fd98061808c2df2/numpy-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5f1b8f26d1086835f442286c1d9b64bb3974b0b1e41bb105358fd07d20872952", size = 15565330, upload-time = "2025-06-21T12:17:20.638Z" }, + { url = "https://files.pythonhosted.org/packages/bc/6d/ceafe87587101e9ab0d370e4f6e5f3f3a85b9a697f2318738e5e7e176ce3/numpy-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ee8340cb48c9b7a5899d1149eece41ca535513a9698098edbade2a8e7a84da77", size = 18361734, upload-time = "2025-06-21T12:17:47.938Z" }, + { url = "https://files.pythonhosted.org/packages/2b/19/0fb49a3ea088be691f040c9bf1817e4669a339d6e98579f91859b902c636/numpy-2.3.1-cp312-cp312-win32.whl", hash = "sha256:e772dda20a6002ef7061713dc1e2585bc1b534e7909b2030b5a46dae8ff077ab", size = 6320411, upload-time = "2025-06-21T12:17:58.475Z" }, + { url = "https://files.pythonhosted.org/packages/b1/3e/e28f4c1dd9e042eb57a3eb652f200225e311b608632bc727ae378623d4f8/numpy-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:cfecc7822543abdea6de08758091da655ea2210b8ffa1faf116b940693d3df76", size = 12734973, upload-time = "2025-06-21T12:18:17.601Z" }, + { url = "https://files.pythonhosted.org/packages/04/a8/8a5e9079dc722acf53522b8f8842e79541ea81835e9b5483388701421073/numpy-2.3.1-cp312-cp312-win_arm64.whl", hash = "sha256:7be91b2239af2658653c5bb6f1b8bccafaf08226a258caf78ce44710a0160d30", size = 10191491, upload-time = "2025-06-21T12:18:33.585Z" }, + { url = "https://files.pythonhosted.org/packages/d4/bd/35ad97006d8abff8631293f8ea6adf07b0108ce6fec68da3c3fcca1197f2/numpy-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25a1992b0a3fdcdaec9f552ef10d8103186f5397ab45e2d25f8ac51b1a6b97e8", size = 20889381, upload-time = "2025-06-21T12:19:04.103Z" }, + { url = "https://files.pythonhosted.org/packages/f1/4f/df5923874d8095b6062495b39729178eef4a922119cee32a12ee1bd4664c/numpy-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7dea630156d39b02a63c18f508f85010230409db5b2927ba59c8ba4ab3e8272e", size = 14152726, upload-time = "2025-06-21T12:19:25.599Z" }, + { url = "https://files.pythonhosted.org/packages/8c/0f/a1f269b125806212a876f7efb049b06c6f8772cf0121139f97774cd95626/numpy-2.3.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:bada6058dd886061f10ea15f230ccf7dfff40572e99fef440a4a857c8728c9c0", size = 5105145, upload-time = "2025-06-21T12:19:34.782Z" }, + { url = "https://files.pythonhosted.org/packages/6d/63/a7f7fd5f375b0361682f6ffbf686787e82b7bbd561268e4f30afad2bb3c0/numpy-2.3.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:a894f3816eb17b29e4783e5873f92faf55b710c2519e5c351767c51f79d8526d", size = 6639409, upload-time = "2025-06-21T12:19:45.228Z" }, + { url = "https://files.pythonhosted.org/packages/bf/0d/1854a4121af895aab383f4aa233748f1df4671ef331d898e32426756a8a6/numpy-2.3.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:18703df6c4a4fee55fd3d6e5a253d01c5d33a295409b03fda0c86b3ca2ff41a1", size = 14257630, upload-time = "2025-06-21T12:20:06.544Z" }, + { url = "https://files.pythonhosted.org/packages/50/30/af1b277b443f2fb08acf1c55ce9d68ee540043f158630d62cef012750f9f/numpy-2.3.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5902660491bd7a48b2ec16c23ccb9124b8abfd9583c5fdfa123fe6b421e03de1", size = 16627546, upload-time = "2025-06-21T12:20:31.002Z" }, + { url = "https://files.pythonhosted.org/packages/6e/ec/3b68220c277e463095342d254c61be8144c31208db18d3fd8ef02712bcd6/numpy-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:36890eb9e9d2081137bd78d29050ba63b8dab95dff7912eadf1185e80074b2a0", size = 15562538, upload-time = "2025-06-21T12:20:54.322Z" }, + { url = "https://files.pythonhosted.org/packages/77/2b/4014f2bcc4404484021c74d4c5ee8eb3de7e3f7ac75f06672f8dcf85140a/numpy-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a780033466159c2270531e2b8ac063704592a0bc62ec4a1b991c7c40705eb0e8", size = 18360327, upload-time = "2025-06-21T12:21:21.053Z" }, + { url = "https://files.pythonhosted.org/packages/40/8d/2ddd6c9b30fcf920837b8672f6c65590c7d92e43084c25fc65edc22e93ca/numpy-2.3.1-cp313-cp313-win32.whl", hash = "sha256:39bff12c076812595c3a306f22bfe49919c5513aa1e0e70fac756a0be7c2a2b8", size = 6312330, upload-time = "2025-06-21T12:25:07.447Z" }, + { url = "https://files.pythonhosted.org/packages/dd/c8/beaba449925988d415efccb45bf977ff8327a02f655090627318f6398c7b/numpy-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:8d5ee6eec45f08ce507a6570e06f2f879b374a552087a4179ea7838edbcbfa42", size = 12731565, upload-time = "2025-06-21T12:25:26.444Z" }, + { url = "https://files.pythonhosted.org/packages/0b/c3/5c0c575d7ec78c1126998071f58facfc124006635da75b090805e642c62e/numpy-2.3.1-cp313-cp313-win_arm64.whl", hash = "sha256:0c4d9e0a8368db90f93bd192bfa771ace63137c3488d198ee21dfb8e7771916e", size = 10190262, upload-time = "2025-06-21T12:25:42.196Z" }, + { url = "https://files.pythonhosted.org/packages/ea/19/a029cd335cf72f79d2644dcfc22d90f09caa86265cbbde3b5702ccef6890/numpy-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:b0b5397374f32ec0649dd98c652a1798192042e715df918c20672c62fb52d4b8", size = 20987593, upload-time = "2025-06-21T12:21:51.664Z" }, + { url = "https://files.pythonhosted.org/packages/25/91/8ea8894406209107d9ce19b66314194675d31761fe2cb3c84fe2eeae2f37/numpy-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c5bdf2015ccfcee8253fb8be695516ac4457c743473a43290fd36eba6a1777eb", size = 14300523, upload-time = "2025-06-21T12:22:13.583Z" }, + { url = "https://files.pythonhosted.org/packages/a6/7f/06187b0066eefc9e7ce77d5f2ddb4e314a55220ad62dd0bfc9f2c44bac14/numpy-2.3.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d70f20df7f08b90a2062c1f07737dd340adccf2068d0f1b9b3d56e2038979fee", size = 5227993, upload-time = "2025-06-21T12:22:22.53Z" }, + { url = "https://files.pythonhosted.org/packages/e8/ec/a926c293c605fa75e9cfb09f1e4840098ed46d2edaa6e2152ee35dc01ed3/numpy-2.3.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:2fb86b7e58f9ac50e1e9dd1290154107e47d1eef23a0ae9145ded06ea606f992", size = 6736652, upload-time = "2025-06-21T12:22:33.629Z" }, + { url = "https://files.pythonhosted.org/packages/e3/62/d68e52fb6fde5586650d4c0ce0b05ff3a48ad4df4ffd1b8866479d1d671d/numpy-2.3.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:23ab05b2d241f76cb883ce8b9a93a680752fbfcbd51c50eff0b88b979e471d8c", size = 14331561, upload-time = "2025-06-21T12:22:55.056Z" }, + { url = "https://files.pythonhosted.org/packages/fc/ec/b74d3f2430960044bdad6900d9f5edc2dc0fb8bf5a0be0f65287bf2cbe27/numpy-2.3.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:ce2ce9e5de4703a673e705183f64fd5da5bf36e7beddcb63a25ee2286e71ca48", size = 16693349, upload-time = "2025-06-21T12:23:20.53Z" }, + { url = "https://files.pythonhosted.org/packages/0d/15/def96774b9d7eb198ddadfcbd20281b20ebb510580419197e225f5c55c3e/numpy-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c4913079974eeb5c16ccfd2b1f09354b8fed7e0d6f2cab933104a09a6419b1ee", size = 15642053, upload-time = "2025-06-21T12:23:43.697Z" }, + { url = "https://files.pythonhosted.org/packages/2b/57/c3203974762a759540c6ae71d0ea2341c1fa41d84e4971a8e76d7141678a/numpy-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:010ce9b4f00d5c036053ca684c77441f2f2c934fd23bee058b4d6f196efd8280", size = 18434184, upload-time = "2025-06-21T12:24:10.708Z" }, + { url = "https://files.pythonhosted.org/packages/22/8a/ccdf201457ed8ac6245187850aff4ca56a79edbea4829f4e9f14d46fa9a5/numpy-2.3.1-cp313-cp313t-win32.whl", hash = "sha256:6269b9edfe32912584ec496d91b00b6d34282ca1d07eb10e82dfc780907d6c2e", size = 6440678, upload-time = "2025-06-21T12:24:21.596Z" }, + { url = "https://files.pythonhosted.org/packages/f1/7e/7f431d8bd8eb7e03d79294aed238b1b0b174b3148570d03a8a8a8f6a0da9/numpy-2.3.1-cp313-cp313t-win_amd64.whl", hash = "sha256:2a809637460e88a113e186e87f228d74ae2852a2e0c44de275263376f17b5bdc", size = 12870697, upload-time = "2025-06-21T12:24:40.644Z" }, + { url = "https://files.pythonhosted.org/packages/d4/ca/af82bf0fad4c3e573c6930ed743b5308492ff19917c7caaf2f9b6f9e2e98/numpy-2.3.1-cp313-cp313t-win_arm64.whl", hash = "sha256:eccb9a159db9aed60800187bc47a6d3451553f0e1b08b068d8b277ddfbb9b244", size = 10260376, upload-time = "2025-06-21T12:24:56.884Z" }, + { url = "https://files.pythonhosted.org/packages/e8/34/facc13b9b42ddca30498fc51f7f73c3d0f2be179943a4b4da8686e259740/numpy-2.3.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:ad506d4b09e684394c42c966ec1527f6ebc25da7f4da4b1b056606ffe446b8a3", size = 21070637, upload-time = "2025-06-21T12:26:12.518Z" }, + { url = "https://files.pythonhosted.org/packages/65/b6/41b705d9dbae04649b529fc9bd3387664c3281c7cd78b404a4efe73dcc45/numpy-2.3.1-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:ebb8603d45bc86bbd5edb0d63e52c5fd9e7945d3a503b77e486bd88dde67a19b", size = 5304087, upload-time = "2025-06-21T12:26:22.294Z" }, + { url = "https://files.pythonhosted.org/packages/7a/b4/fe3ac1902bff7a4934a22d49e1c9d71a623204d654d4cc43c6e8fe337fcb/numpy-2.3.1-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:15aa4c392ac396e2ad3d0a2680c0f0dee420f9fed14eef09bdb9450ee6dcb7b7", size = 6817588, upload-time = "2025-06-21T12:26:32.939Z" }, + { url = "https://files.pythonhosted.org/packages/ae/ee/89bedf69c36ace1ac8f59e97811c1f5031e179a37e4821c3a230bf750142/numpy-2.3.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c6e0bf9d1a2f50d2b65a7cf56db37c095af17b59f6c132396f7c6d5dd76484df", size = 14399010, upload-time = "2025-06-21T12:26:54.086Z" }, + { url = "https://files.pythonhosted.org/packages/15/08/e00e7070ede29b2b176165eba18d6f9784d5349be3c0c1218338e79c27fd/numpy-2.3.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:eabd7e8740d494ce2b4ea0ff05afa1b7b291e978c0ae075487c51e8bd93c0c68", size = 16752042, upload-time = "2025-06-21T12:27:19.018Z" }, + { url = "https://files.pythonhosted.org/packages/48/6b/1c6b515a83d5564b1698a61efa245727c8feecf308f4091f565988519d20/numpy-2.3.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:e610832418a2bc09d974cc9fecebfa51e9532d6190223bc5ef6a7402ebf3b5cb", size = 12927246, upload-time = "2025-06-21T12:27:38.618Z" }, +] + +[[package]] +name = "openai" +version = "2.7.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "distro" }, + { name = "httpx" }, + { name = "jiter" }, + { name = "pydantic" }, + { name = "sniffio" }, + { name = "tqdm" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/71/e3/cec27fa28ef36c4ccea71e9e8c20be9b8539618732989a82027575aab9d4/openai-2.7.2.tar.gz", hash = "sha256:082ef61163074d8efad0035dd08934cf5e3afd37254f70fc9165dd6a8c67dcbd", size = 595732, upload-time = "2025-11-10T16:42:31.108Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/66/22cfe4b695b5fd042931b32c67d685e867bfd169ebf46036b95b57314c33/openai-2.7.2-py3-none-any.whl", hash = "sha256:116f522f4427f8a0a59b51655a356da85ce092f3ed6abeca65f03c8be6e073d9", size = 1008375, upload-time = "2025-11-10T16:42:28.574Z" }, +] + +[[package]] +name = "orjson" +version = "3.11.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/29/87/03ababa86d984952304ac8ce9fbd3a317afb4a225b9a81f9b606ac60c873/orjson-3.11.0.tar.gz", hash = "sha256:2e4c129da624f291bcc607016a99e7f04a353f6874f3bd8d9b47b88597d5f700", size = 5318246, upload-time = "2025-07-15T16:08:29.194Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/2c/0b71a763f0f5130aa2631ef79e2cd84d361294665acccbb12b7a9813194e/orjson-3.11.0-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:1785df7ada75c18411ff7e20ac822af904a40161ea9dfe8c55b3f6b66939add6", size = 240007, upload-time = "2025-07-15T16:06:45.411Z" }, + { url = "https://files.pythonhosted.org/packages/f4/5a/f79ccd63d378b9c7c771d7a54c203d261b4c618fe3034ae95cd30f934f34/orjson-3.11.0-cp311-cp311-macosx_15_0_arm64.whl", hash = "sha256:a57899bebbcea146616a2426d20b51b3562b4bc9f8039a3bd14fae361c23053d", size = 129320, upload-time = "2025-07-15T16:06:47.249Z" }, + { url = "https://files.pythonhosted.org/packages/7b/8a/63dafc147fa5ba945ad809c374b8f4ee692bb6b18aa6e161c3e6b69b594e/orjson-3.11.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b6fbc2fc825aff1456dd358c11a0ad7912a4cb4537d3db92e5334af7463a967", size = 132254, upload-time = "2025-07-15T16:06:48.597Z" }, + { url = "https://files.pythonhosted.org/packages/3c/11/4d1eb230483cc689a2f039c531bb2c980029c40ca5a9b5f64dce9786e955/orjson-3.11.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4305a638f4cf9bed3746ca3b7c242f14e05177d5baec2527026e0f9ee6c24fb7", size = 127003, upload-time = "2025-07-15T16:06:50.34Z" }, + { url = "https://files.pythonhosted.org/packages/4f/39/b6e96072946d908684e0f4b3de1639062fd5b32016b2929c035bd8e5c847/orjson-3.11.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1235fe7bbc37164f69302199d46f29cfb874018738714dccc5a5a44042c79c77", size = 128674, upload-time = "2025-07-15T16:06:51.659Z" }, + { url = "https://files.pythonhosted.org/packages/1e/dd/c77e3013f35b202ec2cc1f78a95fadf86b8c5a320d56eb1a0bbb965a87bb/orjson-3.11.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a640e3954e7b4fcb160097551e54cafbde9966be3991932155b71071077881aa", size = 131846, upload-time = "2025-07-15T16:06:53.359Z" }, + { url = "https://files.pythonhosted.org/packages/3f/7d/d83f0f96c2b142f9cdcf12df19052ea3767970989dc757598dc108db208f/orjson-3.11.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d750b97d22d5566955e50b02c622f3a1d32744d7a578c878b29a873190ccb7a", size = 134016, upload-time = "2025-07-15T16:06:54.691Z" }, + { url = "https://files.pythonhosted.org/packages/67/4f/d22f79a3c56dde563c4fbc12eebf9224a1b87af5e4ec61beb11f9b3eb499/orjson-3.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4bfcfe498484161e011f8190a400591c52b026de96b3b3cbd3f21e8999b9dc0e", size = 127930, upload-time = "2025-07-15T16:06:56.001Z" }, + { url = "https://files.pythonhosted.org/packages/07/1e/26aede257db2163d974139fd4571f1e80f565216ccbd2c44ee1d43a63dcc/orjson-3.11.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:feaed3ed43a1d2df75c039798eb5ec92c350c7d86be53369bafc4f3700ce7df2", size = 130569, upload-time = "2025-07-15T16:06:57.275Z" }, + { url = "https://files.pythonhosted.org/packages/b4/bf/2cb57eac8d6054b555cba27203490489a7d3f5dca8c34382f22f2f0f17ba/orjson-3.11.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:aa1120607ec8fc98acf8c54aac6fb0b7b003ba883401fa2d261833111e2fa071", size = 403844, upload-time = "2025-07-15T16:06:59.107Z" }, + { url = "https://files.pythonhosted.org/packages/76/34/36e859ccfc45464df7b35c438c0ecc7751c930b3ebbefb50db7e3a641eb7/orjson-3.11.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:c4b48d9775b0cf1f0aca734f4c6b272cbfacfac38e6a455e6520662f9434afb7", size = 144613, upload-time = "2025-07-15T16:07:00.48Z" }, + { url = "https://files.pythonhosted.org/packages/31/c5/5aeb84cdd0b44dc3972668944a1312f7983c2a45fb6b0e5e32b2f9408540/orjson-3.11.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f018ed1986d79434ac712ff19f951cd00b4dfcb767444410fbb834ebec160abf", size = 132419, upload-time = "2025-07-15T16:07:01.927Z" }, + { url = "https://files.pythonhosted.org/packages/59/0c/95ee1e61a067ad24c4921609156b3beeca8b102f6f36dca62b08e1a7c7a8/orjson-3.11.0-cp311-cp311-win32.whl", hash = "sha256:08e191f8a55ac2c00be48e98a5d10dca004cbe8abe73392c55951bfda60fc123", size = 134620, upload-time = "2025-07-15T16:07:03.304Z" }, + { url = "https://files.pythonhosted.org/packages/94/3e/afd5e284db9387023803553061ea05c785c36fe7845e4fe25912424b343f/orjson-3.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:b5a4214ea59c8a3b56f8d484b28114af74e9fba0956f9be5c3ce388ae143bf1f", size = 129333, upload-time = "2025-07-15T16:07:04.973Z" }, + { url = "https://files.pythonhosted.org/packages/8b/a4/d29e9995d73f23f2444b4db299a99477a4f7e6f5bf8923b775ef43a4e660/orjson-3.11.0-cp311-cp311-win_arm64.whl", hash = "sha256:57e8e7198a679ab21241ab3f355a7990c7447559e35940595e628c107ef23736", size = 126656, upload-time = "2025-07-15T16:07:06.288Z" }, + { url = "https://files.pythonhosted.org/packages/92/c9/241e304fb1e58ea70b720f1a9e5349c6bb7735ffac401ef1b94f422edd6d/orjson-3.11.0-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:b4089f940c638bb1947d54e46c1cd58f4259072fcc97bc833ea9c78903150ac9", size = 240269, upload-time = "2025-07-15T16:07:08.173Z" }, + { url = "https://files.pythonhosted.org/packages/26/7c/289457cdf40be992b43f1d90ae213ebc03a31a8e2850271ecd79e79a3135/orjson-3.11.0-cp312-cp312-macosx_15_0_arm64.whl", hash = "sha256:8335a0ba1c26359fb5c82d643b4c1abbee2bc62875e0f2b5bde6c8e9e25eb68c", size = 129276, upload-time = "2025-07-15T16:07:10.128Z" }, + { url = "https://files.pythonhosted.org/packages/66/de/5c0528d46ded965939b6b7f75b1fe93af42b9906b0039096fc92c9001c12/orjson-3.11.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63c1c9772dafc811d16d6a7efa3369a739da15d1720d6e58ebe7562f54d6f4a2", size = 131966, upload-time = "2025-07-15T16:07:11.509Z" }, + { url = "https://files.pythonhosted.org/packages/ad/74/39822f267b5935fb6fc961ccc443f4968a74d34fc9270b83caa44e37d907/orjson-3.11.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9457ccbd8b241fb4ba516417a4c5b95ba0059df4ac801309bcb4ec3870f45ad9", size = 127028, upload-time = "2025-07-15T16:07:13.023Z" }, + { url = "https://files.pythonhosted.org/packages/7c/e3/28f6ed7f03db69bddb3ef48621b2b05b394125188f5909ee0a43fcf4820e/orjson-3.11.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0846e13abe79daece94a00b92574f294acad1d362be766c04245b9b4dd0e47e1", size = 129105, upload-time = "2025-07-15T16:07:14.367Z" }, + { url = "https://files.pythonhosted.org/packages/cb/50/8867fd2fc92c0ab1c3e14673ec5d9d0191202e4ab8ba6256d7a1d6943ad3/orjson-3.11.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5587c85ae02f608a3f377b6af9eb04829606f518257cbffa8f5081c1aacf2e2f", size = 131902, upload-time = "2025-07-15T16:07:16.176Z" }, + { url = "https://files.pythonhosted.org/packages/13/65/c189deea10342afee08006331082ff67d11b98c2394989998b3ea060354a/orjson-3.11.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c7a1964a71c1567b4570c932a0084ac24ad52c8cf6253d1881400936565ed438", size = 134042, upload-time = "2025-07-15T16:07:17.937Z" }, + { url = "https://files.pythonhosted.org/packages/2b/e4/cf23c3f4231d2a9a043940ab045f799f84a6df1b4fb6c9b4412cdc3ebf8c/orjson-3.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b5a8243e73690cc6e9151c9e1dd046a8f21778d775f7d478fa1eb4daa4897c61", size = 128260, upload-time = "2025-07-15T16:07:19.651Z" }, + { url = "https://files.pythonhosted.org/packages/de/b9/2cb94d3a67edb918d19bad4a831af99cd96c3657a23daa239611bcf335d7/orjson-3.11.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:51646f6d995df37b6e1b628f092f41c0feccf1d47e3452c6e95e2474b547d842", size = 130282, upload-time = "2025-07-15T16:07:21.022Z" }, + { url = "https://files.pythonhosted.org/packages/0b/96/df963cc973e689d4c56398647917b4ee95f47e5b6d2779338c09c015b23b/orjson-3.11.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:2fb8ca8f0b4e31b8aaec674c7540649b64ef02809410506a44dc68d31bd5647b", size = 403765, upload-time = "2025-07-15T16:07:25.469Z" }, + { url = "https://files.pythonhosted.org/packages/fb/92/71429ee1badb69f53281602dbb270fa84fc2e51c83193a814d0208bb63b0/orjson-3.11.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:64a6a3e94a44856c3f6557e6aa56a6686544fed9816ae0afa8df9077f5759791", size = 144779, upload-time = "2025-07-15T16:07:27.339Z" }, + { url = "https://files.pythonhosted.org/packages/c8/ab/3678b2e5ff0c622a974cb8664ed7cdda5ed26ae2b9d71ba66ec36f32d6cf/orjson-3.11.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d69f95d484938d8fab5963e09131bcf9fbbb81fa4ec132e316eb2fb9adb8ce78", size = 132797, upload-time = "2025-07-15T16:07:28.717Z" }, + { url = "https://files.pythonhosted.org/packages/9d/8c/74509f715ff189d2aca90ebb0bd5af6658e0f9aa2512abbe6feca4c78208/orjson-3.11.0-cp312-cp312-win32.whl", hash = "sha256:8514f9f9c667ce7d7ef709ab1a73e7fcab78c297270e90b1963df7126d2b0e23", size = 134695, upload-time = "2025-07-15T16:07:30.034Z" }, + { url = "https://files.pythonhosted.org/packages/82/ba/ef25e3e223f452a01eac6a5b38d05c152d037508dcbf87ad2858cbb7d82e/orjson-3.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:41b38a894520b8cb5344a35ffafdf6ae8042f56d16771b2c5eb107798cee85ee", size = 129446, upload-time = "2025-07-15T16:07:31.412Z" }, + { url = "https://files.pythonhosted.org/packages/e3/cd/6f4d93867c5d81bb4ab2d4ac870d3d6e9ba34fa580a03b8d04bf1ce1d8ad/orjson-3.11.0-cp312-cp312-win_arm64.whl", hash = "sha256:5579acd235dd134467340b2f8a670c1c36023b5a69c6a3174c4792af7502bd92", size = 126400, upload-time = "2025-07-15T16:07:34.143Z" }, + { url = "https://files.pythonhosted.org/packages/31/63/82d9b6b48624009d230bc6038e54778af8f84dfd54402f9504f477c5cfd5/orjson-3.11.0-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:4a8ba9698655e16746fdf5266939427da0f9553305152aeb1a1cc14974a19cfb", size = 240125, upload-time = "2025-07-15T16:07:35.976Z" }, + { url = "https://files.pythonhosted.org/packages/16/3a/d557ed87c63237d4c97a7bac7ac054c347ab8c4b6da09748d162ca287175/orjson-3.11.0-cp313-cp313-macosx_15_0_arm64.whl", hash = "sha256:67133847f9a35a5ef5acfa3325d4a2f7fe05c11f1505c4117bb086fc06f2a58f", size = 129189, upload-time = "2025-07-15T16:07:37.486Z" }, + { url = "https://files.pythonhosted.org/packages/69/5e/b2c9e22e2cd10aa7d76a629cee65d661e06a61fbaf4dc226386f5636dd44/orjson-3.11.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f797d57814975b78f5f5423acb003db6f9be5186b72d48bd97a1000e89d331d", size = 131953, upload-time = "2025-07-15T16:07:39.254Z" }, + { url = "https://files.pythonhosted.org/packages/e2/60/760fcd9b50eb44d1206f2b30c8d310b79714553b9d94a02f9ea3252ebe63/orjson-3.11.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:28acd19822987c5163b9e03a6e60853a52acfee384af2b394d11cb413b889246", size = 126922, upload-time = "2025-07-15T16:07:41.282Z" }, + { url = "https://files.pythonhosted.org/packages/6a/7a/8c46daa867ccc92da6de9567608be62052774b924a77c78382e30d50b579/orjson-3.11.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e8d38d9e1e2cf9729658e35956cf01e13e89148beb4cb9e794c9c10c5cb252f8", size = 128787, upload-time = "2025-07-15T16:07:42.681Z" }, + { url = "https://files.pythonhosted.org/packages/f2/14/a2f1b123d85f11a19e8749f7d3f9ed6c9b331c61f7b47cfd3e9a1fedb9bc/orjson-3.11.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05f094edd2b782650b0761fd78858d9254de1c1286f5af43145b3d08cdacfd51", size = 131895, upload-time = "2025-07-15T16:07:44.519Z" }, + { url = "https://files.pythonhosted.org/packages/c8/10/362e8192df7528e8086ea712c5cb01355c8d4e52c59a804417ba01e2eb2d/orjson-3.11.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d09176a4a9e04a5394a4a0edd758f645d53d903b306d02f2691b97d5c736a9e", size = 133868, upload-time = "2025-07-15T16:07:46.227Z" }, + { url = "https://files.pythonhosted.org/packages/f8/4e/ef43582ef3e3dfd2a39bc3106fa543364fde1ba58489841120219da6e22f/orjson-3.11.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a585042104e90a61eda2564d11317b6a304eb4e71cd33e839f5af6be56c34d3", size = 128234, upload-time = "2025-07-15T16:07:48.123Z" }, + { url = "https://files.pythonhosted.org/packages/d7/fa/02dabb2f1d605bee8c4bb1160cfc7467976b1ed359a62cc92e0681b53c45/orjson-3.11.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d2218629dbfdeeb5c9e0573d59f809d42f9d49ae6464d2f479e667aee14c3ef4", size = 130232, upload-time = "2025-07-15T16:07:50.197Z" }, + { url = "https://files.pythonhosted.org/packages/16/76/951b5619605c8d2ede80cc989f32a66abc954530d86e84030db2250c63a1/orjson-3.11.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:613e54a2b10b51b656305c11235a9c4a5c5491ef5c283f86483d4e9e123ed5e4", size = 403648, upload-time = "2025-07-15T16:07:52.136Z" }, + { url = "https://files.pythonhosted.org/packages/96/e2/5fa53bb411455a63b3713db90b588e6ca5ed2db59ad49b3fb8a0e94e0dda/orjson-3.11.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:9dac7fbf3b8b05965986c5cfae051eb9a30fced7f15f1d13a5adc608436eb486", size = 144572, upload-time = "2025-07-15T16:07:54.004Z" }, + { url = "https://files.pythonhosted.org/packages/ad/d0/7d6f91e1e0f034258c3a3358f20b0c9490070e8a7ab8880085547274c7f9/orjson-3.11.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:93b64b254414e2be55ac5257124b5602c5f0b4d06b80bd27d1165efe8f36e836", size = 132766, upload-time = "2025-07-15T16:07:55.936Z" }, + { url = "https://files.pythonhosted.org/packages/ff/f8/4d46481f1b3fb40dc826d62179f96c808eb470cdcc74b6593fb114d74af3/orjson-3.11.0-cp313-cp313-win32.whl", hash = "sha256:359cbe11bc940c64cb3848cf22000d2aef36aff7bfd09ca2c0b9cb309c387132", size = 134638, upload-time = "2025-07-15T16:07:57.343Z" }, + { url = "https://files.pythonhosted.org/packages/85/3f/544938dcfb7337d85ee1e43d7685cf8f3bfd452e0b15a32fe70cb4ca5094/orjson-3.11.0-cp313-cp313-win_amd64.whl", hash = "sha256:0759b36428067dc777b202dd286fbdd33d7f261c6455c4238ea4e8474358b1e6", size = 129411, upload-time = "2025-07-15T16:07:58.852Z" }, + { url = "https://files.pythonhosted.org/packages/43/0c/f75015669d7817d222df1bb207f402277b77d22c4833950c8c8c7cf2d325/orjson-3.11.0-cp313-cp313-win_arm64.whl", hash = "sha256:51cdca2f36e923126d0734efaf72ddbb5d6da01dbd20eab898bdc50de80d7b5a", size = 126349, upload-time = "2025-07-15T16:08:00.322Z" }, +] + +[[package]] +name = "ormsgpack" +version = "1.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/92/36/44eed5ef8ce93cded76a576780bab16425ce7876f10d3e2e6265e46c21ea/ormsgpack-1.10.0.tar.gz", hash = "sha256:7f7a27efd67ef22d7182ec3b7fa7e9d147c3ad9be2a24656b23c989077e08b16", size = 58629, upload-time = "2025-05-24T19:07:53.944Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/30/27/7da748bc0d7d567950a378dee5a32477ed5d15462ab186918b5f25cac1ad/ormsgpack-1.10.0-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:4bb7df307e17b36cbf7959cd642c47a7f2046ae19408c564e437f0ec323a7775", size = 376275, upload-time = "2025-05-24T19:07:05.128Z" }, + { url = "https://files.pythonhosted.org/packages/7b/65/c082cc8c74a914dbd05af0341c761c73c3d9960b7432bbf9b8e1e20811af/ormsgpack-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8817ae439c671779e1127ee62f0ac67afdeaeeacb5f0db45703168aa74a2e4af", size = 204335, upload-time = "2025-05-24T19:07:06.423Z" }, + { url = "https://files.pythonhosted.org/packages/46/62/17ef7e5d9766c79355b9c594cc9328c204f1677bc35da0595cc4e46449f0/ormsgpack-1.10.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2f345f81e852035d80232e64374d3a104139d60f8f43c6c5eade35c4bac5590e", size = 215372, upload-time = "2025-05-24T19:07:08.149Z" }, + { url = "https://files.pythonhosted.org/packages/4e/92/7c91e8115fc37e88d1a35e13200fda3054ff5d2e5adf017345e58cea4834/ormsgpack-1.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21de648a1c7ef692bdd287fb08f047bd5371d7462504c0a7ae1553c39fee35e3", size = 216470, upload-time = "2025-05-24T19:07:09.903Z" }, + { url = "https://files.pythonhosted.org/packages/2c/86/ce053c52e2517b90e390792d83e926a7a523c1bce5cc63d0a7cd05ce6cf6/ormsgpack-1.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3a7d844ae9cbf2112c16086dd931b2acefce14cefd163c57db161170c2bfa22b", size = 384591, upload-time = "2025-05-24T19:07:11.24Z" }, + { url = "https://files.pythonhosted.org/packages/07/e8/2ad59f2ab222c6029e500bc966bfd2fe5cb099f8ab6b7ebeb50ddb1a6fe5/ormsgpack-1.10.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:e4d80585403d86d7f800cf3d0aafac1189b403941e84e90dd5102bb2b92bf9d5", size = 478892, upload-time = "2025-05-24T19:07:13.147Z" }, + { url = "https://files.pythonhosted.org/packages/f4/73/f55e4b47b7b18fd8e7789680051bf830f1e39c03f1d9ed993cd0c3e97215/ormsgpack-1.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:da1de515a87e339e78a3ccf60e39f5fb740edac3e9e82d3c3d209e217a13ac08", size = 390122, upload-time = "2025-05-24T19:07:14.557Z" }, + { url = "https://files.pythonhosted.org/packages/f7/87/073251cdb93d4c6241748568b3ad1b2a76281fb2002eed16a3a4043d61cf/ormsgpack-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:57c4601812684024132cbb32c17a7d4bb46ffc7daf2fddf5b697391c2c4f142a", size = 121197, upload-time = "2025-05-24T19:07:15.981Z" }, + { url = "https://files.pythonhosted.org/packages/99/95/f3ab1a7638f6aa9362e87916bb96087fbbc5909db57e19f12ad127560e1e/ormsgpack-1.10.0-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:4e159d50cd4064d7540e2bc6a0ab66eab70b0cc40c618b485324ee17037527c0", size = 376806, upload-time = "2025-05-24T19:07:17.221Z" }, + { url = "https://files.pythonhosted.org/packages/6c/2b/42f559f13c0b0f647b09d749682851d47c1a7e48308c43612ae6833499c8/ormsgpack-1.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eeb47c85f3a866e29279d801115b554af0fefc409e2ed8aa90aabfa77efe5cc6", size = 204433, upload-time = "2025-05-24T19:07:18.569Z" }, + { url = "https://files.pythonhosted.org/packages/45/42/1ca0cb4d8c80340a89a4af9e6d8951fb8ba0d076a899d2084eadf536f677/ormsgpack-1.10.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c28249574934534c9bd5dce5485c52f21bcea0ee44d13ece3def6e3d2c3798b5", size = 215547, upload-time = "2025-05-24T19:07:20.245Z" }, + { url = "https://files.pythonhosted.org/packages/0a/38/184a570d7c44c0260bc576d1daaac35b2bfd465a50a08189518505748b9a/ormsgpack-1.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1957dcadbb16e6a981cd3f9caef9faf4c2df1125e2a1b702ee8236a55837ce07", size = 216746, upload-time = "2025-05-24T19:07:21.83Z" }, + { url = "https://files.pythonhosted.org/packages/69/2f/1aaffd08f6b7fdc2a57336a80bdfb8df24e6a65ada5aa769afecfcbc6cc6/ormsgpack-1.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3b29412558c740bf6bac156727aa85ac67f9952cd6f071318f29ee72e1a76044", size = 384783, upload-time = "2025-05-24T19:07:23.674Z" }, + { url = "https://files.pythonhosted.org/packages/a9/63/3e53d6f43bb35e00c98f2b8ab2006d5138089ad254bc405614fbf0213502/ormsgpack-1.10.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:6933f350c2041ec189fe739f0ba7d6117c8772f5bc81f45b97697a84d03020dd", size = 479076, upload-time = "2025-05-24T19:07:25.047Z" }, + { url = "https://files.pythonhosted.org/packages/b8/19/fa1121b03b61402bb4d04e35d164e2320ef73dfb001b57748110319dd014/ormsgpack-1.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9a86de06d368fcc2e58b79dece527dc8ca831e0e8b9cec5d6e633d2777ec93d0", size = 390447, upload-time = "2025-05-24T19:07:26.568Z" }, + { url = "https://files.pythonhosted.org/packages/b0/0d/73143ecb94ac4a5dcba223402139240a75dee0cc6ba8a543788a5646407a/ormsgpack-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:35fa9f81e5b9a0dab42e09a73f7339ecffdb978d6dbf9deb2ecf1e9fc7808722", size = 121401, upload-time = "2025-05-24T19:07:28.308Z" }, + { url = "https://files.pythonhosted.org/packages/61/f8/ec5f4e03268d0097545efaab2893aa63f171cf2959cb0ea678a5690e16a1/ormsgpack-1.10.0-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:8d816d45175a878993b7372bd5408e0f3ec5a40f48e2d5b9d8f1cc5d31b61f1f", size = 376806, upload-time = "2025-05-24T19:07:29.555Z" }, + { url = "https://files.pythonhosted.org/packages/c1/19/b3c53284aad1e90d4d7ed8c881a373d218e16675b8b38e3569d5b40cc9b8/ormsgpack-1.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a90345ccb058de0f35262893751c603b6376b05f02be2b6f6b7e05d9dd6d5643", size = 204433, upload-time = "2025-05-24T19:07:30.977Z" }, + { url = "https://files.pythonhosted.org/packages/09/0b/845c258f59df974a20a536c06cace593698491defdd3d026a8a5f9b6e745/ormsgpack-1.10.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:144b5e88f1999433e54db9d637bae6fe21e935888be4e3ac3daecd8260bd454e", size = 215549, upload-time = "2025-05-24T19:07:32.345Z" }, + { url = "https://files.pythonhosted.org/packages/61/56/57fce8fb34ca6c9543c026ebebf08344c64dbb7b6643d6ddd5355d37e724/ormsgpack-1.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2190b352509d012915921cca76267db136cd026ddee42f1b0d9624613cc7058c", size = 216747, upload-time = "2025-05-24T19:07:34.075Z" }, + { url = "https://files.pythonhosted.org/packages/b8/3f/655b5f6a2475c8d209f5348cfbaaf73ce26237b92d79ef2ad439407dd0fa/ormsgpack-1.10.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:86fd9c1737eaba43d3bb2730add9c9e8b5fbed85282433705dd1b1e88ea7e6fb", size = 384785, upload-time = "2025-05-24T19:07:35.83Z" }, + { url = "https://files.pythonhosted.org/packages/4b/94/687a0ad8afd17e4bce1892145d6a1111e58987ddb176810d02a1f3f18686/ormsgpack-1.10.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:33afe143a7b61ad21bb60109a86bb4e87fec70ef35db76b89c65b17e32da7935", size = 479076, upload-time = "2025-05-24T19:07:37.533Z" }, + { url = "https://files.pythonhosted.org/packages/c8/34/68925232e81e0e062a2f0ac678f62aa3b6f7009d6a759e19324dbbaebae7/ormsgpack-1.10.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f23d45080846a7b90feabec0d330a9cc1863dc956728412e4f7986c80ab3a668", size = 390446, upload-time = "2025-05-24T19:07:39.469Z" }, + { url = "https://files.pythonhosted.org/packages/12/ad/f4e1a36a6d1714afb7ffb74b3ababdcb96529cf4e7a216f9f7c8eda837b6/ormsgpack-1.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:534d18acb805c75e5fba09598bf40abe1851c853247e61dda0c01f772234da69", size = 121399, upload-time = "2025-05-24T19:07:40.854Z" }, +] + +[[package]] +name = "overrides" +version = "7.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/36/86/b585f53236dec60aba864e050778b25045f857e17f6e5ea0ae95fe80edd2/overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a", size = 22812, upload-time = "2024-01-27T21:01:33.423Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/ab/fc8290c6a4c722e5514d80f62b2dc4c4df1a68a41d1364e625c35990fcf3/overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49", size = 17832, upload-time = "2024-01-27T21:01:31.393Z" }, +] + +[[package]] +name = "packaging" +version = "25.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, +] + +[[package]] +name = "pandas" +version = "2.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "python-dateutil" }, + { name = "pytz" }, + { name = "tzdata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/33/01/d40b85317f86cf08d853a4f495195c73815fdf205eef3993821720274518/pandas-2.3.3.tar.gz", hash = "sha256:e05e1af93b977f7eafa636d043f9f94c7ee3ac81af99c13508215942e64c993b", size = 4495223, upload-time = "2025-09-29T23:34:51.853Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/fa/7ac648108144a095b4fb6aa3de1954689f7af60a14cf25583f4960ecb878/pandas-2.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:602b8615ebcc4a0c1751e71840428ddebeb142ec02c786e8ad6b1ce3c8dec523", size = 11578790, upload-time = "2025-09-29T23:18:30.065Z" }, + { url = "https://files.pythonhosted.org/packages/9b/35/74442388c6cf008882d4d4bdfc4109be87e9b8b7ccd097ad1e7f006e2e95/pandas-2.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8fe25fc7b623b0ef6b5009149627e34d2a4657e880948ec3c840e9402e5c1b45", size = 10833831, upload-time = "2025-09-29T23:38:56.071Z" }, + { url = "https://files.pythonhosted.org/packages/fe/e4/de154cbfeee13383ad58d23017da99390b91d73f8c11856f2095e813201b/pandas-2.3.3-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b468d3dad6ff947df92dcb32ede5b7bd41a9b3cceef0a30ed925f6d01fb8fa66", size = 12199267, upload-time = "2025-09-29T23:18:41.627Z" }, + { url = "https://files.pythonhosted.org/packages/bf/c9/63f8d545568d9ab91476b1818b4741f521646cbdd151c6efebf40d6de6f7/pandas-2.3.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b98560e98cb334799c0b07ca7967ac361a47326e9b4e5a7dfb5ab2b1c9d35a1b", size = 12789281, upload-time = "2025-09-29T23:18:56.834Z" }, + { url = "https://files.pythonhosted.org/packages/f2/00/a5ac8c7a0e67fd1a6059e40aa08fa1c52cc00709077d2300e210c3ce0322/pandas-2.3.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37b5848ba49824e5c30bedb9c830ab9b7751fd049bc7914533e01c65f79791", size = 13240453, upload-time = "2025-09-29T23:19:09.247Z" }, + { url = "https://files.pythonhosted.org/packages/27/4d/5c23a5bc7bd209231618dd9e606ce076272c9bc4f12023a70e03a86b4067/pandas-2.3.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:db4301b2d1f926ae677a751eb2bd0e8c5f5319c9cb3f88b0becbbb0b07b34151", size = 13890361, upload-time = "2025-09-29T23:19:25.342Z" }, + { url = "https://files.pythonhosted.org/packages/8e/59/712db1d7040520de7a4965df15b774348980e6df45c129b8c64d0dbe74ef/pandas-2.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:f086f6fe114e19d92014a1966f43a3e62285109afe874f067f5abbdcbb10e59c", size = 11348702, upload-time = "2025-09-29T23:19:38.296Z" }, + { url = "https://files.pythonhosted.org/packages/9c/fb/231d89e8637c808b997d172b18e9d4a4bc7bf31296196c260526055d1ea0/pandas-2.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d21f6d74eb1725c2efaa71a2bfc661a0689579b58e9c0ca58a739ff0b002b53", size = 11597846, upload-time = "2025-09-29T23:19:48.856Z" }, + { url = "https://files.pythonhosted.org/packages/5c/bd/bf8064d9cfa214294356c2d6702b716d3cf3bb24be59287a6a21e24cae6b/pandas-2.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3fd2f887589c7aa868e02632612ba39acb0b8948faf5cc58f0850e165bd46f35", size = 10729618, upload-time = "2025-09-29T23:39:08.659Z" }, + { url = "https://files.pythonhosted.org/packages/57/56/cf2dbe1a3f5271370669475ead12ce77c61726ffd19a35546e31aa8edf4e/pandas-2.3.3-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ecaf1e12bdc03c86ad4a7ea848d66c685cb6851d807a26aa245ca3d2017a1908", size = 11737212, upload-time = "2025-09-29T23:19:59.765Z" }, + { url = "https://files.pythonhosted.org/packages/e5/63/cd7d615331b328e287d8233ba9fdf191a9c2d11b6af0c7a59cfcec23de68/pandas-2.3.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b3d11d2fda7eb164ef27ffc14b4fcab16a80e1ce67e9f57e19ec0afaf715ba89", size = 12362693, upload-time = "2025-09-29T23:20:14.098Z" }, + { url = "https://files.pythonhosted.org/packages/a6/de/8b1895b107277d52f2b42d3a6806e69cfef0d5cf1d0ba343470b9d8e0a04/pandas-2.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a68e15f780eddf2b07d242e17a04aa187a7ee12b40b930bfdd78070556550e98", size = 12771002, upload-time = "2025-09-29T23:20:26.76Z" }, + { url = "https://files.pythonhosted.org/packages/87/21/84072af3187a677c5893b170ba2c8fbe450a6ff911234916da889b698220/pandas-2.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:371a4ab48e950033bcf52b6527eccb564f52dc826c02afd9a1bc0ab731bba084", size = 13450971, upload-time = "2025-09-29T23:20:41.344Z" }, + { url = "https://files.pythonhosted.org/packages/86/41/585a168330ff063014880a80d744219dbf1dd7a1c706e75ab3425a987384/pandas-2.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:a16dcec078a01eeef8ee61bf64074b4e524a2a3f4b3be9326420cabe59c4778b", size = 10992722, upload-time = "2025-09-29T23:20:54.139Z" }, + { url = "https://files.pythonhosted.org/packages/cd/4b/18b035ee18f97c1040d94debd8f2e737000ad70ccc8f5513f4eefad75f4b/pandas-2.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:56851a737e3470de7fa88e6131f41281ed440d29a9268dcbf0002da5ac366713", size = 11544671, upload-time = "2025-09-29T23:21:05.024Z" }, + { url = "https://files.pythonhosted.org/packages/31/94/72fac03573102779920099bcac1c3b05975c2cb5f01eac609faf34bed1ca/pandas-2.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bdcd9d1167f4885211e401b3036c0c8d9e274eee67ea8d0758a256d60704cfe8", size = 10680807, upload-time = "2025-09-29T23:21:15.979Z" }, + { url = "https://files.pythonhosted.org/packages/16/87/9472cf4a487d848476865321de18cc8c920b8cab98453ab79dbbc98db63a/pandas-2.3.3-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e32e7cc9af0f1cc15548288a51a3b681cc2a219faa838e995f7dc53dbab1062d", size = 11709872, upload-time = "2025-09-29T23:21:27.165Z" }, + { url = "https://files.pythonhosted.org/packages/15/07/284f757f63f8a8d69ed4472bfd85122bd086e637bf4ed09de572d575a693/pandas-2.3.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:318d77e0e42a628c04dc56bcef4b40de67918f7041c2b061af1da41dcff670ac", size = 12306371, upload-time = "2025-09-29T23:21:40.532Z" }, + { url = "https://files.pythonhosted.org/packages/33/81/a3afc88fca4aa925804a27d2676d22dcd2031c2ebe08aabd0ae55b9ff282/pandas-2.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4e0a175408804d566144e170d0476b15d78458795bb18f1304fb94160cabf40c", size = 12765333, upload-time = "2025-09-29T23:21:55.77Z" }, + { url = "https://files.pythonhosted.org/packages/8d/0f/b4d4ae743a83742f1153464cf1a8ecfafc3ac59722a0b5c8602310cb7158/pandas-2.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:93c2d9ab0fc11822b5eece72ec9587e172f63cff87c00b062f6e37448ced4493", size = 13418120, upload-time = "2025-09-29T23:22:10.109Z" }, + { url = "https://files.pythonhosted.org/packages/4f/c7/e54682c96a895d0c808453269e0b5928a07a127a15704fedb643e9b0a4c8/pandas-2.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:f8bfc0e12dc78f777f323f55c58649591b2cd0c43534e8355c51d3fede5f4dee", size = 10993991, upload-time = "2025-09-29T23:25:04.889Z" }, + { url = "https://files.pythonhosted.org/packages/f9/ca/3f8d4f49740799189e1395812f3bf23b5e8fc7c190827d55a610da72ce55/pandas-2.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:75ea25f9529fdec2d2e93a42c523962261e567d250b0013b16210e1d40d7c2e5", size = 12048227, upload-time = "2025-09-29T23:22:24.343Z" }, + { url = "https://files.pythonhosted.org/packages/0e/5a/f43efec3e8c0cc92c4663ccad372dbdff72b60bdb56b2749f04aa1d07d7e/pandas-2.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:74ecdf1d301e812db96a465a525952f4dde225fdb6d8e5a521d47e1f42041e21", size = 11411056, upload-time = "2025-09-29T23:22:37.762Z" }, + { url = "https://files.pythonhosted.org/packages/46/b1/85331edfc591208c9d1a63a06baa67b21d332e63b7a591a5ba42a10bb507/pandas-2.3.3-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6435cb949cb34ec11cc9860246ccb2fdc9ecd742c12d3304989017d53f039a78", size = 11645189, upload-time = "2025-09-29T23:22:51.688Z" }, + { url = "https://files.pythonhosted.org/packages/44/23/78d645adc35d94d1ac4f2a3c4112ab6f5b8999f4898b8cdf01252f8df4a9/pandas-2.3.3-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:900f47d8f20860de523a1ac881c4c36d65efcb2eb850e6948140fa781736e110", size = 12121912, upload-time = "2025-09-29T23:23:05.042Z" }, + { url = "https://files.pythonhosted.org/packages/53/da/d10013df5e6aaef6b425aa0c32e1fc1f3e431e4bcabd420517dceadce354/pandas-2.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a45c765238e2ed7d7c608fc5bc4a6f88b642f2f01e70c0c23d2224dd21829d86", size = 12712160, upload-time = "2025-09-29T23:23:28.57Z" }, + { url = "https://files.pythonhosted.org/packages/bd/17/e756653095a083d8a37cbd816cb87148debcfcd920129b25f99dd8d04271/pandas-2.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c4fc4c21971a1a9f4bdb4c73978c7f7256caa3e62b323f70d6cb80db583350bc", size = 13199233, upload-time = "2025-09-29T23:24:24.876Z" }, +] + +[[package]] +name = "pandocfilters" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/70/6f/3dd4940bbe001c06a65f88e36bad298bc7a0de5036115639926b0c5c0458/pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e", size = 8454, upload-time = "2024-01-18T20:08:13.726Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc", size = 8663, upload-time = "2024-01-18T20:08:11.28Z" }, +] + +[[package]] +name = "parso" +version = "0.8.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/66/94/68e2e17afaa9169cf6412ab0f28623903be73d1b32e208d9e8e541bb086d/parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d", size = 400609, upload-time = "2024-04-05T09:43:55.897Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18", size = 103650, upload-time = "2024-04-05T09:43:53.299Z" }, +] + +[[package]] +name = "pathspec" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload-time = "2023-12-10T22:30:45Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload-time = "2023-12-10T22:30:43.14Z" }, +] + +[[package]] +name = "pexpect" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload-time = "2023-11-25T09:07:26.339Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload-time = "2023-11-25T06:56:14.81Z" }, +] + +[[package]] +name = "pillow" +version = "12.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/cace85a1b0c9775a9f8f5d5423c8261c858760e2466c79b2dd184638b056/pillow-12.0.0.tar.gz", hash = "sha256:87d4f8125c9988bfbed67af47dd7a953e2fc7b0cc1e7800ec6d2080d490bb353", size = 47008828, upload-time = "2025-10-15T18:24:14.008Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0e/5a/a2f6773b64edb921a756eb0729068acad9fc5208a53f4a349396e9436721/pillow-12.0.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0fd00cac9c03256c8b2ff58f162ebcd2587ad3e1f2e397eab718c47e24d231cc", size = 5289798, upload-time = "2025-10-15T18:21:47.763Z" }, + { url = "https://files.pythonhosted.org/packages/2e/05/069b1f8a2e4b5a37493da6c5868531c3f77b85e716ad7a590ef87d58730d/pillow-12.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a3475b96f5908b3b16c47533daaa87380c491357d197564e0ba34ae75c0f3257", size = 4650589, upload-time = "2025-10-15T18:21:49.515Z" }, + { url = "https://files.pythonhosted.org/packages/61/e3/2c820d6e9a36432503ead175ae294f96861b07600a7156154a086ba7111a/pillow-12.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:110486b79f2d112cf6add83b28b627e369219388f64ef2f960fef9ebaf54c642", size = 6230472, upload-time = "2025-10-15T18:21:51.052Z" }, + { url = "https://files.pythonhosted.org/packages/4f/89/63427f51c64209c5e23d4d52071c8d0f21024d3a8a487737caaf614a5795/pillow-12.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5269cc1caeedb67e6f7269a42014f381f45e2e7cd42d834ede3c703a1d915fe3", size = 8033887, upload-time = "2025-10-15T18:21:52.604Z" }, + { url = "https://files.pythonhosted.org/packages/f6/1b/c9711318d4901093c15840f268ad649459cd81984c9ec9887756cca049a5/pillow-12.0.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:aa5129de4e174daccbc59d0a3b6d20eaf24417d59851c07ebb37aeb02947987c", size = 6343964, upload-time = "2025-10-15T18:21:54.619Z" }, + { url = "https://files.pythonhosted.org/packages/41/1e/db9470f2d030b4995083044cd8738cdd1bf773106819f6d8ba12597d5352/pillow-12.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bee2a6db3a7242ea309aa7ee8e2780726fed67ff4e5b40169f2c940e7eb09227", size = 7034756, upload-time = "2025-10-15T18:21:56.151Z" }, + { url = "https://files.pythonhosted.org/packages/cc/b0/6177a8bdd5ee4ed87cba2de5a3cc1db55ffbbec6176784ce5bb75aa96798/pillow-12.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:90387104ee8400a7b4598253b4c406f8958f59fcf983a6cea2b50d59f7d63d0b", size = 6458075, upload-time = "2025-10-15T18:21:57.759Z" }, + { url = "https://files.pythonhosted.org/packages/bc/5e/61537aa6fa977922c6a03253a0e727e6e4a72381a80d63ad8eec350684f2/pillow-12.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bc91a56697869546d1b8f0a3ff35224557ae7f881050e99f615e0119bf934b4e", size = 7125955, upload-time = "2025-10-15T18:21:59.372Z" }, + { url = "https://files.pythonhosted.org/packages/1f/3d/d5033539344ee3cbd9a4d69e12e63ca3a44a739eb2d4c8da350a3d38edd7/pillow-12.0.0-cp311-cp311-win32.whl", hash = "sha256:27f95b12453d165099c84f8a8bfdfd46b9e4bda9e0e4b65f0635430027f55739", size = 6298440, upload-time = "2025-10-15T18:22:00.982Z" }, + { url = "https://files.pythonhosted.org/packages/4d/42/aaca386de5cc8bd8a0254516957c1f265e3521c91515b16e286c662854c4/pillow-12.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:b583dc9070312190192631373c6c8ed277254aa6e6084b74bdd0a6d3b221608e", size = 6999256, upload-time = "2025-10-15T18:22:02.617Z" }, + { url = "https://files.pythonhosted.org/packages/ba/f1/9197c9c2d5708b785f631a6dfbfa8eb3fb9672837cb92ae9af812c13b4ed/pillow-12.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:759de84a33be3b178a64c8ba28ad5c135900359e85fb662bc6e403ad4407791d", size = 2436025, upload-time = "2025-10-15T18:22:04.598Z" }, + { url = "https://files.pythonhosted.org/packages/2c/90/4fcce2c22caf044e660a198d740e7fbc14395619e3cb1abad12192c0826c/pillow-12.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:53561a4ddc36facb432fae7a9d8afbfaf94795414f5cdc5fc52f28c1dca90371", size = 5249377, upload-time = "2025-10-15T18:22:05.993Z" }, + { url = "https://files.pythonhosted.org/packages/fd/e0/ed960067543d080691d47d6938ebccbf3976a931c9567ab2fbfab983a5dd/pillow-12.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:71db6b4c1653045dacc1585c1b0d184004f0d7e694c7b34ac165ca70c0838082", size = 4650343, upload-time = "2025-10-15T18:22:07.718Z" }, + { url = "https://files.pythonhosted.org/packages/e7/a1/f81fdeddcb99c044bf7d6faa47e12850f13cee0849537a7d27eeab5534d4/pillow-12.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2fa5f0b6716fc88f11380b88b31fe591a06c6315e955c096c35715788b339e3f", size = 6232981, upload-time = "2025-10-15T18:22:09.287Z" }, + { url = "https://files.pythonhosted.org/packages/88/e1/9098d3ce341a8750b55b0e00c03f1630d6178f38ac191c81c97a3b047b44/pillow-12.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:82240051c6ca513c616f7f9da06e871f61bfd7805f566275841af15015b8f98d", size = 8041399, upload-time = "2025-10-15T18:22:10.872Z" }, + { url = "https://files.pythonhosted.org/packages/a7/62/a22e8d3b602ae8cc01446d0c57a54e982737f44b6f2e1e019a925143771d/pillow-12.0.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:55f818bd74fe2f11d4d7cbc65880a843c4075e0ac7226bc1a23261dbea531953", size = 6347740, upload-time = "2025-10-15T18:22:12.769Z" }, + { url = "https://files.pythonhosted.org/packages/4f/87/424511bdcd02c8d7acf9f65caa09f291a519b16bd83c3fb3374b3d4ae951/pillow-12.0.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b87843e225e74576437fd5b6a4c2205d422754f84a06942cfaf1dc32243e45a8", size = 7040201, upload-time = "2025-10-15T18:22:14.813Z" }, + { url = "https://files.pythonhosted.org/packages/dc/4d/435c8ac688c54d11755aedfdd9f29c9eeddf68d150fe42d1d3dbd2365149/pillow-12.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c607c90ba67533e1b2355b821fef6764d1dd2cbe26b8c1005ae84f7aea25ff79", size = 6462334, upload-time = "2025-10-15T18:22:16.375Z" }, + { url = "https://files.pythonhosted.org/packages/2b/f2/ad34167a8059a59b8ad10bc5c72d4d9b35acc6b7c0877af8ac885b5f2044/pillow-12.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:21f241bdd5080a15bc86d3466a9f6074a9c2c2b314100dd896ac81ee6db2f1ba", size = 7134162, upload-time = "2025-10-15T18:22:17.996Z" }, + { url = "https://files.pythonhosted.org/packages/0c/b1/a7391df6adacf0a5c2cf6ac1cf1fcc1369e7d439d28f637a847f8803beb3/pillow-12.0.0-cp312-cp312-win32.whl", hash = "sha256:dd333073e0cacdc3089525c7df7d39b211bcdf31fc2824e49d01c6b6187b07d0", size = 6298769, upload-time = "2025-10-15T18:22:19.923Z" }, + { url = "https://files.pythonhosted.org/packages/a2/0b/d87733741526541c909bbf159e338dcace4f982daac6e5a8d6be225ca32d/pillow-12.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:9fe611163f6303d1619bbcb653540a4d60f9e55e622d60a3108be0d5b441017a", size = 7001107, upload-time = "2025-10-15T18:22:21.644Z" }, + { url = "https://files.pythonhosted.org/packages/bc/96/aaa61ce33cc98421fb6088af2a03be4157b1e7e0e87087c888e2370a7f45/pillow-12.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:7dfb439562f234f7d57b1ac6bc8fe7f838a4bd49c79230e0f6a1da93e82f1fad", size = 2436012, upload-time = "2025-10-15T18:22:23.621Z" }, + { url = "https://files.pythonhosted.org/packages/62/f2/de993bb2d21b33a98d031ecf6a978e4b61da207bef02f7b43093774c480d/pillow-12.0.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:0869154a2d0546545cde61d1789a6524319fc1897d9ee31218eae7a60ccc5643", size = 4045493, upload-time = "2025-10-15T18:22:25.758Z" }, + { url = "https://files.pythonhosted.org/packages/0e/b6/bc8d0c4c9f6f111a783d045310945deb769b806d7574764234ffd50bc5ea/pillow-12.0.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:a7921c5a6d31b3d756ec980f2f47c0cfdbce0fc48c22a39347a895f41f4a6ea4", size = 4120461, upload-time = "2025-10-15T18:22:27.286Z" }, + { url = "https://files.pythonhosted.org/packages/5d/57/d60d343709366a353dc56adb4ee1e7d8a2cc34e3fbc22905f4167cfec119/pillow-12.0.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:1ee80a59f6ce048ae13cda1abf7fbd2a34ab9ee7d401c46be3ca685d1999a399", size = 3576912, upload-time = "2025-10-15T18:22:28.751Z" }, + { url = "https://files.pythonhosted.org/packages/a4/a4/a0a31467e3f83b94d37568294b01d22b43ae3c5d85f2811769b9c66389dd/pillow-12.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c50f36a62a22d350c96e49ad02d0da41dbd17ddc2e29750dbdba4323f85eb4a5", size = 5249132, upload-time = "2025-10-15T18:22:30.641Z" }, + { url = "https://files.pythonhosted.org/packages/83/06/48eab21dd561de2914242711434c0c0eb992ed08ff3f6107a5f44527f5e9/pillow-12.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5193fde9a5f23c331ea26d0cf171fbf67e3f247585f50c08b3e205c7aeb4589b", size = 4650099, upload-time = "2025-10-15T18:22:32.73Z" }, + { url = "https://files.pythonhosted.org/packages/fc/bd/69ed99fd46a8dba7c1887156d3572fe4484e3f031405fcc5a92e31c04035/pillow-12.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:bde737cff1a975b70652b62d626f7785e0480918dece11e8fef3c0cf057351c3", size = 6230808, upload-time = "2025-10-15T18:22:34.337Z" }, + { url = "https://files.pythonhosted.org/packages/ea/94/8fad659bcdbf86ed70099cb60ae40be6acca434bbc8c4c0d4ef356d7e0de/pillow-12.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a6597ff2b61d121172f5844b53f21467f7082f5fb385a9a29c01414463f93b07", size = 8037804, upload-time = "2025-10-15T18:22:36.402Z" }, + { url = "https://files.pythonhosted.org/packages/20/39/c685d05c06deecfd4e2d1950e9a908aa2ca8bc4e6c3b12d93b9cafbd7837/pillow-12.0.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0b817e7035ea7f6b942c13aa03bb554fc44fea70838ea21f8eb31c638326584e", size = 6345553, upload-time = "2025-10-15T18:22:38.066Z" }, + { url = "https://files.pythonhosted.org/packages/38/57/755dbd06530a27a5ed74f8cb0a7a44a21722ebf318edbe67ddbd7fb28f88/pillow-12.0.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f4f1231b7dec408e8670264ce63e9c71409d9583dd21d32c163e25213ee2a344", size = 7037729, upload-time = "2025-10-15T18:22:39.769Z" }, + { url = "https://files.pythonhosted.org/packages/ca/b6/7e94f4c41d238615674d06ed677c14883103dce1c52e4af16f000338cfd7/pillow-12.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6e51b71417049ad6ab14c49608b4a24d8fb3fe605e5dfabfe523b58064dc3d27", size = 6459789, upload-time = "2025-10-15T18:22:41.437Z" }, + { url = "https://files.pythonhosted.org/packages/9c/14/4448bb0b5e0f22dd865290536d20ec8a23b64e2d04280b89139f09a36bb6/pillow-12.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d120c38a42c234dc9a8c5de7ceaaf899cf33561956acb4941653f8bdc657aa79", size = 7130917, upload-time = "2025-10-15T18:22:43.152Z" }, + { url = "https://files.pythonhosted.org/packages/dd/ca/16c6926cc1c015845745d5c16c9358e24282f1e588237a4c36d2b30f182f/pillow-12.0.0-cp313-cp313-win32.whl", hash = "sha256:4cc6b3b2efff105c6a1656cfe59da4fdde2cda9af1c5e0b58529b24525d0a098", size = 6302391, upload-time = "2025-10-15T18:22:44.753Z" }, + { url = "https://files.pythonhosted.org/packages/6d/2a/dd43dcfd6dae9b6a49ee28a8eedb98c7d5ff2de94a5d834565164667b97b/pillow-12.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:4cf7fed4b4580601c4345ceb5d4cbf5a980d030fd5ad07c4d2ec589f95f09905", size = 7007477, upload-time = "2025-10-15T18:22:46.838Z" }, + { url = "https://files.pythonhosted.org/packages/77/f0/72ea067f4b5ae5ead653053212af05ce3705807906ba3f3e8f58ddf617e6/pillow-12.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:9f0b04c6b8584c2c193babcccc908b38ed29524b29dd464bc8801bf10d746a3a", size = 2435918, upload-time = "2025-10-15T18:22:48.399Z" }, + { url = "https://files.pythonhosted.org/packages/f5/5e/9046b423735c21f0487ea6cb5b10f89ea8f8dfbe32576fe052b5ba9d4e5b/pillow-12.0.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:7fa22993bac7b77b78cae22bad1e2a987ddf0d9015c63358032f84a53f23cdc3", size = 5251406, upload-time = "2025-10-15T18:22:49.905Z" }, + { url = "https://files.pythonhosted.org/packages/12/66/982ceebcdb13c97270ef7a56c3969635b4ee7cd45227fa707c94719229c5/pillow-12.0.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f135c702ac42262573fe9714dfe99c944b4ba307af5eb507abef1667e2cbbced", size = 4653218, upload-time = "2025-10-15T18:22:51.587Z" }, + { url = "https://files.pythonhosted.org/packages/16/b3/81e625524688c31859450119bf12674619429cab3119eec0e30a7a1029cb/pillow-12.0.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c85de1136429c524e55cfa4e033b4a7940ac5c8ee4d9401cc2d1bf48154bbc7b", size = 6266564, upload-time = "2025-10-15T18:22:53.215Z" }, + { url = "https://files.pythonhosted.org/packages/98/59/dfb38f2a41240d2408096e1a76c671d0a105a4a8471b1871c6902719450c/pillow-12.0.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:38df9b4bfd3db902c9c2bd369bcacaf9d935b2fff73709429d95cc41554f7b3d", size = 8069260, upload-time = "2025-10-15T18:22:54.933Z" }, + { url = "https://files.pythonhosted.org/packages/dc/3d/378dbea5cd1874b94c312425ca77b0f47776c78e0df2df751b820c8c1d6c/pillow-12.0.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7d87ef5795da03d742bf49439f9ca4d027cde49c82c5371ba52464aee266699a", size = 6379248, upload-time = "2025-10-15T18:22:56.605Z" }, + { url = "https://files.pythonhosted.org/packages/84/b0/d525ef47d71590f1621510327acec75ae58c721dc071b17d8d652ca494d8/pillow-12.0.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:aff9e4d82d082ff9513bdd6acd4f5bd359f5b2c870907d2b0a9c5e10d40c88fe", size = 7066043, upload-time = "2025-10-15T18:22:58.53Z" }, + { url = "https://files.pythonhosted.org/packages/61/2c/aced60e9cf9d0cde341d54bf7932c9ffc33ddb4a1595798b3a5150c7ec4e/pillow-12.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:8d8ca2b210ada074d57fcee40c30446c9562e542fc46aedc19baf758a93532ee", size = 6490915, upload-time = "2025-10-15T18:23:00.582Z" }, + { url = "https://files.pythonhosted.org/packages/ef/26/69dcb9b91f4e59f8f34b2332a4a0a951b44f547c4ed39d3e4dcfcff48f89/pillow-12.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:99a7f72fb6249302aa62245680754862a44179b545ded638cf1fef59befb57ef", size = 7157998, upload-time = "2025-10-15T18:23:02.627Z" }, + { url = "https://files.pythonhosted.org/packages/61/2b/726235842220ca95fa441ddf55dd2382b52ab5b8d9c0596fe6b3f23dafe8/pillow-12.0.0-cp313-cp313t-win32.whl", hash = "sha256:4078242472387600b2ce8d93ade8899c12bf33fa89e55ec89fe126e9d6d5d9e9", size = 6306201, upload-time = "2025-10-15T18:23:04.709Z" }, + { url = "https://files.pythonhosted.org/packages/c0/3d/2afaf4e840b2df71344ababf2f8edd75a705ce500e5dc1e7227808312ae1/pillow-12.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:2c54c1a783d6d60595d3514f0efe9b37c8808746a66920315bfd34a938d7994b", size = 7013165, upload-time = "2025-10-15T18:23:06.46Z" }, + { url = "https://files.pythonhosted.org/packages/6f/75/3fa09aa5cf6ed04bee3fa575798ddf1ce0bace8edb47249c798077a81f7f/pillow-12.0.0-cp313-cp313t-win_arm64.whl", hash = "sha256:26d9f7d2b604cd23aba3e9faf795787456ac25634d82cd060556998e39c6fa47", size = 2437834, upload-time = "2025-10-15T18:23:08.194Z" }, + { url = "https://files.pythonhosted.org/packages/1d/b3/582327e6c9f86d037b63beebe981425d6811104cb443e8193824ef1a2f27/pillow-12.0.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:b22bd8c974942477156be55a768f7aa37c46904c175be4e158b6a86e3a6b7ca8", size = 5215068, upload-time = "2025-10-15T18:23:59.594Z" }, + { url = "https://files.pythonhosted.org/packages/fd/d6/67748211d119f3b6540baf90f92fae73ae51d5217b171b0e8b5f7e5d558f/pillow-12.0.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:805ebf596939e48dbb2e4922a1d3852cfc25c38160751ce02da93058b48d252a", size = 4614994, upload-time = "2025-10-15T18:24:01.669Z" }, + { url = "https://files.pythonhosted.org/packages/2d/e1/f8281e5d844c41872b273b9f2c34a4bf64ca08905668c8ae730eedc7c9fa/pillow-12.0.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cae81479f77420d217def5f54b5b9d279804d17e982e0f2fa19b1d1e14ab5197", size = 5246639, upload-time = "2025-10-15T18:24:03.403Z" }, + { url = "https://files.pythonhosted.org/packages/94/5a/0d8ab8ffe8a102ff5df60d0de5af309015163bf710c7bb3e8311dd3b3ad0/pillow-12.0.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:aeaefa96c768fc66818730b952a862235d68825c178f1b3ffd4efd7ad2edcb7c", size = 6986839, upload-time = "2025-10-15T18:24:05.344Z" }, + { url = "https://files.pythonhosted.org/packages/20/2e/3434380e8110b76cd9eb00a363c484b050f949b4bbe84ba770bb8508a02c/pillow-12.0.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:09f2d0abef9e4e2f349305a4f8cc784a8a6c2f58a8c4892eea13b10a943bd26e", size = 5313505, upload-time = "2025-10-15T18:24:07.137Z" }, + { url = "https://files.pythonhosted.org/packages/57/ca/5a9d38900d9d74785141d6580950fe705de68af735ff6e727cb911b64740/pillow-12.0.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bdee52571a343d721fb2eb3b090a82d959ff37fc631e3f70422e0c2e029f3e76", size = 5963654, upload-time = "2025-10-15T18:24:09.579Z" }, + { url = "https://files.pythonhosted.org/packages/95/7e/f896623c3c635a90537ac093c6a618ebe1a90d87206e42309cb5d98a1b9e/pillow-12.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:b290fd8aa38422444d4b50d579de197557f182ef1068b75f5aa8558638b8d0a5", size = 6997850, upload-time = "2025-10-15T18:24:11.495Z" }, +] + +[[package]] +name = "platformdirs" +version = "4.3.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/8b/3c73abc9c759ecd3f1f7ceff6685840859e8070c4d947c93fae71f6a0bf2/platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", size = 21362, upload-time = "2025-05-07T22:47:42.121Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567, upload-time = "2025-05-07T22:47:40.376Z" }, +] + +[[package]] +name = "playwright" +version = "1.56.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "greenlet" }, + { name = "pyee" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/31/a5362cee43f844509f1f10d8a27c9cc0e2f7bdce5353d304d93b2151c1b1/playwright-1.56.0-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:b33eb89c516cbc6723f2e3523bada4a4eb0984a9c411325c02d7016a5d625e9c", size = 40611424, upload-time = "2025-11-11T18:39:10.175Z" }, + { url = "https://files.pythonhosted.org/packages/ef/95/347eef596d8778fb53590dc326c344d427fa19ba3d42b646fce2a4572eb3/playwright-1.56.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:b228b3395212b9472a4ee5f1afe40d376eef9568eb039fcb3e563de8f4f4657b", size = 39400228, upload-time = "2025-11-11T18:39:13.915Z" }, + { url = "https://files.pythonhosted.org/packages/b9/54/6ad97b08b2ca1dfcb4fbde4536c4f45c0d9d8b1857a2d20e7bbfdf43bf15/playwright-1.56.0-py3-none-macosx_11_0_universal2.whl", hash = "sha256:0ef7e6fd653267798a8a968ff7aa2dcac14398b7dd7440ef57524e01e0fbbd65", size = 40611424, upload-time = "2025-11-11T18:39:17.093Z" }, + { url = "https://files.pythonhosted.org/packages/e4/76/6d409e37e82cdd5dda3df1ab958130ae32b46e42458bd4fc93d7eb8749cb/playwright-1.56.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:404be089b49d94bc4c1fe0dfb07664bda5ffe87789034a03bffb884489bdfb5c", size = 46263122, upload-time = "2025-11-11T18:39:20.619Z" }, + { url = "https://files.pythonhosted.org/packages/4f/84/fb292cc5d45f3252e255ea39066cd1d2385c61c6c1596548dfbf59c88605/playwright-1.56.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64cda7cf4e51c0d35dab55190841bfcdfb5871685ec22cb722cd0ad2df183e34", size = 46110645, upload-time = "2025-11-11T18:39:24.005Z" }, + { url = "https://files.pythonhosted.org/packages/61/bd/8c02c3388ae14edc374ac9f22cbe4e14826c6a51b2d8eaf86e89fabee264/playwright-1.56.0-py3-none-win32.whl", hash = "sha256:d87b79bcb082092d916a332c27ec9732e0418c319755d235d93cc6be13bdd721", size = 35639837, upload-time = "2025-11-11T18:39:27.174Z" }, + { url = "https://files.pythonhosted.org/packages/64/27/f13b538fbc6b7a00152f4379054a49f6abc0bf55ac86f677ae54bc49fb82/playwright-1.56.0-py3-none-win_amd64.whl", hash = "sha256:3c7fc49bb9e673489bf2622855f9486d41c5101bbed964638552b864c4591f94", size = 35639843, upload-time = "2025-11-11T18:39:30.851Z" }, + { url = "https://files.pythonhosted.org/packages/f2/c7/3ee8b556107995846576b4fe42a08ed49b8677619421f2afacf6ee421138/playwright-1.56.0-py3-none-win_arm64.whl", hash = "sha256:2745490ae8dd58d27e5ea4d9aa28402e8e2991eb84fb4b2fd5fbde2106716f6f", size = 31248959, upload-time = "2025-11-11T18:39:33.998Z" }, +] + +[[package]] +name = "primp" +version = "0.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/56/0b/a87556189da4de1fc6360ca1aa05e8335509633f836cdd06dd17f0743300/primp-0.15.0.tar.gz", hash = "sha256:1af8ea4b15f57571ff7fc5e282a82c5eb69bc695e19b8ddeeda324397965b30a", size = 113022, upload-time = "2025-04-17T11:41:05.315Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f5/5a/146ac964b99ea7657ad67eb66f770be6577dfe9200cb28f9a95baffd6c3f/primp-0.15.0-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:1b281f4ca41a0c6612d4c6e68b96e28acfe786d226a427cd944baa8d7acd644f", size = 3178914, upload-time = "2025-04-17T11:40:59.558Z" }, + { url = "https://files.pythonhosted.org/packages/bc/8a/cc2321e32db3ce64d6e32950d5bcbea01861db97bfb20b5394affc45b387/primp-0.15.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:489cbab55cd793ceb8f90bb7423c6ea64ebb53208ffcf7a044138e3c66d77299", size = 2955079, upload-time = "2025-04-17T11:40:57.398Z" }, + { url = "https://files.pythonhosted.org/packages/c3/7b/cbd5d999a07ff2a21465975d4eb477ae6f69765e8fe8c9087dab250180d8/primp-0.15.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c18b45c23f94016215f62d2334552224236217aaeb716871ce0e4dcfa08eb161", size = 3281018, upload-time = "2025-04-17T11:40:55.308Z" }, + { url = "https://files.pythonhosted.org/packages/1b/6e/a6221c612e61303aec2bcac3f0a02e8b67aee8c0db7bdc174aeb8010f975/primp-0.15.0-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:e985a9cba2e3f96a323722e5440aa9eccaac3178e74b884778e926b5249df080", size = 3255229, upload-time = "2025-04-17T11:40:47.811Z" }, + { url = "https://files.pythonhosted.org/packages/3b/54/bfeef5aca613dc660a69d0760a26c6b8747d8fdb5a7f20cb2cee53c9862f/primp-0.15.0-cp38-abi3-manylinux_2_34_armv7l.whl", hash = "sha256:6b84a6ffa083e34668ff0037221d399c24d939b5629cd38223af860de9e17a83", size = 3014522, upload-time = "2025-04-17T11:40:50.191Z" }, + { url = "https://files.pythonhosted.org/packages/ac/96/84078e09f16a1dad208f2fe0f8a81be2cf36e024675b0f9eec0c2f6e2182/primp-0.15.0-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:592f6079646bdf5abbbfc3b0a28dac8de943f8907a250ce09398cda5eaebd260", size = 3418567, upload-time = "2025-04-17T11:41:01.595Z" }, + { url = "https://files.pythonhosted.org/packages/6c/80/8a7a9587d3eb85be3d0b64319f2f690c90eb7953e3f73a9ddd9e46c8dc42/primp-0.15.0-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5a728e5a05f37db6189eb413d22c78bd143fa59dd6a8a26dacd43332b3971fe8", size = 3606279, upload-time = "2025-04-17T11:41:03.61Z" }, + { url = "https://files.pythonhosted.org/packages/0c/dd/f0183ed0145e58cf9d286c1b2c14f63ccee987a4ff79ac85acc31b5d86bd/primp-0.15.0-cp38-abi3-win_amd64.whl", hash = "sha256:aeb6bd20b06dfc92cfe4436939c18de88a58c640752cf7f30d9e4ae893cdec32", size = 3149967, upload-time = "2025-04-17T11:41:07.067Z" }, +] + +[[package]] +name = "prometheus-client" +version = "0.22.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/cf/40dde0a2be27cc1eb41e333d1a674a74ce8b8b0457269cc640fd42b07cf7/prometheus_client-0.22.1.tar.gz", hash = "sha256:190f1331e783cf21eb60bca559354e0a4d4378facecf78f5428c39b675d20d28", size = 69746, upload-time = "2025-06-02T14:29:01.152Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/ae/ec06af4fe3ee72d16973474f122541746196aaa16cea6f66d18b963c6177/prometheus_client-0.22.1-py3-none-any.whl", hash = "sha256:cca895342e308174341b2cbf99a56bef291fbc0ef7b9e5412a0f26d653ba7094", size = 58694, upload-time = "2025-06-02T14:29:00.068Z" }, +] + +[[package]] +name = "prompt-toolkit" +version = "3.0.51" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wcwidth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bb/6e/9d084c929dfe9e3bfe0c6a47e31f78a25c54627d64a66e884a8bf5474f1c/prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed", size = 428940, upload-time = "2025-04-15T09:18:47.731Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07", size = 387810, upload-time = "2025-04-15T09:18:44.753Z" }, +] + +[[package]] +name = "propcache" +version = "0.3.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a6/16/43264e4a779dd8588c21a70f0709665ee8f611211bdd2c87d952cfa7c776/propcache-0.3.2.tar.gz", hash = "sha256:20d7d62e4e7ef05f221e0db2856b979540686342e7dd9973b815599c7057e168", size = 44139, upload-time = "2025-06-09T22:56:06.081Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/80/8d/e8b436717ab9c2cfc23b116d2c297305aa4cd8339172a456d61ebf5669b8/propcache-0.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0b8d2f607bd8f80ddc04088bc2a037fdd17884a6fcadc47a96e334d72f3717be", size = 74207, upload-time = "2025-06-09T22:54:05.399Z" }, + { url = "https://files.pythonhosted.org/packages/d6/29/1e34000e9766d112171764b9fa3226fa0153ab565d0c242c70e9945318a7/propcache-0.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:06766d8f34733416e2e34f46fea488ad5d60726bb9481d3cddf89a6fa2d9603f", size = 43648, upload-time = "2025-06-09T22:54:08.023Z" }, + { url = "https://files.pythonhosted.org/packages/46/92/1ad5af0df781e76988897da39b5f086c2bf0f028b7f9bd1f409bb05b6874/propcache-0.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a2dc1f4a1df4fecf4e6f68013575ff4af84ef6f478fe5344317a65d38a8e6dc9", size = 43496, upload-time = "2025-06-09T22:54:09.228Z" }, + { url = "https://files.pythonhosted.org/packages/b3/ce/e96392460f9fb68461fabab3e095cb00c8ddf901205be4eae5ce246e5b7e/propcache-0.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be29c4f4810c5789cf10ddf6af80b041c724e629fa51e308a7a0fb19ed1ef7bf", size = 217288, upload-time = "2025-06-09T22:54:10.466Z" }, + { url = "https://files.pythonhosted.org/packages/c5/2a/866726ea345299f7ceefc861a5e782b045545ae6940851930a6adaf1fca6/propcache-0.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59d61f6970ecbd8ff2e9360304d5c8876a6abd4530cb752c06586849ac8a9dc9", size = 227456, upload-time = "2025-06-09T22:54:11.828Z" }, + { url = "https://files.pythonhosted.org/packages/de/03/07d992ccb6d930398689187e1b3c718339a1c06b8b145a8d9650e4726166/propcache-0.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:62180e0b8dbb6b004baec00a7983e4cc52f5ada9cd11f48c3528d8cfa7b96a66", size = 225429, upload-time = "2025-06-09T22:54:13.823Z" }, + { url = "https://files.pythonhosted.org/packages/5d/e6/116ba39448753b1330f48ab8ba927dcd6cf0baea8a0ccbc512dfb49ba670/propcache-0.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c144ca294a204c470f18cf4c9d78887810d04a3e2fbb30eea903575a779159df", size = 213472, upload-time = "2025-06-09T22:54:15.232Z" }, + { url = "https://files.pythonhosted.org/packages/a6/85/f01f5d97e54e428885a5497ccf7f54404cbb4f906688a1690cd51bf597dc/propcache-0.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5c2a784234c28854878d68978265617aa6dc0780e53d44b4d67f3651a17a9a2", size = 204480, upload-time = "2025-06-09T22:54:17.104Z" }, + { url = "https://files.pythonhosted.org/packages/e3/79/7bf5ab9033b8b8194cc3f7cf1aaa0e9c3256320726f64a3e1f113a812dce/propcache-0.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5745bc7acdafa978ca1642891b82c19238eadc78ba2aaa293c6863b304e552d7", size = 214530, upload-time = "2025-06-09T22:54:18.512Z" }, + { url = "https://files.pythonhosted.org/packages/31/0b/bd3e0c00509b609317df4a18e6b05a450ef2d9a963e1d8bc9c9415d86f30/propcache-0.3.2-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:c0075bf773d66fa8c9d41f66cc132ecc75e5bb9dd7cce3cfd14adc5ca184cb95", size = 205230, upload-time = "2025-06-09T22:54:19.947Z" }, + { url = "https://files.pythonhosted.org/packages/7a/23/fae0ff9b54b0de4e819bbe559508da132d5683c32d84d0dc2ccce3563ed4/propcache-0.3.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5f57aa0847730daceff0497f417c9de353c575d8da3579162cc74ac294c5369e", size = 206754, upload-time = "2025-06-09T22:54:21.716Z" }, + { url = "https://files.pythonhosted.org/packages/b7/7f/ad6a3c22630aaa5f618b4dc3c3598974a72abb4c18e45a50b3cdd091eb2f/propcache-0.3.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:eef914c014bf72d18efb55619447e0aecd5fb7c2e3fa7441e2e5d6099bddff7e", size = 218430, upload-time = "2025-06-09T22:54:23.17Z" }, + { url = "https://files.pythonhosted.org/packages/5b/2c/ba4f1c0e8a4b4c75910742f0d333759d441f65a1c7f34683b4a74c0ee015/propcache-0.3.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2a4092e8549031e82facf3decdbc0883755d5bbcc62d3aea9d9e185549936dcf", size = 223884, upload-time = "2025-06-09T22:54:25.539Z" }, + { url = "https://files.pythonhosted.org/packages/88/e4/ebe30fc399e98572019eee82ad0caf512401661985cbd3da5e3140ffa1b0/propcache-0.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:85871b050f174bc0bfb437efbdb68aaf860611953ed12418e4361bc9c392749e", size = 211480, upload-time = "2025-06-09T22:54:26.892Z" }, + { url = "https://files.pythonhosted.org/packages/96/0a/7d5260b914e01d1d0906f7f38af101f8d8ed0dc47426219eeaf05e8ea7c2/propcache-0.3.2-cp311-cp311-win32.whl", hash = "sha256:36c8d9b673ec57900c3554264e630d45980fd302458e4ac801802a7fd2ef7897", size = 37757, upload-time = "2025-06-09T22:54:28.241Z" }, + { url = "https://files.pythonhosted.org/packages/e1/2d/89fe4489a884bc0da0c3278c552bd4ffe06a1ace559db5ef02ef24ab446b/propcache-0.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53af8cb6a781b02d2ea079b5b853ba9430fcbe18a8e3ce647d5982a3ff69f39", size = 41500, upload-time = "2025-06-09T22:54:29.4Z" }, + { url = "https://files.pythonhosted.org/packages/a8/42/9ca01b0a6f48e81615dca4765a8f1dd2c057e0540f6116a27dc5ee01dfb6/propcache-0.3.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:8de106b6c84506b31c27168582cd3cb3000a6412c16df14a8628e5871ff83c10", size = 73674, upload-time = "2025-06-09T22:54:30.551Z" }, + { url = "https://files.pythonhosted.org/packages/af/6e/21293133beb550f9c901bbece755d582bfaf2176bee4774000bd4dd41884/propcache-0.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:28710b0d3975117239c76600ea351934ac7b5ff56e60953474342608dbbb6154", size = 43570, upload-time = "2025-06-09T22:54:32.296Z" }, + { url = "https://files.pythonhosted.org/packages/0c/c8/0393a0a3a2b8760eb3bde3c147f62b20044f0ddac81e9d6ed7318ec0d852/propcache-0.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce26862344bdf836650ed2487c3d724b00fbfec4233a1013f597b78c1cb73615", size = 43094, upload-time = "2025-06-09T22:54:33.929Z" }, + { url = "https://files.pythonhosted.org/packages/37/2c/489afe311a690399d04a3e03b069225670c1d489eb7b044a566511c1c498/propcache-0.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bca54bd347a253af2cf4544bbec232ab982f4868de0dd684246b67a51bc6b1db", size = 226958, upload-time = "2025-06-09T22:54:35.186Z" }, + { url = "https://files.pythonhosted.org/packages/9d/ca/63b520d2f3d418c968bf596839ae26cf7f87bead026b6192d4da6a08c467/propcache-0.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:55780d5e9a2ddc59711d727226bb1ba83a22dd32f64ee15594b9392b1f544eb1", size = 234894, upload-time = "2025-06-09T22:54:36.708Z" }, + { url = "https://files.pythonhosted.org/packages/11/60/1d0ed6fff455a028d678df30cc28dcee7af77fa2b0e6962ce1df95c9a2a9/propcache-0.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:035e631be25d6975ed87ab23153db6a73426a48db688070d925aa27e996fe93c", size = 233672, upload-time = "2025-06-09T22:54:38.062Z" }, + { url = "https://files.pythonhosted.org/packages/37/7c/54fd5301ef38505ab235d98827207176a5c9b2aa61939b10a460ca53e123/propcache-0.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee6f22b6eaa39297c751d0e80c0d3a454f112f5c6481214fcf4c092074cecd67", size = 224395, upload-time = "2025-06-09T22:54:39.634Z" }, + { url = "https://files.pythonhosted.org/packages/ee/1a/89a40e0846f5de05fdc6779883bf46ba980e6df4d2ff8fb02643de126592/propcache-0.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ca3aee1aa955438c4dba34fc20a9f390e4c79967257d830f137bd5a8a32ed3b", size = 212510, upload-time = "2025-06-09T22:54:41.565Z" }, + { url = "https://files.pythonhosted.org/packages/5e/33/ca98368586c9566a6b8d5ef66e30484f8da84c0aac3f2d9aec6d31a11bd5/propcache-0.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7a4f30862869fa2b68380d677cc1c5fcf1e0f2b9ea0cf665812895c75d0ca3b8", size = 222949, upload-time = "2025-06-09T22:54:43.038Z" }, + { url = "https://files.pythonhosted.org/packages/ba/11/ace870d0aafe443b33b2f0b7efdb872b7c3abd505bfb4890716ad7865e9d/propcache-0.3.2-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:b77ec3c257d7816d9f3700013639db7491a434644c906a2578a11daf13176251", size = 217258, upload-time = "2025-06-09T22:54:44.376Z" }, + { url = "https://files.pythonhosted.org/packages/5b/d2/86fd6f7adffcfc74b42c10a6b7db721d1d9ca1055c45d39a1a8f2a740a21/propcache-0.3.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:cab90ac9d3f14b2d5050928483d3d3b8fb6b4018893fc75710e6aa361ecb2474", size = 213036, upload-time = "2025-06-09T22:54:46.243Z" }, + { url = "https://files.pythonhosted.org/packages/07/94/2d7d1e328f45ff34a0a284cf5a2847013701e24c2a53117e7c280a4316b3/propcache-0.3.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0b504d29f3c47cf6b9e936c1852246c83d450e8e063d50562115a6be6d3a2535", size = 227684, upload-time = "2025-06-09T22:54:47.63Z" }, + { url = "https://files.pythonhosted.org/packages/b7/05/37ae63a0087677e90b1d14710e532ff104d44bc1efa3b3970fff99b891dc/propcache-0.3.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:ce2ac2675a6aa41ddb2a0c9cbff53780a617ac3d43e620f8fd77ba1c84dcfc06", size = 234562, upload-time = "2025-06-09T22:54:48.982Z" }, + { url = "https://files.pythonhosted.org/packages/a4/7c/3f539fcae630408d0bd8bf3208b9a647ccad10976eda62402a80adf8fc34/propcache-0.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:62b4239611205294cc433845b914131b2a1f03500ff3c1ed093ed216b82621e1", size = 222142, upload-time = "2025-06-09T22:54:50.424Z" }, + { url = "https://files.pythonhosted.org/packages/7c/d2/34b9eac8c35f79f8a962546b3e97e9d4b990c420ee66ac8255d5d9611648/propcache-0.3.2-cp312-cp312-win32.whl", hash = "sha256:df4a81b9b53449ebc90cc4deefb052c1dd934ba85012aa912c7ea7b7e38b60c1", size = 37711, upload-time = "2025-06-09T22:54:52.072Z" }, + { url = "https://files.pythonhosted.org/packages/19/61/d582be5d226cf79071681d1b46b848d6cb03d7b70af7063e33a2787eaa03/propcache-0.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:7046e79b989d7fe457bb755844019e10f693752d169076138abf17f31380800c", size = 41479, upload-time = "2025-06-09T22:54:53.234Z" }, + { url = "https://files.pythonhosted.org/packages/dc/d1/8c747fafa558c603c4ca19d8e20b288aa0c7cda74e9402f50f31eb65267e/propcache-0.3.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ca592ed634a73ca002967458187109265e980422116c0a107cf93d81f95af945", size = 71286, upload-time = "2025-06-09T22:54:54.369Z" }, + { url = "https://files.pythonhosted.org/packages/61/99/d606cb7986b60d89c36de8a85d58764323b3a5ff07770a99d8e993b3fa73/propcache-0.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9ecb0aad4020e275652ba3975740f241bd12a61f1a784df044cf7477a02bc252", size = 42425, upload-time = "2025-06-09T22:54:55.642Z" }, + { url = "https://files.pythonhosted.org/packages/8c/96/ef98f91bbb42b79e9bb82bdd348b255eb9d65f14dbbe3b1594644c4073f7/propcache-0.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7f08f1cc28bd2eade7a8a3d2954ccc673bb02062e3e7da09bc75d843386b342f", size = 41846, upload-time = "2025-06-09T22:54:57.246Z" }, + { url = "https://files.pythonhosted.org/packages/5b/ad/3f0f9a705fb630d175146cd7b1d2bf5555c9beaed54e94132b21aac098a6/propcache-0.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1a342c834734edb4be5ecb1e9fb48cb64b1e2320fccbd8c54bf8da8f2a84c33", size = 208871, upload-time = "2025-06-09T22:54:58.975Z" }, + { url = "https://files.pythonhosted.org/packages/3a/38/2085cda93d2c8b6ec3e92af2c89489a36a5886b712a34ab25de9fbca7992/propcache-0.3.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a544caaae1ac73f1fecfae70ded3e93728831affebd017d53449e3ac052ac1e", size = 215720, upload-time = "2025-06-09T22:55:00.471Z" }, + { url = "https://files.pythonhosted.org/packages/61/c1/d72ea2dc83ac7f2c8e182786ab0fc2c7bd123a1ff9b7975bee671866fe5f/propcache-0.3.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:310d11aa44635298397db47a3ebce7db99a4cc4b9bbdfcf6c98a60c8d5261cf1", size = 215203, upload-time = "2025-06-09T22:55:01.834Z" }, + { url = "https://files.pythonhosted.org/packages/af/81/b324c44ae60c56ef12007105f1460d5c304b0626ab0cc6b07c8f2a9aa0b8/propcache-0.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c1396592321ac83157ac03a2023aa6cc4a3cc3cfdecb71090054c09e5a7cce3", size = 206365, upload-time = "2025-06-09T22:55:03.199Z" }, + { url = "https://files.pythonhosted.org/packages/09/73/88549128bb89e66d2aff242488f62869014ae092db63ccea53c1cc75a81d/propcache-0.3.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cabf5b5902272565e78197edb682017d21cf3b550ba0460ee473753f28d23c1", size = 196016, upload-time = "2025-06-09T22:55:04.518Z" }, + { url = "https://files.pythonhosted.org/packages/b9/3f/3bdd14e737d145114a5eb83cb172903afba7242f67c5877f9909a20d948d/propcache-0.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0a2f2235ac46a7aa25bdeb03a9e7060f6ecbd213b1f9101c43b3090ffb971ef6", size = 205596, upload-time = "2025-06-09T22:55:05.942Z" }, + { url = "https://files.pythonhosted.org/packages/0f/ca/2f4aa819c357d3107c3763d7ef42c03980f9ed5c48c82e01e25945d437c1/propcache-0.3.2-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:92b69e12e34869a6970fd2f3da91669899994b47c98f5d430b781c26f1d9f387", size = 200977, upload-time = "2025-06-09T22:55:07.792Z" }, + { url = "https://files.pythonhosted.org/packages/cd/4a/e65276c7477533c59085251ae88505caf6831c0e85ff8b2e31ebcbb949b1/propcache-0.3.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:54e02207c79968ebbdffc169591009f4474dde3b4679e16634d34c9363ff56b4", size = 197220, upload-time = "2025-06-09T22:55:09.173Z" }, + { url = "https://files.pythonhosted.org/packages/7c/54/fc7152e517cf5578278b242396ce4d4b36795423988ef39bb8cd5bf274c8/propcache-0.3.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4adfb44cb588001f68c5466579d3f1157ca07f7504fc91ec87862e2b8e556b88", size = 210642, upload-time = "2025-06-09T22:55:10.62Z" }, + { url = "https://files.pythonhosted.org/packages/b9/80/abeb4a896d2767bf5f1ea7b92eb7be6a5330645bd7fb844049c0e4045d9d/propcache-0.3.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:fd3e6019dc1261cd0291ee8919dd91fbab7b169bb76aeef6c716833a3f65d206", size = 212789, upload-time = "2025-06-09T22:55:12.029Z" }, + { url = "https://files.pythonhosted.org/packages/b3/db/ea12a49aa7b2b6d68a5da8293dcf50068d48d088100ac016ad92a6a780e6/propcache-0.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4c181cad81158d71c41a2bce88edce078458e2dd5ffee7eddd6b05da85079f43", size = 205880, upload-time = "2025-06-09T22:55:13.45Z" }, + { url = "https://files.pythonhosted.org/packages/d1/e5/9076a0bbbfb65d1198007059c65639dfd56266cf8e477a9707e4b1999ff4/propcache-0.3.2-cp313-cp313-win32.whl", hash = "sha256:8a08154613f2249519e549de2330cf8e2071c2887309a7b07fb56098f5170a02", size = 37220, upload-time = "2025-06-09T22:55:15.284Z" }, + { url = "https://files.pythonhosted.org/packages/d3/f5/b369e026b09a26cd77aa88d8fffd69141d2ae00a2abaaf5380d2603f4b7f/propcache-0.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:e41671f1594fc4ab0a6dec1351864713cb3a279910ae8b58f884a88a0a632c05", size = 40678, upload-time = "2025-06-09T22:55:16.445Z" }, + { url = "https://files.pythonhosted.org/packages/a4/3a/6ece377b55544941a08d03581c7bc400a3c8cd3c2865900a68d5de79e21f/propcache-0.3.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:9a3cf035bbaf035f109987d9d55dc90e4b0e36e04bbbb95af3055ef17194057b", size = 76560, upload-time = "2025-06-09T22:55:17.598Z" }, + { url = "https://files.pythonhosted.org/packages/0c/da/64a2bb16418740fa634b0e9c3d29edff1db07f56d3546ca2d86ddf0305e1/propcache-0.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:156c03d07dc1323d8dacaa221fbe028c5c70d16709cdd63502778e6c3ccca1b0", size = 44676, upload-time = "2025-06-09T22:55:18.922Z" }, + { url = "https://files.pythonhosted.org/packages/36/7b/f025e06ea51cb72c52fb87e9b395cced02786610b60a3ed51da8af017170/propcache-0.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:74413c0ba02ba86f55cf60d18daab219f7e531620c15f1e23d95563f505efe7e", size = 44701, upload-time = "2025-06-09T22:55:20.106Z" }, + { url = "https://files.pythonhosted.org/packages/a4/00/faa1b1b7c3b74fc277f8642f32a4c72ba1d7b2de36d7cdfb676db7f4303e/propcache-0.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f066b437bb3fa39c58ff97ab2ca351db465157d68ed0440abecb21715eb24b28", size = 276934, upload-time = "2025-06-09T22:55:21.5Z" }, + { url = "https://files.pythonhosted.org/packages/74/ab/935beb6f1756e0476a4d5938ff44bf0d13a055fed880caf93859b4f1baf4/propcache-0.3.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f1304b085c83067914721e7e9d9917d41ad87696bf70f0bc7dee450e9c71ad0a", size = 278316, upload-time = "2025-06-09T22:55:22.918Z" }, + { url = "https://files.pythonhosted.org/packages/f8/9d/994a5c1ce4389610838d1caec74bdf0e98b306c70314d46dbe4fcf21a3e2/propcache-0.3.2-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ab50cef01b372763a13333b4e54021bdcb291fc9a8e2ccb9c2df98be51bcde6c", size = 282619, upload-time = "2025-06-09T22:55:24.651Z" }, + { url = "https://files.pythonhosted.org/packages/2b/00/a10afce3d1ed0287cef2e09506d3be9822513f2c1e96457ee369adb9a6cd/propcache-0.3.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fad3b2a085ec259ad2c2842666b2a0a49dea8463579c606426128925af1ed725", size = 265896, upload-time = "2025-06-09T22:55:26.049Z" }, + { url = "https://files.pythonhosted.org/packages/2e/a8/2aa6716ffa566ca57c749edb909ad27884680887d68517e4be41b02299f3/propcache-0.3.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:261fa020c1c14deafd54c76b014956e2f86991af198c51139faf41c4d5e83892", size = 252111, upload-time = "2025-06-09T22:55:27.381Z" }, + { url = "https://files.pythonhosted.org/packages/36/4f/345ca9183b85ac29c8694b0941f7484bf419c7f0fea2d1e386b4f7893eed/propcache-0.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:46d7f8aa79c927e5f987ee3a80205c987717d3659f035c85cf0c3680526bdb44", size = 268334, upload-time = "2025-06-09T22:55:28.747Z" }, + { url = "https://files.pythonhosted.org/packages/3e/ca/fcd54f78b59e3f97b3b9715501e3147f5340167733d27db423aa321e7148/propcache-0.3.2-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:6d8f3f0eebf73e3c0ff0e7853f68be638b4043c65a70517bb575eff54edd8dbe", size = 255026, upload-time = "2025-06-09T22:55:30.184Z" }, + { url = "https://files.pythonhosted.org/packages/8b/95/8e6a6bbbd78ac89c30c225210a5c687790e532ba4088afb8c0445b77ef37/propcache-0.3.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:03c89c1b14a5452cf15403e291c0ccd7751d5b9736ecb2c5bab977ad6c5bcd81", size = 250724, upload-time = "2025-06-09T22:55:31.646Z" }, + { url = "https://files.pythonhosted.org/packages/ee/b0/0dd03616142baba28e8b2d14ce5df6631b4673850a3d4f9c0f9dd714a404/propcache-0.3.2-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:0cc17efde71e12bbaad086d679ce575268d70bc123a5a71ea7ad76f70ba30bba", size = 268868, upload-time = "2025-06-09T22:55:33.209Z" }, + { url = "https://files.pythonhosted.org/packages/c5/98/2c12407a7e4fbacd94ddd32f3b1e3d5231e77c30ef7162b12a60e2dd5ce3/propcache-0.3.2-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:acdf05d00696bc0447e278bb53cb04ca72354e562cf88ea6f9107df8e7fd9770", size = 271322, upload-time = "2025-06-09T22:55:35.065Z" }, + { url = "https://files.pythonhosted.org/packages/35/91/9cb56efbb428b006bb85db28591e40b7736847b8331d43fe335acf95f6c8/propcache-0.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4445542398bd0b5d32df908031cb1b30d43ac848e20470a878b770ec2dcc6330", size = 265778, upload-time = "2025-06-09T22:55:36.45Z" }, + { url = "https://files.pythonhosted.org/packages/9a/4c/b0fe775a2bdd01e176b14b574be679d84fc83958335790f7c9a686c1f468/propcache-0.3.2-cp313-cp313t-win32.whl", hash = "sha256:f86e5d7cd03afb3a1db8e9f9f6eff15794e79e791350ac48a8c924e6f439f394", size = 41175, upload-time = "2025-06-09T22:55:38.436Z" }, + { url = "https://files.pythonhosted.org/packages/a4/ff/47f08595e3d9b5e149c150f88d9714574f1a7cbd89fe2817158a952674bf/propcache-0.3.2-cp313-cp313t-win_amd64.whl", hash = "sha256:9704bedf6e7cbe3c65eca4379a9b53ee6a83749f047808cbb5044d40d7d72198", size = 44857, upload-time = "2025-06-09T22:55:39.687Z" }, + { url = "https://files.pythonhosted.org/packages/cc/35/cc0aaecf278bb4575b8555f2b137de5ab821595ddae9da9d3cd1da4072c7/propcache-0.3.2-py3-none-any.whl", hash = "sha256:98f1ec44fb675f5052cccc8e609c46ed23a35a1cfd18545ad4e29002d858a43f", size = 12663, upload-time = "2025-06-09T22:56:04.484Z" }, +] + +[[package]] +name = "proto-plus" +version = "1.26.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f4/ac/87285f15f7cce6d4a008f33f1757fb5a13611ea8914eb58c3d0d26243468/proto_plus-1.26.1.tar.gz", hash = "sha256:21a515a4c4c0088a773899e23c7bbade3d18f9c66c73edd4c7ee3816bc96a012", size = 56142, upload-time = "2025-03-10T15:54:38.843Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/6d/280c4c2ce28b1593a19ad5239c8b826871fc6ec275c21afc8e1820108039/proto_plus-1.26.1-py3-none-any.whl", hash = "sha256:13285478c2dcf2abb829db158e1047e2f1e8d63a077d94263c2b88b043c75a66", size = 50163, upload-time = "2025-03-10T15:54:37.335Z" }, +] + +[[package]] +name = "protobuf" +version = "6.33.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/03/a1440979a3f74f16cab3b75b0da1a1a7f922d56a8ddea96092391998edc0/protobuf-6.33.1.tar.gz", hash = "sha256:97f65757e8d09870de6fd973aeddb92f85435607235d20b2dfed93405d00c85b", size = 443432, upload-time = "2025-11-13T16:44:18.895Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/06/f1/446a9bbd2c60772ca36556bac8bfde40eceb28d9cc7838755bc41e001d8f/protobuf-6.33.1-cp310-abi3-win32.whl", hash = "sha256:f8d3fdbc966aaab1d05046d0240dd94d40f2a8c62856d41eaa141ff64a79de6b", size = 425593, upload-time = "2025-11-13T16:44:06.275Z" }, + { url = "https://files.pythonhosted.org/packages/a6/79/8780a378c650e3df849b73de8b13cf5412f521ca2ff9b78a45c247029440/protobuf-6.33.1-cp310-abi3-win_amd64.whl", hash = "sha256:923aa6d27a92bf44394f6abf7ea0500f38769d4b07f4be41cb52bd8b1123b9ed", size = 436883, upload-time = "2025-11-13T16:44:09.222Z" }, + { url = "https://files.pythonhosted.org/packages/cd/93/26213ff72b103ae55bb0d73e7fb91ea570ef407c3ab4fd2f1f27cac16044/protobuf-6.33.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:fe34575f2bdde76ac429ec7b570235bf0c788883e70aee90068e9981806f2490", size = 427522, upload-time = "2025-11-13T16:44:10.475Z" }, + { url = "https://files.pythonhosted.org/packages/c2/32/df4a35247923393aa6b887c3b3244a8c941c32a25681775f96e2b418f90e/protobuf-6.33.1-cp39-abi3-manylinux2014_aarch64.whl", hash = "sha256:f8adba2e44cde2d7618996b3fc02341f03f5bc3f2748be72dc7b063319276178", size = 324445, upload-time = "2025-11-13T16:44:11.869Z" }, + { url = "https://files.pythonhosted.org/packages/8e/d0/d796e419e2ec93d2f3fa44888861c3f88f722cde02b7c3488fcc6a166820/protobuf-6.33.1-cp39-abi3-manylinux2014_s390x.whl", hash = "sha256:0f4cf01222c0d959c2b399142deb526de420be8236f22c71356e2a544e153c53", size = 339161, upload-time = "2025-11-13T16:44:12.778Z" }, + { url = "https://files.pythonhosted.org/packages/1d/2a/3c5f05a4af06649547027d288747f68525755de692a26a7720dced3652c0/protobuf-6.33.1-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:8fd7d5e0eb08cd5b87fd3df49bc193f5cfd778701f47e11d127d0afc6c39f1d1", size = 323171, upload-time = "2025-11-13T16:44:14.035Z" }, + { url = "https://files.pythonhosted.org/packages/08/b4/46310463b4f6ceef310f8348786f3cff181cea671578e3d9743ba61a459e/protobuf-6.33.1-py3-none-any.whl", hash = "sha256:d595a9fd694fdeb061a62fbe10eb039cc1e444df81ec9bb70c7fc59ebcb1eafa", size = 170477, upload-time = "2025-11-13T16:44:17.633Z" }, +] + +[[package]] +name = "psutil" +version = "7.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2a/80/336820c1ad9286a4ded7e845b2eccfcb27851ab8ac6abece774a6ff4d3de/psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456", size = 497003, upload-time = "2025-02-13T21:54:07.946Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/e6/2d26234410f8b8abdbf891c9da62bee396583f713fb9f3325a4760875d22/psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25", size = 238051, upload-time = "2025-02-13T21:54:12.36Z" }, + { url = "https://files.pythonhosted.org/packages/04/8b/30f930733afe425e3cbfc0e1468a30a18942350c1a8816acfade80c005c4/psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da", size = 239535, upload-time = "2025-02-13T21:54:16.07Z" }, + { url = "https://files.pythonhosted.org/packages/2a/ed/d362e84620dd22876b55389248e522338ed1bf134a5edd3b8231d7207f6d/psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91", size = 275004, upload-time = "2025-02-13T21:54:18.662Z" }, + { url = "https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34", size = 277986, upload-time = "2025-02-13T21:54:21.811Z" }, + { url = "https://files.pythonhosted.org/packages/eb/a2/709e0fe2f093556c17fbafda93ac032257242cabcc7ff3369e2cb76a97aa/psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993", size = 279544, upload-time = "2025-02-13T21:54:24.68Z" }, + { url = "https://files.pythonhosted.org/packages/50/e6/eecf58810b9d12e6427369784efe814a1eec0f492084ce8eb8f4d89d6d61/psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99", size = 241053, upload-time = "2025-02-13T21:54:34.31Z" }, + { url = "https://files.pythonhosted.org/packages/50/1b/6921afe68c74868b4c9fa424dad3be35b095e16687989ebbb50ce4fceb7c/psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553", size = 244885, upload-time = "2025-02-13T21:54:37.486Z" }, +] + +[[package]] +name = "ptyprocess" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload-time = "2020-12-28T15:15:30.155Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993, upload-time = "2020-12-28T15:15:28.35Z" }, +] + +[[package]] +name = "pure-eval" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752, upload-time = "2024-07-21T12:58:21.801Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842, upload-time = "2024-07-21T12:58:20.04Z" }, +] + +[[package]] +name = "pyasn1" +version = "0.6.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/e9/01f1a64245b89f039897cb0130016d79f77d52669aae6ee7b159a6c4c018/pyasn1-0.6.1.tar.gz", hash = "sha256:6f580d2bdd84365380830acf45550f2511469f673cb4a5ae3857a3170128b034", size = 145322, upload-time = "2024-09-10T22:41:42.55Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/f1/d6a797abb14f6283c0ddff96bbdd46937f64122b8c925cab503dd37f8214/pyasn1-0.6.1-py3-none-any.whl", hash = "sha256:0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629", size = 83135, upload-time = "2024-09-11T16:00:36.122Z" }, +] + +[[package]] +name = "pyasn1-modules" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyasn1" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/e6/78ebbb10a8c8e4b61a59249394a4a594c1a7af95593dc933a349c8d00964/pyasn1_modules-0.4.2.tar.gz", hash = "sha256:677091de870a80aae844b1ca6134f54652fa2c8c5a52aa396440ac3106e941e6", size = 307892, upload-time = "2025-03-28T02:41:22.17Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/8d/d529b5d697919ba8c11ad626e835d4039be708a35b0d22de83a269a6682c/pyasn1_modules-0.4.2-py3-none-any.whl", hash = "sha256:29253a9207ce32b64c3ac6600edc75368f98473906e8fd1043bd6b5b1de2c14a", size = 181259, upload-time = "2025-03-28T02:41:19.028Z" }, +] + +[[package]] +name = "pycparser" +version = "2.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736, upload-time = "2024-03-30T13:22:22.564Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552, upload-time = "2024-03-30T13:22:20.476Z" }, +] + +[[package]] +name = "pydantic" +version = "2.11.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/00/dd/4325abf92c39ba8623b5af936ddb36ffcfe0beae70405d456ab1fb2f5b8c/pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db", size = 788350, upload-time = "2025-06-14T08:33:17.137Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/c0/ec2b1c8712ca690e5d61979dee872603e92b8a32f94cc1b72d53beab008a/pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b", size = 444782, upload-time = "2025-06-14T08:33:14.905Z" }, +] + +[[package]] +name = "pydantic-core" +version = "2.33.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195, upload-time = "2025-04-23T18:33:52.104Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/8d/71db63483d518cbbf290261a1fc2839d17ff89fce7089e08cad07ccfce67/pydantic_core-2.33.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4c5b0a576fb381edd6d27f0a85915c6daf2f8138dc5c267a57c08a62900758c7", size = 2028584, upload-time = "2025-04-23T18:31:03.106Z" }, + { url = "https://files.pythonhosted.org/packages/24/2f/3cfa7244ae292dd850989f328722d2aef313f74ffc471184dc509e1e4e5a/pydantic_core-2.33.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e799c050df38a639db758c617ec771fd8fb7a5f8eaaa4b27b101f266b216a246", size = 1855071, upload-time = "2025-04-23T18:31:04.621Z" }, + { url = "https://files.pythonhosted.org/packages/b3/d3/4ae42d33f5e3f50dd467761304be2fa0a9417fbf09735bc2cce003480f2a/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc46a01bf8d62f227d5ecee74178ffc448ff4e5197c756331f71efcc66dc980f", size = 1897823, upload-time = "2025-04-23T18:31:06.377Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f3/aa5976e8352b7695ff808599794b1fba2a9ae2ee954a3426855935799488/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a144d4f717285c6d9234a66778059f33a89096dfb9b39117663fd8413d582dcc", size = 1983792, upload-time = "2025-04-23T18:31:07.93Z" }, + { url = "https://files.pythonhosted.org/packages/d5/7a/cda9b5a23c552037717f2b2a5257e9b2bfe45e687386df9591eff7b46d28/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cf6373c21bc80b2e0dc88444f41ae60b2f070ed02095754eb5a01df12256de", size = 2136338, upload-time = "2025-04-23T18:31:09.283Z" }, + { url = "https://files.pythonhosted.org/packages/2b/9f/b8f9ec8dd1417eb9da784e91e1667d58a2a4a7b7b34cf4af765ef663a7e5/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dc625f4aa79713512d1976fe9f0bc99f706a9dee21dfd1810b4bbbf228d0e8a", size = 2730998, upload-time = "2025-04-23T18:31:11.7Z" }, + { url = "https://files.pythonhosted.org/packages/47/bc/cd720e078576bdb8255d5032c5d63ee5c0bf4b7173dd955185a1d658c456/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b21b5549499972441da4758d662aeea93f1923f953e9cbaff14b8b9565aef", size = 2003200, upload-time = "2025-04-23T18:31:13.536Z" }, + { url = "https://files.pythonhosted.org/packages/ca/22/3602b895ee2cd29d11a2b349372446ae9727c32e78a94b3d588a40fdf187/pydantic_core-2.33.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bdc25f3681f7b78572699569514036afe3c243bc3059d3942624e936ec93450e", size = 2113890, upload-time = "2025-04-23T18:31:15.011Z" }, + { url = "https://files.pythonhosted.org/packages/ff/e6/e3c5908c03cf00d629eb38393a98fccc38ee0ce8ecce32f69fc7d7b558a7/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fe5b32187cbc0c862ee201ad66c30cf218e5ed468ec8dc1cf49dec66e160cc4d", size = 2073359, upload-time = "2025-04-23T18:31:16.393Z" }, + { url = "https://files.pythonhosted.org/packages/12/e7/6a36a07c59ebefc8777d1ffdaf5ae71b06b21952582e4b07eba88a421c79/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:bc7aee6f634a6f4a95676fcb5d6559a2c2a390330098dba5e5a5f28a2e4ada30", size = 2245883, upload-time = "2025-04-23T18:31:17.892Z" }, + { url = "https://files.pythonhosted.org/packages/16/3f/59b3187aaa6cc0c1e6616e8045b284de2b6a87b027cce2ffcea073adf1d2/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:235f45e5dbcccf6bd99f9f472858849f73d11120d76ea8707115415f8e5ebebf", size = 2241074, upload-time = "2025-04-23T18:31:19.205Z" }, + { url = "https://files.pythonhosted.org/packages/e0/ed/55532bb88f674d5d8f67ab121a2a13c385df382de2a1677f30ad385f7438/pydantic_core-2.33.2-cp311-cp311-win32.whl", hash = "sha256:6368900c2d3ef09b69cb0b913f9f8263b03786e5b2a387706c5afb66800efd51", size = 1910538, upload-time = "2025-04-23T18:31:20.541Z" }, + { url = "https://files.pythonhosted.org/packages/fe/1b/25b7cccd4519c0b23c2dd636ad39d381abf113085ce4f7bec2b0dc755eb1/pydantic_core-2.33.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e063337ef9e9820c77acc768546325ebe04ee38b08703244c1309cccc4f1bab", size = 1952909, upload-time = "2025-04-23T18:31:22.371Z" }, + { url = "https://files.pythonhosted.org/packages/49/a9/d809358e49126438055884c4366a1f6227f0f84f635a9014e2deb9b9de54/pydantic_core-2.33.2-cp311-cp311-win_arm64.whl", hash = "sha256:6b99022f1d19bc32a4c2a0d544fc9a76e3be90f0b3f4af413f87d38749300e65", size = 1897786, upload-time = "2025-04-23T18:31:24.161Z" }, + { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000, upload-time = "2025-04-23T18:31:25.863Z" }, + { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996, upload-time = "2025-04-23T18:31:27.341Z" }, + { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957, upload-time = "2025-04-23T18:31:28.956Z" }, + { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199, upload-time = "2025-04-23T18:31:31.025Z" }, + { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296, upload-time = "2025-04-23T18:31:32.514Z" }, + { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109, upload-time = "2025-04-23T18:31:33.958Z" }, + { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028, upload-time = "2025-04-23T18:31:39.095Z" }, + { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044, upload-time = "2025-04-23T18:31:41.034Z" }, + { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881, upload-time = "2025-04-23T18:31:42.757Z" }, + { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034, upload-time = "2025-04-23T18:31:44.304Z" }, + { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187, upload-time = "2025-04-23T18:31:45.891Z" }, + { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628, upload-time = "2025-04-23T18:31:47.819Z" }, + { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866, upload-time = "2025-04-23T18:31:49.635Z" }, + { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894, upload-time = "2025-04-23T18:31:51.609Z" }, + { url = "https://files.pythonhosted.org/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", size = 2015688, upload-time = "2025-04-23T18:31:53.175Z" }, + { url = "https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", size = 1844808, upload-time = "2025-04-23T18:31:54.79Z" }, + { url = "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", size = 1885580, upload-time = "2025-04-23T18:31:57.393Z" }, + { url = "https://files.pythonhosted.org/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", size = 1973859, upload-time = "2025-04-23T18:31:59.065Z" }, + { url = "https://files.pythonhosted.org/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", size = 2120810, upload-time = "2025-04-23T18:32:00.78Z" }, + { url = "https://files.pythonhosted.org/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", size = 2676498, upload-time = "2025-04-23T18:32:02.418Z" }, + { url = "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", size = 2000611, upload-time = "2025-04-23T18:32:04.152Z" }, + { url = "https://files.pythonhosted.org/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", size = 2107924, upload-time = "2025-04-23T18:32:06.129Z" }, + { url = "https://files.pythonhosted.org/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", size = 2063196, upload-time = "2025-04-23T18:32:08.178Z" }, + { url = "https://files.pythonhosted.org/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", size = 2236389, upload-time = "2025-04-23T18:32:10.242Z" }, + { url = "https://files.pythonhosted.org/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", size = 2239223, upload-time = "2025-04-23T18:32:12.382Z" }, + { url = "https://files.pythonhosted.org/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", size = 1900473, upload-time = "2025-04-23T18:32:14.034Z" }, + { url = "https://files.pythonhosted.org/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", size = 1955269, upload-time = "2025-04-23T18:32:15.783Z" }, + { url = "https://files.pythonhosted.org/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", size = 1893921, upload-time = "2025-04-23T18:32:18.473Z" }, + { url = "https://files.pythonhosted.org/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", size = 1806162, upload-time = "2025-04-23T18:32:20.188Z" }, + { url = "https://files.pythonhosted.org/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", size = 1981560, upload-time = "2025-04-23T18:32:22.354Z" }, + { url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777, upload-time = "2025-04-23T18:32:25.088Z" }, + { url = "https://files.pythonhosted.org/packages/7b/27/d4ae6487d73948d6f20dddcd94be4ea43e74349b56eba82e9bdee2d7494c/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:dd14041875d09cc0f9308e37a6f8b65f5585cf2598a53aa0123df8b129d481f8", size = 2025200, upload-time = "2025-04-23T18:33:14.199Z" }, + { url = "https://files.pythonhosted.org/packages/f1/b8/b3cb95375f05d33801024079b9392a5ab45267a63400bf1866e7ce0f0de4/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d87c561733f66531dced0da6e864f44ebf89a8fba55f31407b00c2f7f9449593", size = 1859123, upload-time = "2025-04-23T18:33:16.555Z" }, + { url = "https://files.pythonhosted.org/packages/05/bc/0d0b5adeda59a261cd30a1235a445bf55c7e46ae44aea28f7bd6ed46e091/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f82865531efd18d6e07a04a17331af02cb7a651583c418df8266f17a63c6612", size = 1892852, upload-time = "2025-04-23T18:33:18.513Z" }, + { url = "https://files.pythonhosted.org/packages/3e/11/d37bdebbda2e449cb3f519f6ce950927b56d62f0b84fd9cb9e372a26a3d5/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bfb5112df54209d820d7bf9317c7a6c9025ea52e49f46b6a2060104bba37de7", size = 2067484, upload-time = "2025-04-23T18:33:20.475Z" }, + { url = "https://files.pythonhosted.org/packages/8c/55/1f95f0a05ce72ecb02a8a8a1c3be0579bbc29b1d5ab68f1378b7bebc5057/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64632ff9d614e5eecfb495796ad51b0ed98c453e447a76bcbeeb69615079fc7e", size = 2108896, upload-time = "2025-04-23T18:33:22.501Z" }, + { url = "https://files.pythonhosted.org/packages/53/89/2b2de6c81fa131f423246a9109d7b2a375e83968ad0800d6e57d0574629b/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f889f7a40498cc077332c7ab6b4608d296d852182211787d4f3ee377aaae66e8", size = 2069475, upload-time = "2025-04-23T18:33:24.528Z" }, + { url = "https://files.pythonhosted.org/packages/b8/e9/1f7efbe20d0b2b10f6718944b5d8ece9152390904f29a78e68d4e7961159/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:de4b83bb311557e439b9e186f733f6c645b9417c84e2eb8203f3f820a4b988bf", size = 2239013, upload-time = "2025-04-23T18:33:26.621Z" }, + { url = "https://files.pythonhosted.org/packages/3c/b2/5309c905a93811524a49b4e031e9851a6b00ff0fb668794472ea7746b448/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f68293f055f51b51ea42fafc74b6aad03e70e191799430b90c13d643059ebb", size = 2238715, upload-time = "2025-04-23T18:33:28.656Z" }, + { url = "https://files.pythonhosted.org/packages/32/56/8a7ca5d2cd2cda1d245d34b1c9a942920a718082ae8e54e5f3e5a58b7add/pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1", size = 2066757, upload-time = "2025-04-23T18:33:30.645Z" }, +] + +[[package]] +name = "pydantic-settings" +version = "2.10.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pydantic" }, + { name = "python-dotenv" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/68/85/1ea668bbab3c50071ca613c6ab30047fb36ab0da1b92fa8f17bbc38fd36c/pydantic_settings-2.10.1.tar.gz", hash = "sha256:06f0062169818d0f5524420a360d632d5857b83cffd4d42fe29597807a1614ee", size = 172583, upload-time = "2025-06-24T13:26:46.841Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/58/f0/427018098906416f580e3cf1366d3b1abfb408a0652e9f31600c24a1903c/pydantic_settings-2.10.1-py3-none-any.whl", hash = "sha256:a60952460b99cf661dc25c29c0ef171721f98bfcb52ef8d9ea4c943d7c8cc796", size = 45235, upload-time = "2025-06-24T13:26:45.485Z" }, +] + +[[package]] +name = "pyee" +version = "13.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/95/03/1fd98d5841cd7964a27d729ccf2199602fe05eb7a405c1462eb7277945ed/pyee-13.0.0.tar.gz", hash = "sha256:b391e3c5a434d1f5118a25615001dbc8f669cf410ab67d04c4d4e07c55481c37", size = 31250, upload-time = "2025-03-17T18:53:15.955Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/4d/b9add7c84060d4c1906abe9a7e5359f2a60f7a9a4f67268b2766673427d8/pyee-13.0.0-py3-none-any.whl", hash = "sha256:48195a3cddb3b1515ce0695ed76036b5ccc2ef3a9f963ff9f77aec0139845498", size = 15730, upload-time = "2025-03-17T18:53:14.532Z" }, +] + +[[package]] +name = "pygments" +version = "2.19.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, +] + +[[package]] +name = "pyparsing" +version = "3.2.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/a5/181488fc2b9d093e3972d2a472855aae8a03f000592dbfce716a512b3359/pyparsing-3.2.5.tar.gz", hash = "sha256:2df8d5b7b2802ef88e8d016a2eb9c7aeaa923529cd251ed0fe4608275d4105b6", size = 1099274, upload-time = "2025-09-21T04:11:06.277Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/5e/1aa9a93198c6b64513c9d7752de7422c06402de6600a8767da1524f9570b/pyparsing-3.2.5-py3-none-any.whl", hash = "sha256:e38a4f02064cf41fe6593d328d0512495ad1f3d8a91c4f73fc401b3079a59a5e", size = 113890, upload-time = "2025-09-21T04:11:04.117Z" }, +] + +[[package]] +name = "pypdf" +version = "4.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f0/65/2ed7c9e1d31d860f096061b3dd2d665f501e09faaa0409a3f0d719d2a16d/pypdf-4.3.1.tar.gz", hash = "sha256:b2f37fe9a3030aa97ca86067a56ba3f9d3565f9a791b305c7355d8392c30d91b", size = 293266, upload-time = "2024-07-21T19:35:20.207Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/60/eccdd92dd4af3e4bea6d6a342f7588c618a15b9bec4b968af581e498bcc4/pypdf-4.3.1-py3-none-any.whl", hash = "sha256:64b31da97eda0771ef22edb1bfecd5deee4b72c3d1736b7df2689805076d6418", size = 295825, upload-time = "2024-07-21T19:35:18.126Z" }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "python-dotenv" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/b0/4bc07ccd3572a2f9df7e6782f52b0c6c90dcbb803ac4a167702d7d0dfe1e/python_dotenv-1.1.1.tar.gz", hash = "sha256:a8a6399716257f45be6a007360200409fce5cda2661e3dec71d23dc15f6189ab", size = 41978, upload-time = "2025-06-24T04:21:07.341Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5f/ed/539768cf28c661b5b068d66d96a2f155c4971a5d55684a514c1a0e0dec2f/python_dotenv-1.1.1-py3-none-any.whl", hash = "sha256:31f23644fe2602f88ff55e1f5c79ba497e01224ee7737937930c448e4d0e24dc", size = 20556, upload-time = "2025-06-24T04:21:06.073Z" }, +] + +[[package]] +name = "python-json-logger" +version = "3.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9e/de/d3144a0bceede957f961e975f3752760fbe390d57fbe194baf709d8f1f7b/python_json_logger-3.3.0.tar.gz", hash = "sha256:12b7e74b17775e7d565129296105bbe3910842d9d0eb083fc83a6a617aa8df84", size = 16642, upload-time = "2025-03-07T07:08:27.301Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/20/0f2523b9e50a8052bc6a8b732dfc8568abbdc42010aef03a2d750bdab3b2/python_json_logger-3.3.0-py3-none-any.whl", hash = "sha256:dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7", size = 15163, upload-time = "2025-03-07T07:08:25.627Z" }, +] + +[[package]] +name = "python-multipart" +version = "0.0.20" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/87/f44d7c9f274c7ee665a29b885ec97089ec5dc034c7f3fafa03da9e39a09e/python_multipart-0.0.20.tar.gz", hash = "sha256:8dd0cab45b8e23064ae09147625994d090fa46f5b0d1e13af944c331a7fa9d13", size = 37158, upload-time = "2024-12-16T19:45:46.972Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/45/58/38b5afbc1a800eeea951b9285d3912613f2603bdf897a4ab0f4bd7f405fc/python_multipart-0.0.20-py3-none-any.whl", hash = "sha256:8a62d3a8335e06589fe01f2a3e178cdcc632f3fbe0d492ad9ee0ec35aab1f104", size = 24546, upload-time = "2024-12-16T19:45:44.423Z" }, +] + +[[package]] +name = "pytz" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload-time = "2025-03-25T02:25:00.538Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload-time = "2025-03-25T02:24:58.468Z" }, +] + +[[package]] +name = "pywin32" +version = "311" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7c/af/449a6a91e5d6db51420875c54f6aff7c97a86a3b13a0b4f1a5c13b988de3/pywin32-311-cp311-cp311-win32.whl", hash = "sha256:184eb5e436dea364dcd3d2316d577d625c0351bf237c4e9a5fabbcfa5a58b151", size = 8697031, upload-time = "2025-07-14T20:13:13.266Z" }, + { url = "https://files.pythonhosted.org/packages/51/8f/9bb81dd5bb77d22243d33c8397f09377056d5c687aa6d4042bea7fbf8364/pywin32-311-cp311-cp311-win_amd64.whl", hash = "sha256:3ce80b34b22b17ccbd937a6e78e7225d80c52f5ab9940fe0506a1a16f3dab503", size = 9508308, upload-time = "2025-07-14T20:13:15.147Z" }, + { url = "https://files.pythonhosted.org/packages/44/7b/9c2ab54f74a138c491aba1b1cd0795ba61f144c711daea84a88b63dc0f6c/pywin32-311-cp311-cp311-win_arm64.whl", hash = "sha256:a733f1388e1a842abb67ffa8e7aad0e70ac519e09b0f6a784e65a136ec7cefd2", size = 8703930, upload-time = "2025-07-14T20:13:16.945Z" }, + { url = "https://files.pythonhosted.org/packages/e7/ab/01ea1943d4eba0f850c3c61e78e8dd59757ff815ff3ccd0a84de5f541f42/pywin32-311-cp312-cp312-win32.whl", hash = "sha256:750ec6e621af2b948540032557b10a2d43b0cee2ae9758c54154d711cc852d31", size = 8706543, upload-time = "2025-07-14T20:13:20.765Z" }, + { url = "https://files.pythonhosted.org/packages/d1/a8/a0e8d07d4d051ec7502cd58b291ec98dcc0c3fff027caad0470b72cfcc2f/pywin32-311-cp312-cp312-win_amd64.whl", hash = "sha256:b8c095edad5c211ff31c05223658e71bf7116daa0ecf3ad85f3201ea3190d067", size = 9495040, upload-time = "2025-07-14T20:13:22.543Z" }, + { url = "https://files.pythonhosted.org/packages/ba/3a/2ae996277b4b50f17d61f0603efd8253cb2d79cc7ae159468007b586396d/pywin32-311-cp312-cp312-win_arm64.whl", hash = "sha256:e286f46a9a39c4a18b319c28f59b61de793654af2f395c102b4f819e584b5852", size = 8710102, upload-time = "2025-07-14T20:13:24.682Z" }, + { url = "https://files.pythonhosted.org/packages/a5/be/3fd5de0979fcb3994bfee0d65ed8ca9506a8a1260651b86174f6a86f52b3/pywin32-311-cp313-cp313-win32.whl", hash = "sha256:f95ba5a847cba10dd8c4d8fefa9f2a6cf283b8b88ed6178fa8a6c1ab16054d0d", size = 8705700, upload-time = "2025-07-14T20:13:26.471Z" }, + { url = "https://files.pythonhosted.org/packages/e3/28/e0a1909523c6890208295a29e05c2adb2126364e289826c0a8bc7297bd5c/pywin32-311-cp313-cp313-win_amd64.whl", hash = "sha256:718a38f7e5b058e76aee1c56ddd06908116d35147e133427e59a3983f703a20d", size = 9494700, upload-time = "2025-07-14T20:13:28.243Z" }, + { url = "https://files.pythonhosted.org/packages/04/bf/90339ac0f55726dce7d794e6d79a18a91265bdf3aa70b6b9ca52f35e022a/pywin32-311-cp313-cp313-win_arm64.whl", hash = "sha256:7b4075d959648406202d92a2310cb990fea19b535c7f4a78d3f5e10b926eeb8a", size = 8709318, upload-time = "2025-07-14T20:13:30.348Z" }, +] + +[[package]] +name = "pywinpty" +version = "2.0.15" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2d/7c/917f9c4681bb8d34bfbe0b79d36bbcd902651aeab48790df3d30ba0202fb/pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2", size = 29017, upload-time = "2025-02-03T21:53:23.265Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5e/ac/6884dcb7108af66ad53f73ef4dad096e768c9203a6e6ce5e6b0c4a46e238/pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca", size = 1405249, upload-time = "2025-02-03T21:55:47.114Z" }, + { url = "https://files.pythonhosted.org/packages/88/e5/9714def18c3a411809771a3fbcec70bffa764b9675afb00048a620fca604/pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc", size = 1405243, upload-time = "2025-02-03T21:56:52.476Z" }, + { url = "https://files.pythonhosted.org/packages/fb/16/2ab7b3b7f55f3c6929e5f629e1a68362981e4e5fed592a2ed1cb4b4914a5/pywinpty-2.0.15-cp313-cp313-win_amd64.whl", hash = "sha256:ab5920877dd632c124b4ed17bc6dd6ef3b9f86cd492b963ffdb1a67b85b0f408", size = 1405020, upload-time = "2025-02-03T21:56:04.753Z" }, + { url = "https://files.pythonhosted.org/packages/7c/16/edef3515dd2030db2795dbfbe392232c7a0f3dc41b98e92b38b42ba497c7/pywinpty-2.0.15-cp313-cp313t-win_amd64.whl", hash = "sha256:a4560ad8c01e537708d2790dbe7da7d986791de805d89dd0d3697ca59e9e4901", size = 1404151, upload-time = "2025-02-03T21:55:53.628Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload-time = "2024-08-06T20:33:50.674Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/aa/7af4e81f7acba21a4c6be026da38fd2b872ca46226673c89a758ebdc4fd2/PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774", size = 184612, upload-time = "2024-08-06T20:32:03.408Z" }, + { url = "https://files.pythonhosted.org/packages/8b/62/b9faa998fd185f65c1371643678e4d58254add437edb764a08c5a98fb986/PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee", size = 172040, upload-time = "2024-08-06T20:32:04.926Z" }, + { url = "https://files.pythonhosted.org/packages/ad/0c/c804f5f922a9a6563bab712d8dcc70251e8af811fce4524d57c2c0fd49a4/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c", size = 736829, upload-time = "2024-08-06T20:32:06.459Z" }, + { url = "https://files.pythonhosted.org/packages/51/16/6af8d6a6b210c8e54f1406a6b9481febf9c64a3109c541567e35a49aa2e7/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317", size = 764167, upload-time = "2024-08-06T20:32:08.338Z" }, + { url = "https://files.pythonhosted.org/packages/75/e4/2c27590dfc9992f73aabbeb9241ae20220bd9452df27483b6e56d3975cc5/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85", size = 762952, upload-time = "2024-08-06T20:32:14.124Z" }, + { url = "https://files.pythonhosted.org/packages/9b/97/ecc1abf4a823f5ac61941a9c00fe501b02ac3ab0e373c3857f7d4b83e2b6/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4", size = 735301, upload-time = "2024-08-06T20:32:16.17Z" }, + { url = "https://files.pythonhosted.org/packages/45/73/0f49dacd6e82c9430e46f4a027baa4ca205e8b0a9dce1397f44edc23559d/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e", size = 756638, upload-time = "2024-08-06T20:32:18.555Z" }, + { url = "https://files.pythonhosted.org/packages/22/5f/956f0f9fc65223a58fbc14459bf34b4cc48dec52e00535c79b8db361aabd/PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5", size = 143850, upload-time = "2024-08-06T20:32:19.889Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/8da0bbe2ab9dcdd11f4f4557ccaf95c10b9811b13ecced089d43ce59c3c8/PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44", size = 161980, upload-time = "2024-08-06T20:32:21.273Z" }, + { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873, upload-time = "2024-08-06T20:32:25.131Z" }, + { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302, upload-time = "2024-08-06T20:32:26.511Z" }, + { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154, upload-time = "2024-08-06T20:32:28.363Z" }, + { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223, upload-time = "2024-08-06T20:32:30.058Z" }, + { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542, upload-time = "2024-08-06T20:32:31.881Z" }, + { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164, upload-time = "2024-08-06T20:32:37.083Z" }, + { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611, upload-time = "2024-08-06T20:32:38.898Z" }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591, upload-time = "2024-08-06T20:32:40.241Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338, upload-time = "2024-08-06T20:32:41.93Z" }, + { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309, upload-time = "2024-08-06T20:32:43.4Z" }, + { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679, upload-time = "2024-08-06T20:32:44.801Z" }, + { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428, upload-time = "2024-08-06T20:32:46.432Z" }, + { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361, upload-time = "2024-08-06T20:32:51.188Z" }, + { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523, upload-time = "2024-08-06T20:32:53.019Z" }, + { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660, upload-time = "2024-08-06T20:32:54.708Z" }, + { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597, upload-time = "2024-08-06T20:32:56.985Z" }, + { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527, upload-time = "2024-08-06T20:33:03.001Z" }, + { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446, upload-time = "2024-08-06T20:33:04.33Z" }, +] + +[[package]] +name = "pyzmq" +version = "27.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "implementation_name == 'pypy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f1/06/50a4e9648b3e8b992bef8eb632e457307553a89d294103213cfd47b3da69/pyzmq-27.0.0.tar.gz", hash = "sha256:b1f08eeb9ce1510e6939b6e5dcd46a17765e2333daae78ecf4606808442e52cf", size = 280478, upload-time = "2025-06-13T14:09:07.087Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/df/84c630654106d9bd9339cdb564aa941ed41b023a0264251d6743766bb50e/pyzmq-27.0.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:21457825249b2a53834fa969c69713f8b5a79583689387a5e7aed880963ac564", size = 1332718, upload-time = "2025-06-13T14:07:16.555Z" }, + { url = "https://files.pythonhosted.org/packages/c1/8e/f6a5461a07654d9840d256476434ae0ff08340bba562a455f231969772cb/pyzmq-27.0.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1958947983fef513e6e98eff9cb487b60bf14f588dc0e6bf35fa13751d2c8251", size = 908248, upload-time = "2025-06-13T14:07:18.033Z" }, + { url = "https://files.pythonhosted.org/packages/7c/93/82863e8d695a9a3ae424b63662733ae204a295a2627d52af2f62c2cd8af9/pyzmq-27.0.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0dc628b5493f9a8cd9844b8bee9732ef587ab00002157c9329e4fc0ef4d3afa", size = 668647, upload-time = "2025-06-13T14:07:19.378Z" }, + { url = "https://files.pythonhosted.org/packages/f3/85/15278769b348121eacdbfcbd8c4d40f1102f32fa6af5be1ffc032ed684be/pyzmq-27.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f7bbe9e1ed2c8d3da736a15694d87c12493e54cc9dc9790796f0321794bbc91f", size = 856600, upload-time = "2025-06-13T14:07:20.906Z" }, + { url = "https://files.pythonhosted.org/packages/d4/af/1c469b3d479bd095edb28e27f12eee10b8f00b356acbefa6aeb14dd295d1/pyzmq-27.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dc1091f59143b471d19eb64f54bae4f54bcf2a466ffb66fe45d94d8d734eb495", size = 1657748, upload-time = "2025-06-13T14:07:22.549Z" }, + { url = "https://files.pythonhosted.org/packages/8c/f4/17f965d0ee6380b1d6326da842a50e4b8b9699745161207945f3745e8cb5/pyzmq-27.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7011ade88c8e535cf140f8d1a59428676fbbce7c6e54fefce58bf117aefb6667", size = 2034311, upload-time = "2025-06-13T14:07:23.966Z" }, + { url = "https://files.pythonhosted.org/packages/e0/6e/7c391d81fa3149fd759de45d298003de6cfab343fb03e92c099821c448db/pyzmq-27.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2c386339d7e3f064213aede5d03d054b237937fbca6dd2197ac8cf3b25a6b14e", size = 1893630, upload-time = "2025-06-13T14:07:25.899Z" }, + { url = "https://files.pythonhosted.org/packages/0e/e0/eaffe7a86f60e556399e224229e7769b717f72fec0706b70ab2c03aa04cb/pyzmq-27.0.0-cp311-cp311-win32.whl", hash = "sha256:0546a720c1f407b2172cb04b6b094a78773491497e3644863cf5c96c42df8cff", size = 567706, upload-time = "2025-06-13T14:07:27.595Z" }, + { url = "https://files.pythonhosted.org/packages/c9/05/89354a8cffdcce6e547d48adaaf7be17007fc75572123ff4ca90a4ca04fc/pyzmq-27.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:15f39d50bd6c9091c67315ceb878a4f531957b121d2a05ebd077eb35ddc5efed", size = 630322, upload-time = "2025-06-13T14:07:28.938Z" }, + { url = "https://files.pythonhosted.org/packages/fa/07/4ab976d5e1e63976719389cc4f3bfd248a7f5f2bb2ebe727542363c61b5f/pyzmq-27.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c5817641eebb391a2268c27fecd4162448e03538387093cdbd8bf3510c316b38", size = 558435, upload-time = "2025-06-13T14:07:30.256Z" }, + { url = "https://files.pythonhosted.org/packages/93/a7/9ad68f55b8834ede477842214feba6a4c786d936c022a67625497aacf61d/pyzmq-27.0.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:cbabc59dcfaac66655c040dfcb8118f133fb5dde185e5fc152628354c1598e52", size = 1305438, upload-time = "2025-06-13T14:07:31.676Z" }, + { url = "https://files.pythonhosted.org/packages/ba/ee/26aa0f98665a22bc90ebe12dced1de5f3eaca05363b717f6fb229b3421b3/pyzmq-27.0.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:cb0ac5179cba4b2f94f1aa208fbb77b62c4c9bf24dd446278b8b602cf85fcda3", size = 895095, upload-time = "2025-06-13T14:07:33.104Z" }, + { url = "https://files.pythonhosted.org/packages/cf/85/c57e7ab216ecd8aa4cc7e3b83b06cc4e9cf45c87b0afc095f10cd5ce87c1/pyzmq-27.0.0-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53a48f0228eab6cbf69fde3aa3c03cbe04e50e623ef92ae395fce47ef8a76152", size = 651826, upload-time = "2025-06-13T14:07:34.831Z" }, + { url = "https://files.pythonhosted.org/packages/69/9a/9ea7e230feda9400fb0ae0d61d7d6ddda635e718d941c44eeab22a179d34/pyzmq-27.0.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:111db5f395e09f7e775f759d598f43cb815fc58e0147623c4816486e1a39dc22", size = 839750, upload-time = "2025-06-13T14:07:36.553Z" }, + { url = "https://files.pythonhosted.org/packages/08/66/4cebfbe71f3dfbd417011daca267539f62ed0fbc68105357b68bbb1a25b7/pyzmq-27.0.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c8878011653dcdc27cc2c57e04ff96f0471e797f5c19ac3d7813a245bcb24371", size = 1641357, upload-time = "2025-06-13T14:07:38.21Z" }, + { url = "https://files.pythonhosted.org/packages/ac/f6/b0f62578c08d2471c791287149cb8c2aaea414ae98c6e995c7dbe008adfb/pyzmq-27.0.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:c0ed2c1f335ba55b5fdc964622254917d6b782311c50e138863eda409fbb3b6d", size = 2020281, upload-time = "2025-06-13T14:07:39.599Z" }, + { url = "https://files.pythonhosted.org/packages/37/b9/4f670b15c7498495da9159edc374ec09c88a86d9cd5a47d892f69df23450/pyzmq-27.0.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e918d70862d4cfd4b1c187310015646a14e1f5917922ab45b29f28f345eeb6be", size = 1877110, upload-time = "2025-06-13T14:07:41.027Z" }, + { url = "https://files.pythonhosted.org/packages/66/31/9dee25c226295b740609f0d46db2fe972b23b6f5cf786360980524a3ba92/pyzmq-27.0.0-cp312-abi3-win32.whl", hash = "sha256:88b4e43cab04c3c0f0d55df3b1eef62df2b629a1a369b5289a58f6fa8b07c4f4", size = 559297, upload-time = "2025-06-13T14:07:42.533Z" }, + { url = "https://files.pythonhosted.org/packages/9b/12/52da5509800f7ff2d287b2f2b4e636e7ea0f001181cba6964ff6c1537778/pyzmq-27.0.0-cp312-abi3-win_amd64.whl", hash = "sha256:dce4199bf5f648a902ce37e7b3afa286f305cd2ef7a8b6ec907470ccb6c8b371", size = 619203, upload-time = "2025-06-13T14:07:43.843Z" }, + { url = "https://files.pythonhosted.org/packages/93/6d/7f2e53b19d1edb1eb4f09ec7c3a1f945ca0aac272099eab757d15699202b/pyzmq-27.0.0-cp312-abi3-win_arm64.whl", hash = "sha256:56e46bbb85d52c1072b3f809cc1ce77251d560bc036d3a312b96db1afe76db2e", size = 551927, upload-time = "2025-06-13T14:07:45.51Z" }, + { url = "https://files.pythonhosted.org/packages/19/62/876b27c4ff777db4ceba1c69ea90d3c825bb4f8d5e7cd987ce5802e33c55/pyzmq-27.0.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c36ad534c0c29b4afa088dc53543c525b23c0797e01b69fef59b1a9c0e38b688", size = 1340826, upload-time = "2025-06-13T14:07:46.881Z" }, + { url = "https://files.pythonhosted.org/packages/43/69/58ef8f4f59d3bcd505260c73bee87b008850f45edca40ddaba54273c35f4/pyzmq-27.0.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:67855c14173aec36395d7777aaba3cc527b393821f30143fd20b98e1ff31fd38", size = 897283, upload-time = "2025-06-13T14:07:49.562Z" }, + { url = "https://files.pythonhosted.org/packages/43/15/93a0d0396700a60475ad3c5d42c5f1c308d3570bc94626b86c71ef9953e0/pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8617c7d43cd8ccdb62aebe984bfed77ca8f036e6c3e46dd3dddda64b10f0ab7a", size = 660567, upload-time = "2025-06-13T14:07:51.364Z" }, + { url = "https://files.pythonhosted.org/packages/0e/b3/fe055513e498ca32f64509abae19b9c9eb4d7c829e02bd8997dd51b029eb/pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:67bfbcbd0a04c575e8103a6061d03e393d9f80ffdb9beb3189261e9e9bc5d5e9", size = 847681, upload-time = "2025-06-13T14:07:52.77Z" }, + { url = "https://files.pythonhosted.org/packages/b6/4f/ff15300b00b5b602191f3df06bbc8dd4164e805fdd65bb77ffbb9c5facdc/pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5cd11d46d7b7e5958121b3eaf4cd8638eff3a720ec527692132f05a57f14341d", size = 1650148, upload-time = "2025-06-13T14:07:54.178Z" }, + { url = "https://files.pythonhosted.org/packages/c4/6f/84bdfff2a224a6f26a24249a342e5906993c50b0761e311e81b39aef52a7/pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:b801c2e40c5aa6072c2f4876de8dccd100af6d9918d4d0d7aa54a1d982fd4f44", size = 2023768, upload-time = "2025-06-13T14:07:55.714Z" }, + { url = "https://files.pythonhosted.org/packages/64/39/dc2db178c26a42228c5ac94a9cc595030458aa64c8d796a7727947afbf55/pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:20d5cb29e8c5f76a127c75b6e7a77e846bc4b655c373baa098c26a61b7ecd0ef", size = 1885199, upload-time = "2025-06-13T14:07:57.166Z" }, + { url = "https://files.pythonhosted.org/packages/c7/21/dae7b06a1f8cdee5d8e7a63d99c5d129c401acc40410bef2cbf42025e26f/pyzmq-27.0.0-cp313-cp313t-win32.whl", hash = "sha256:a20528da85c7ac7a19b7384e8c3f8fa707841fd85afc4ed56eda59d93e3d98ad", size = 575439, upload-time = "2025-06-13T14:07:58.959Z" }, + { url = "https://files.pythonhosted.org/packages/eb/bc/1709dc55f0970cf4cb8259e435e6773f9946f41a045c2cb90e870b7072da/pyzmq-27.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d8229f2efece6a660ee211d74d91dbc2a76b95544d46c74c615e491900dc107f", size = 639933, upload-time = "2025-06-13T14:08:00.777Z" }, + { url = "https://files.pythonhosted.org/packages/98/a6/92394373b8dbc1edc9d53c951e8d3989d518185174ee54492ec27711779d/pyzmq-27.0.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cd1dc59763effd1576f8368047c9c31468fce0af89d76b5067641137506792ae", size = 835948, upload-time = "2025-06-13T14:08:43.516Z" }, + { url = "https://files.pythonhosted.org/packages/56/f3/4dc38d75d9995bfc18773df3e41f2a2ca9b740b06f1a15dbf404077e7588/pyzmq-27.0.0-pp311-pypy311_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:60e8cc82d968174650c1860d7b716366caab9973787a1c060cf8043130f7d0f7", size = 799874, upload-time = "2025-06-13T14:08:45.017Z" }, + { url = "https://files.pythonhosted.org/packages/ab/ba/64af397e0f421453dc68e31d5e0784d554bf39013a2de0872056e96e58af/pyzmq-27.0.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:14fe7aaac86e4e93ea779a821967360c781d7ac5115b3f1a171ced77065a0174", size = 567400, upload-time = "2025-06-13T14:08:46.855Z" }, + { url = "https://files.pythonhosted.org/packages/63/87/ec956cbe98809270b59a22891d5758edae147a258e658bf3024a8254c855/pyzmq-27.0.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6ad0562d4e6abb785be3e4dd68599c41be821b521da38c402bc9ab2a8e7ebc7e", size = 747031, upload-time = "2025-06-13T14:08:48.419Z" }, + { url = "https://files.pythonhosted.org/packages/be/8a/4a3764a68abc02e2fbb0668d225b6fda5cd39586dd099cee8b2ed6ab0452/pyzmq-27.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:9df43a2459cd3a3563404c1456b2c4c69564daa7dbaf15724c09821a3329ce46", size = 544726, upload-time = "2025-06-13T14:08:49.903Z" }, +] + +[[package]] +name = "referencing" +version = "0.36.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744, upload-time = "2025-01-25T08:48:16.138Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775, upload-time = "2025-01-25T08:48:14.241Z" }, +] + +[[package]] +name = "regex" +version = "2024.11.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8e/5f/bd69653fbfb76cf8604468d3b4ec4c403197144c7bfe0e6a5fc9e02a07cb/regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519", size = 399494, upload-time = "2024-11-06T20:12:31.635Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/58/58/7e4d9493a66c88a7da6d205768119f51af0f684fe7be7bac8328e217a52c/regex-2024.11.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5478c6962ad548b54a591778e93cd7c456a7a29f8eca9c49e4f9a806dcc5d638", size = 482669, upload-time = "2024-11-06T20:09:31.064Z" }, + { url = "https://files.pythonhosted.org/packages/34/4c/8f8e631fcdc2ff978609eaeef1d6994bf2f028b59d9ac67640ed051f1218/regex-2024.11.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c89a8cc122b25ce6945f0423dc1352cb9593c68abd19223eebbd4e56612c5b7", size = 287684, upload-time = "2024-11-06T20:09:32.915Z" }, + { url = "https://files.pythonhosted.org/packages/c5/1b/f0e4d13e6adf866ce9b069e191f303a30ab1277e037037a365c3aad5cc9c/regex-2024.11.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:94d87b689cdd831934fa3ce16cc15cd65748e6d689f5d2b8f4f4df2065c9fa20", size = 284589, upload-time = "2024-11-06T20:09:35.504Z" }, + { url = "https://files.pythonhosted.org/packages/25/4d/ab21047f446693887f25510887e6820b93f791992994f6498b0318904d4a/regex-2024.11.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1062b39a0a2b75a9c694f7a08e7183a80c63c0d62b301418ffd9c35f55aaa114", size = 792121, upload-time = "2024-11-06T20:09:37.701Z" }, + { url = "https://files.pythonhosted.org/packages/45/ee/c867e15cd894985cb32b731d89576c41a4642a57850c162490ea34b78c3b/regex-2024.11.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:167ed4852351d8a750da48712c3930b031f6efdaa0f22fa1933716bfcd6bf4a3", size = 831275, upload-time = "2024-11-06T20:09:40.371Z" }, + { url = "https://files.pythonhosted.org/packages/b3/12/b0f480726cf1c60f6536fa5e1c95275a77624f3ac8fdccf79e6727499e28/regex-2024.11.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d548dafee61f06ebdb584080621f3e0c23fff312f0de1afc776e2a2ba99a74f", size = 818257, upload-time = "2024-11-06T20:09:43.059Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ce/0d0e61429f603bac433910d99ef1a02ce45a8967ffbe3cbee48599e62d88/regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a19f302cd1ce5dd01a9099aaa19cae6173306d1302a43b627f62e21cf18ac0", size = 792727, upload-time = "2024-11-06T20:09:48.19Z" }, + { url = "https://files.pythonhosted.org/packages/e4/c1/243c83c53d4a419c1556f43777ccb552bccdf79d08fda3980e4e77dd9137/regex-2024.11.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bec9931dfb61ddd8ef2ebc05646293812cb6b16b60cf7c9511a832b6f1854b55", size = 780667, upload-time = "2024-11-06T20:09:49.828Z" }, + { url = "https://files.pythonhosted.org/packages/c5/f4/75eb0dd4ce4b37f04928987f1d22547ddaf6c4bae697623c1b05da67a8aa/regex-2024.11.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9714398225f299aa85267fd222f7142fcb5c769e73d7733344efc46f2ef5cf89", size = 776963, upload-time = "2024-11-06T20:09:51.819Z" }, + { url = "https://files.pythonhosted.org/packages/16/5d/95c568574e630e141a69ff8a254c2f188b4398e813c40d49228c9bbd9875/regex-2024.11.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:202eb32e89f60fc147a41e55cb086db2a3f8cb82f9a9a88440dcfc5d37faae8d", size = 784700, upload-time = "2024-11-06T20:09:53.982Z" }, + { url = "https://files.pythonhosted.org/packages/8e/b5/f8495c7917f15cc6fee1e7f395e324ec3e00ab3c665a7dc9d27562fd5290/regex-2024.11.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:4181b814e56078e9b00427ca358ec44333765f5ca1b45597ec7446d3a1ef6e34", size = 848592, upload-time = "2024-11-06T20:09:56.222Z" }, + { url = "https://files.pythonhosted.org/packages/1c/80/6dd7118e8cb212c3c60b191b932dc57db93fb2e36fb9e0e92f72a5909af9/regex-2024.11.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:068376da5a7e4da51968ce4c122a7cd31afaaec4fccc7856c92f63876e57b51d", size = 852929, upload-time = "2024-11-06T20:09:58.642Z" }, + { url = "https://files.pythonhosted.org/packages/11/9b/5a05d2040297d2d254baf95eeeb6df83554e5e1df03bc1a6687fc4ba1f66/regex-2024.11.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f2c4184420d881a3475fb2c6f4d95d53a8d50209a2500723d831036f7c45", size = 781213, upload-time = "2024-11-06T20:10:00.867Z" }, + { url = "https://files.pythonhosted.org/packages/26/b7/b14e2440156ab39e0177506c08c18accaf2b8932e39fb092074de733d868/regex-2024.11.6-cp311-cp311-win32.whl", hash = "sha256:c36f9b6f5f8649bb251a5f3f66564438977b7ef8386a52460ae77e6070d309d9", size = 261734, upload-time = "2024-11-06T20:10:03.361Z" }, + { url = "https://files.pythonhosted.org/packages/80/32/763a6cc01d21fb3819227a1cc3f60fd251c13c37c27a73b8ff4315433a8e/regex-2024.11.6-cp311-cp311-win_amd64.whl", hash = "sha256:02e28184be537f0e75c1f9b2f8847dc51e08e6e171c6bde130b2687e0c33cf60", size = 274052, upload-time = "2024-11-06T20:10:05.179Z" }, + { url = "https://files.pythonhosted.org/packages/ba/30/9a87ce8336b172cc232a0db89a3af97929d06c11ceaa19d97d84fa90a8f8/regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a", size = 483781, upload-time = "2024-11-06T20:10:07.07Z" }, + { url = "https://files.pythonhosted.org/packages/01/e8/00008ad4ff4be8b1844786ba6636035f7ef926db5686e4c0f98093612add/regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9", size = 288455, upload-time = "2024-11-06T20:10:09.117Z" }, + { url = "https://files.pythonhosted.org/packages/60/85/cebcc0aff603ea0a201667b203f13ba75d9fc8668fab917ac5b2de3967bc/regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2", size = 284759, upload-time = "2024-11-06T20:10:11.155Z" }, + { url = "https://files.pythonhosted.org/packages/94/2b/701a4b0585cb05472a4da28ee28fdfe155f3638f5e1ec92306d924e5faf0/regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4", size = 794976, upload-time = "2024-11-06T20:10:13.24Z" }, + { url = "https://files.pythonhosted.org/packages/4b/bf/fa87e563bf5fee75db8915f7352e1887b1249126a1be4813837f5dbec965/regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577", size = 833077, upload-time = "2024-11-06T20:10:15.37Z" }, + { url = "https://files.pythonhosted.org/packages/a1/56/7295e6bad94b047f4d0834e4779491b81216583c00c288252ef625c01d23/regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3", size = 823160, upload-time = "2024-11-06T20:10:19.027Z" }, + { url = "https://files.pythonhosted.org/packages/fb/13/e3b075031a738c9598c51cfbc4c7879e26729c53aa9cca59211c44235314/regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e", size = 796896, upload-time = "2024-11-06T20:10:21.85Z" }, + { url = "https://files.pythonhosted.org/packages/24/56/0b3f1b66d592be6efec23a795b37732682520b47c53da5a32c33ed7d84e3/regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe", size = 783997, upload-time = "2024-11-06T20:10:24.329Z" }, + { url = "https://files.pythonhosted.org/packages/f9/a1/eb378dada8b91c0e4c5f08ffb56f25fcae47bf52ad18f9b2f33b83e6d498/regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e", size = 781725, upload-time = "2024-11-06T20:10:28.067Z" }, + { url = "https://files.pythonhosted.org/packages/83/f2/033e7dec0cfd6dda93390089864732a3409246ffe8b042e9554afa9bff4e/regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29", size = 789481, upload-time = "2024-11-06T20:10:31.612Z" }, + { url = "https://files.pythonhosted.org/packages/83/23/15d4552ea28990a74e7696780c438aadd73a20318c47e527b47a4a5a596d/regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39", size = 852896, upload-time = "2024-11-06T20:10:34.054Z" }, + { url = "https://files.pythonhosted.org/packages/e3/39/ed4416bc90deedbfdada2568b2cb0bc1fdb98efe11f5378d9892b2a88f8f/regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51", size = 860138, upload-time = "2024-11-06T20:10:36.142Z" }, + { url = "https://files.pythonhosted.org/packages/93/2d/dd56bb76bd8e95bbce684326302f287455b56242a4f9c61f1bc76e28360e/regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad", size = 787692, upload-time = "2024-11-06T20:10:38.394Z" }, + { url = "https://files.pythonhosted.org/packages/0b/55/31877a249ab7a5156758246b9c59539abbeba22461b7d8adc9e8475ff73e/regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54", size = 262135, upload-time = "2024-11-06T20:10:40.367Z" }, + { url = "https://files.pythonhosted.org/packages/38/ec/ad2d7de49a600cdb8dd78434a1aeffe28b9d6fc42eb36afab4a27ad23384/regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b", size = 273567, upload-time = "2024-11-06T20:10:43.467Z" }, + { url = "https://files.pythonhosted.org/packages/90/73/bcb0e36614601016552fa9344544a3a2ae1809dc1401b100eab02e772e1f/regex-2024.11.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a6ba92c0bcdf96cbf43a12c717eae4bc98325ca3730f6b130ffa2e3c3c723d84", size = 483525, upload-time = "2024-11-06T20:10:45.19Z" }, + { url = "https://files.pythonhosted.org/packages/0f/3f/f1a082a46b31e25291d830b369b6b0c5576a6f7fb89d3053a354c24b8a83/regex-2024.11.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:525eab0b789891ac3be914d36893bdf972d483fe66551f79d3e27146191a37d4", size = 288324, upload-time = "2024-11-06T20:10:47.177Z" }, + { url = "https://files.pythonhosted.org/packages/09/c9/4e68181a4a652fb3ef5099e077faf4fd2a694ea6e0f806a7737aff9e758a/regex-2024.11.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:086a27a0b4ca227941700e0b31425e7a28ef1ae8e5e05a33826e17e47fbfdba0", size = 284617, upload-time = "2024-11-06T20:10:49.312Z" }, + { url = "https://files.pythonhosted.org/packages/fc/fd/37868b75eaf63843165f1d2122ca6cb94bfc0271e4428cf58c0616786dce/regex-2024.11.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bde01f35767c4a7899b7eb6e823b125a64de314a8ee9791367c9a34d56af18d0", size = 795023, upload-time = "2024-11-06T20:10:51.102Z" }, + { url = "https://files.pythonhosted.org/packages/c4/7c/d4cd9c528502a3dedb5c13c146e7a7a539a3853dc20209c8e75d9ba9d1b2/regex-2024.11.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b583904576650166b3d920d2bcce13971f6f9e9a396c673187f49811b2769dc7", size = 833072, upload-time = "2024-11-06T20:10:52.926Z" }, + { url = "https://files.pythonhosted.org/packages/4f/db/46f563a08f969159c5a0f0e722260568425363bea43bb7ae370becb66a67/regex-2024.11.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c4de13f06a0d54fa0d5ab1b7138bfa0d883220965a29616e3ea61b35d5f5fc7", size = 823130, upload-time = "2024-11-06T20:10:54.828Z" }, + { url = "https://files.pythonhosted.org/packages/db/60/1eeca2074f5b87df394fccaa432ae3fc06c9c9bfa97c5051aed70e6e00c2/regex-2024.11.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cde6e9f2580eb1665965ce9bf17ff4952f34f5b126beb509fee8f4e994f143c", size = 796857, upload-time = "2024-11-06T20:10:56.634Z" }, + { url = "https://files.pythonhosted.org/packages/10/db/ac718a08fcee981554d2f7bb8402f1faa7e868c1345c16ab1ebec54b0d7b/regex-2024.11.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d7f453dca13f40a02b79636a339c5b62b670141e63efd511d3f8f73fba162b3", size = 784006, upload-time = "2024-11-06T20:10:59.369Z" }, + { url = "https://files.pythonhosted.org/packages/c2/41/7da3fe70216cea93144bf12da2b87367590bcf07db97604edeea55dac9ad/regex-2024.11.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59dfe1ed21aea057a65c6b586afd2a945de04fc7db3de0a6e3ed5397ad491b07", size = 781650, upload-time = "2024-11-06T20:11:02.042Z" }, + { url = "https://files.pythonhosted.org/packages/a7/d5/880921ee4eec393a4752e6ab9f0fe28009435417c3102fc413f3fe81c4e5/regex-2024.11.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b97c1e0bd37c5cd7902e65f410779d39eeda155800b65fc4d04cc432efa9bc6e", size = 789545, upload-time = "2024-11-06T20:11:03.933Z" }, + { url = "https://files.pythonhosted.org/packages/dc/96/53770115e507081122beca8899ab7f5ae28ae790bfcc82b5e38976df6a77/regex-2024.11.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f9d1e379028e0fc2ae3654bac3cbbef81bf3fd571272a42d56c24007979bafb6", size = 853045, upload-time = "2024-11-06T20:11:06.497Z" }, + { url = "https://files.pythonhosted.org/packages/31/d3/1372add5251cc2d44b451bd94f43b2ec78e15a6e82bff6a290ef9fd8f00a/regex-2024.11.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:13291b39131e2d002a7940fb176e120bec5145f3aeb7621be6534e46251912c4", size = 860182, upload-time = "2024-11-06T20:11:09.06Z" }, + { url = "https://files.pythonhosted.org/packages/ed/e3/c446a64984ea9f69982ba1a69d4658d5014bc7a0ea468a07e1a1265db6e2/regex-2024.11.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f51f88c126370dcec4908576c5a627220da6c09d0bff31cfa89f2523843316d", size = 787733, upload-time = "2024-11-06T20:11:11.256Z" }, + { url = "https://files.pythonhosted.org/packages/2b/f1/e40c8373e3480e4f29f2692bd21b3e05f296d3afebc7e5dcf21b9756ca1c/regex-2024.11.6-cp313-cp313-win32.whl", hash = "sha256:63b13cfd72e9601125027202cad74995ab26921d8cd935c25f09c630436348ff", size = 262122, upload-time = "2024-11-06T20:11:13.161Z" }, + { url = "https://files.pythonhosted.org/packages/45/94/bc295babb3062a731f52621cdc992d123111282e291abaf23faa413443ea/regex-2024.11.6-cp313-cp313-win_amd64.whl", hash = "sha256:2b3361af3198667e99927da8b84c1b010752fa4b1115ee30beaa332cabc3ef1a", size = 273545, upload-time = "2024-11-06T20:11:15Z" }, +] + +[[package]] +name = "requests" +version = "2.32.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517, upload-time = "2025-08-18T20:46:02.573Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload-time = "2025-08-18T20:46:00.542Z" }, +] + +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", size = 206888, upload-time = "2023-05-01T04:11:33.229Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", size = 54481, upload-time = "2023-05-01T04:11:28.427Z" }, +] + +[[package]] +name = "rfc3339-validator" +version = "0.1.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/ea/a9387748e2d111c3c2b275ba970b735e04e15cdb1eb30693b6b5708c4dbd/rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b", size = 5513, upload-time = "2021-05-12T16:37:54.178Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa", size = 3490, upload-time = "2021-05-12T16:37:52.536Z" }, +] + +[[package]] +name = "rfc3986-validator" +version = "0.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/da/88/f270de456dd7d11dcc808abfa291ecdd3f45ff44e3b549ffa01b126464d0/rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055", size = 6760, upload-time = "2019-10-28T16:00:19.144Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9", size = 4242, upload-time = "2019-10-28T16:00:13.976Z" }, +] + +[[package]] +name = "rfc3987-syntax" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "lark" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2c/06/37c1a5557acf449e8e406a830a05bf885ac47d33270aec454ef78675008d/rfc3987_syntax-1.1.0.tar.gz", hash = "sha256:717a62cbf33cffdd16dfa3a497d81ce48a660ea691b1ddd7be710c22f00b4a0d", size = 14239, upload-time = "2025-07-18T01:05:05.015Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/71/44ce230e1b7fadd372515a97e32a83011f906ddded8d03e3c6aafbdedbb7/rfc3987_syntax-1.1.0-py3-none-any.whl", hash = "sha256:6c3d97604e4c5ce9f714898e05401a0445a641cfa276432b0a648c80856f6a3f", size = 8046, upload-time = "2025-07-18T01:05:03.843Z" }, +] + +[[package]] +name = "rich" +version = "14.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a1/53/830aa4c3066a8ab0ae9a9955976fb770fe9c6102117c8ec4ab3ea62d89e8/rich-14.0.0.tar.gz", hash = "sha256:82f1bc23a6a21ebca4ae0c45af9bdbc492ed20231dcb63f297d6d1021a9d5725", size = 224078, upload-time = "2025-03-30T14:15:14.23Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0d/9b/63f4c7ebc259242c89b3acafdb37b41d1185c07ff0011164674e9076b491/rich-14.0.0-py3-none-any.whl", hash = "sha256:1c9491e1951aac09caffd42f448ee3d04e58923ffe14993f6e83068dc395d7e0", size = 243229, upload-time = "2025-03-30T14:15:12.283Z" }, +] + +[[package]] +name = "rpds-py" +version = "0.26.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a5/aa/4456d84bbb54adc6a916fb10c9b374f78ac840337644e4a5eda229c81275/rpds_py-0.26.0.tar.gz", hash = "sha256:20dae58a859b0906f0685642e591056f1e787f3a8b39c8e8749a45dc7d26bdb0", size = 27385, upload-time = "2025-07-01T15:57:13.958Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/09/4c/4ee8f7e512030ff79fda1df3243c88d70fc874634e2dbe5df13ba4210078/rpds_py-0.26.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:9e8cb77286025bdb21be2941d64ac6ca016130bfdcd228739e8ab137eb4406ed", size = 372610, upload-time = "2025-07-01T15:53:58.844Z" }, + { url = "https://files.pythonhosted.org/packages/fa/9d/3dc16be00f14fc1f03c71b1d67c8df98263ab2710a2fbd65a6193214a527/rpds_py-0.26.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5e09330b21d98adc8ccb2dbb9fc6cb434e8908d4c119aeaa772cb1caab5440a0", size = 358032, upload-time = "2025-07-01T15:53:59.985Z" }, + { url = "https://files.pythonhosted.org/packages/e7/5a/7f1bf8f045da2866324a08ae80af63e64e7bfaf83bd31f865a7b91a58601/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9c1b92b774b2e68d11193dc39620d62fd8ab33f0a3c77ecdabe19c179cdbc1", size = 381525, upload-time = "2025-07-01T15:54:01.162Z" }, + { url = "https://files.pythonhosted.org/packages/45/8a/04479398c755a066ace10e3d158866beb600867cacae194c50ffa783abd0/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:824e6d3503ab990d7090768e4dfd9e840837bae057f212ff9f4f05ec6d1975e7", size = 397089, upload-time = "2025-07-01T15:54:02.319Z" }, + { url = "https://files.pythonhosted.org/packages/72/88/9203f47268db488a1b6d469d69c12201ede776bb728b9d9f29dbfd7df406/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ad7fd2258228bf288f2331f0a6148ad0186b2e3643055ed0db30990e59817a6", size = 514255, upload-time = "2025-07-01T15:54:03.38Z" }, + { url = "https://files.pythonhosted.org/packages/f5/b4/01ce5d1e853ddf81fbbd4311ab1eff0b3cf162d559288d10fd127e2588b5/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0dc23bbb3e06ec1ea72d515fb572c1fea59695aefbffb106501138762e1e915e", size = 402283, upload-time = "2025-07-01T15:54:04.923Z" }, + { url = "https://files.pythonhosted.org/packages/34/a2/004c99936997bfc644d590a9defd9e9c93f8286568f9c16cdaf3e14429a7/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d80bf832ac7b1920ee29a426cdca335f96a2b5caa839811803e999b41ba9030d", size = 383881, upload-time = "2025-07-01T15:54:06.482Z" }, + { url = "https://files.pythonhosted.org/packages/05/1b/ef5fba4a8f81ce04c427bfd96223f92f05e6cd72291ce9d7523db3b03a6c/rpds_py-0.26.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0919f38f5542c0a87e7b4afcafab6fd2c15386632d249e9a087498571250abe3", size = 415822, upload-time = "2025-07-01T15:54:07.605Z" }, + { url = "https://files.pythonhosted.org/packages/16/80/5c54195aec456b292f7bd8aa61741c8232964063fd8a75fdde9c1e982328/rpds_py-0.26.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d422b945683e409000c888e384546dbab9009bb92f7c0b456e217988cf316107", size = 558347, upload-time = "2025-07-01T15:54:08.591Z" }, + { url = "https://files.pythonhosted.org/packages/f2/1c/1845c1b1fd6d827187c43afe1841d91678d7241cbdb5420a4c6de180a538/rpds_py-0.26.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:77a7711fa562ba2da1aa757e11024ad6d93bad6ad7ede5afb9af144623e5f76a", size = 587956, upload-time = "2025-07-01T15:54:09.963Z" }, + { url = "https://files.pythonhosted.org/packages/2e/ff/9e979329dd131aa73a438c077252ddabd7df6d1a7ad7b9aacf6261f10faa/rpds_py-0.26.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:238e8c8610cb7c29460e37184f6799547f7e09e6a9bdbdab4e8edb90986a2318", size = 554363, upload-time = "2025-07-01T15:54:11.073Z" }, + { url = "https://files.pythonhosted.org/packages/00/8b/d78cfe034b71ffbe72873a136e71acc7a831a03e37771cfe59f33f6de8a2/rpds_py-0.26.0-cp311-cp311-win32.whl", hash = "sha256:893b022bfbdf26d7bedb083efeea624e8550ca6eb98bf7fea30211ce95b9201a", size = 220123, upload-time = "2025-07-01T15:54:12.382Z" }, + { url = "https://files.pythonhosted.org/packages/94/c1/3c8c94c7dd3905dbfde768381ce98778500a80db9924731d87ddcdb117e9/rpds_py-0.26.0-cp311-cp311-win_amd64.whl", hash = "sha256:87a5531de9f71aceb8af041d72fc4cab4943648d91875ed56d2e629bef6d4c03", size = 231732, upload-time = "2025-07-01T15:54:13.434Z" }, + { url = "https://files.pythonhosted.org/packages/67/93/e936fbed1b734eabf36ccb5d93c6a2e9246fbb13c1da011624b7286fae3e/rpds_py-0.26.0-cp311-cp311-win_arm64.whl", hash = "sha256:de2713f48c1ad57f89ac25b3cb7daed2156d8e822cf0eca9b96a6f990718cc41", size = 221917, upload-time = "2025-07-01T15:54:14.559Z" }, + { url = "https://files.pythonhosted.org/packages/ea/86/90eb87c6f87085868bd077c7a9938006eb1ce19ed4d06944a90d3560fce2/rpds_py-0.26.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:894514d47e012e794f1350f076c427d2347ebf82f9b958d554d12819849a369d", size = 363933, upload-time = "2025-07-01T15:54:15.734Z" }, + { url = "https://files.pythonhosted.org/packages/63/78/4469f24d34636242c924626082b9586f064ada0b5dbb1e9d096ee7a8e0c6/rpds_py-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc921b96fa95a097add244da36a1d9e4f3039160d1d30f1b35837bf108c21136", size = 350447, upload-time = "2025-07-01T15:54:16.922Z" }, + { url = "https://files.pythonhosted.org/packages/ad/91/c448ed45efdfdade82348d5e7995e15612754826ea640afc20915119734f/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e1157659470aa42a75448b6e943c895be8c70531c43cb78b9ba990778955582", size = 384711, upload-time = "2025-07-01T15:54:18.101Z" }, + { url = "https://files.pythonhosted.org/packages/ec/43/e5c86fef4be7f49828bdd4ecc8931f0287b1152c0bb0163049b3218740e7/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:521ccf56f45bb3a791182dc6b88ae5f8fa079dd705ee42138c76deb1238e554e", size = 400865, upload-time = "2025-07-01T15:54:19.295Z" }, + { url = "https://files.pythonhosted.org/packages/55/34/e00f726a4d44f22d5c5fe2e5ddd3ac3d7fd3f74a175607781fbdd06fe375/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9def736773fd56b305c0eef698be5192c77bfa30d55a0e5885f80126c4831a15", size = 517763, upload-time = "2025-07-01T15:54:20.858Z" }, + { url = "https://files.pythonhosted.org/packages/52/1c/52dc20c31b147af724b16104500fba13e60123ea0334beba7b40e33354b4/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cdad4ea3b4513b475e027be79e5a0ceac8ee1c113a1a11e5edc3c30c29f964d8", size = 406651, upload-time = "2025-07-01T15:54:22.508Z" }, + { url = "https://files.pythonhosted.org/packages/2e/77/87d7bfabfc4e821caa35481a2ff6ae0b73e6a391bb6b343db2c91c2b9844/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82b165b07f416bdccf5c84546a484cc8f15137ca38325403864bfdf2b5b72f6a", size = 386079, upload-time = "2025-07-01T15:54:23.987Z" }, + { url = "https://files.pythonhosted.org/packages/e3/d4/7f2200c2d3ee145b65b3cddc4310d51f7da6a26634f3ac87125fd789152a/rpds_py-0.26.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d04cab0a54b9dba4d278fe955a1390da3cf71f57feb78ddc7cb67cbe0bd30323", size = 421379, upload-time = "2025-07-01T15:54:25.073Z" }, + { url = "https://files.pythonhosted.org/packages/ae/13/9fdd428b9c820869924ab62236b8688b122baa22d23efdd1c566938a39ba/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:79061ba1a11b6a12743a2b0f72a46aa2758613d454aa6ba4f5a265cc48850158", size = 562033, upload-time = "2025-07-01T15:54:26.225Z" }, + { url = "https://files.pythonhosted.org/packages/f3/e1/b69686c3bcbe775abac3a4c1c30a164a2076d28df7926041f6c0eb5e8d28/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f405c93675d8d4c5ac87364bb38d06c988e11028a64b52a47158a355079661f3", size = 591639, upload-time = "2025-07-01T15:54:27.424Z" }, + { url = "https://files.pythonhosted.org/packages/5c/c9/1e3d8c8863c84a90197ac577bbc3d796a92502124c27092413426f670990/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dafd4c44b74aa4bed4b250f1aed165b8ef5de743bcca3b88fc9619b6087093d2", size = 557105, upload-time = "2025-07-01T15:54:29.93Z" }, + { url = "https://files.pythonhosted.org/packages/9f/c5/90c569649057622959f6dcc40f7b516539608a414dfd54b8d77e3b201ac0/rpds_py-0.26.0-cp312-cp312-win32.whl", hash = "sha256:3da5852aad63fa0c6f836f3359647870e21ea96cf433eb393ffa45263a170d44", size = 223272, upload-time = "2025-07-01T15:54:31.128Z" }, + { url = "https://files.pythonhosted.org/packages/7d/16/19f5d9f2a556cfed454eebe4d354c38d51c20f3db69e7b4ce6cff904905d/rpds_py-0.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:cf47cfdabc2194a669dcf7a8dbba62e37a04c5041d2125fae0233b720da6f05c", size = 234995, upload-time = "2025-07-01T15:54:32.195Z" }, + { url = "https://files.pythonhosted.org/packages/83/f0/7935e40b529c0e752dfaa7880224771b51175fce08b41ab4a92eb2fbdc7f/rpds_py-0.26.0-cp312-cp312-win_arm64.whl", hash = "sha256:20ab1ae4fa534f73647aad289003f1104092890849e0266271351922ed5574f8", size = 223198, upload-time = "2025-07-01T15:54:33.271Z" }, + { url = "https://files.pythonhosted.org/packages/6a/67/bb62d0109493b12b1c6ab00de7a5566aa84c0e44217c2d94bee1bd370da9/rpds_py-0.26.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:696764a5be111b036256c0b18cd29783fab22154690fc698062fc1b0084b511d", size = 363917, upload-time = "2025-07-01T15:54:34.755Z" }, + { url = "https://files.pythonhosted.org/packages/4b/f3/34e6ae1925a5706c0f002a8d2d7f172373b855768149796af87bd65dcdb9/rpds_py-0.26.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1e6c15d2080a63aaed876e228efe4f814bc7889c63b1e112ad46fdc8b368b9e1", size = 350073, upload-time = "2025-07-01T15:54:36.292Z" }, + { url = "https://files.pythonhosted.org/packages/75/83/1953a9d4f4e4de7fd0533733e041c28135f3c21485faaef56a8aadbd96b5/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:390e3170babf42462739a93321e657444f0862c6d722a291accc46f9d21ed04e", size = 384214, upload-time = "2025-07-01T15:54:37.469Z" }, + { url = "https://files.pythonhosted.org/packages/48/0e/983ed1b792b3322ea1d065e67f4b230f3b96025f5ce3878cc40af09b7533/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7da84c2c74c0f5bc97d853d9e17bb83e2dcafcff0dc48286916001cc114379a1", size = 400113, upload-time = "2025-07-01T15:54:38.954Z" }, + { url = "https://files.pythonhosted.org/packages/69/7f/36c0925fff6f660a80be259c5b4f5e53a16851f946eb080351d057698528/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c5fe114a6dd480a510b6d3661d09d67d1622c4bf20660a474507aaee7eeeee9", size = 515189, upload-time = "2025-07-01T15:54:40.57Z" }, + { url = "https://files.pythonhosted.org/packages/13/45/cbf07fc03ba7a9b54662c9badb58294ecfb24f828b9732970bd1a431ed5c/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3100b3090269f3a7ea727b06a6080d4eb7439dca4c0e91a07c5d133bb1727ea7", size = 406998, upload-time = "2025-07-01T15:54:43.025Z" }, + { url = "https://files.pythonhosted.org/packages/6c/b0/8fa5e36e58657997873fd6a1cf621285ca822ca75b4b3434ead047daa307/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c03c9b0c64afd0320ae57de4c982801271c0c211aa2d37f3003ff5feb75bb04", size = 385903, upload-time = "2025-07-01T15:54:44.752Z" }, + { url = "https://files.pythonhosted.org/packages/4b/f7/b25437772f9f57d7a9fbd73ed86d0dcd76b4c7c6998348c070d90f23e315/rpds_py-0.26.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5963b72ccd199ade6ee493723d18a3f21ba7d5b957017607f815788cef50eaf1", size = 419785, upload-time = "2025-07-01T15:54:46.043Z" }, + { url = "https://files.pythonhosted.org/packages/a7/6b/63ffa55743dfcb4baf2e9e77a0b11f7f97ed96a54558fcb5717a4b2cd732/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9da4e873860ad5bab3291438525cae80169daecbfafe5657f7f5fb4d6b3f96b9", size = 561329, upload-time = "2025-07-01T15:54:47.64Z" }, + { url = "https://files.pythonhosted.org/packages/2f/07/1f4f5e2886c480a2346b1e6759c00278b8a69e697ae952d82ae2e6ee5db0/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5afaddaa8e8c7f1f7b4c5c725c0070b6eed0228f705b90a1732a48e84350f4e9", size = 590875, upload-time = "2025-07-01T15:54:48.9Z" }, + { url = "https://files.pythonhosted.org/packages/cc/bc/e6639f1b91c3a55f8c41b47d73e6307051b6e246254a827ede730624c0f8/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4916dc96489616a6f9667e7526af8fa693c0fdb4f3acb0e5d9f4400eb06a47ba", size = 556636, upload-time = "2025-07-01T15:54:50.619Z" }, + { url = "https://files.pythonhosted.org/packages/05/4c/b3917c45566f9f9a209d38d9b54a1833f2bb1032a3e04c66f75726f28876/rpds_py-0.26.0-cp313-cp313-win32.whl", hash = "sha256:2a343f91b17097c546b93f7999976fd6c9d5900617aa848c81d794e062ab302b", size = 222663, upload-time = "2025-07-01T15:54:52.023Z" }, + { url = "https://files.pythonhosted.org/packages/e0/0b/0851bdd6025775aaa2365bb8de0697ee2558184c800bfef8d7aef5ccde58/rpds_py-0.26.0-cp313-cp313-win_amd64.whl", hash = "sha256:0a0b60701f2300c81b2ac88a5fb893ccfa408e1c4a555a77f908a2596eb875a5", size = 234428, upload-time = "2025-07-01T15:54:53.692Z" }, + { url = "https://files.pythonhosted.org/packages/ed/e8/a47c64ed53149c75fb581e14a237b7b7cd18217e969c30d474d335105622/rpds_py-0.26.0-cp313-cp313-win_arm64.whl", hash = "sha256:257d011919f133a4746958257f2c75238e3ff54255acd5e3e11f3ff41fd14256", size = 222571, upload-time = "2025-07-01T15:54:54.822Z" }, + { url = "https://files.pythonhosted.org/packages/89/bf/3d970ba2e2bcd17d2912cb42874107390f72873e38e79267224110de5e61/rpds_py-0.26.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:529c8156d7506fba5740e05da8795688f87119cce330c244519cf706a4a3d618", size = 360475, upload-time = "2025-07-01T15:54:56.228Z" }, + { url = "https://files.pythonhosted.org/packages/82/9f/283e7e2979fc4ec2d8ecee506d5a3675fce5ed9b4b7cb387ea5d37c2f18d/rpds_py-0.26.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f53ec51f9d24e9638a40cabb95078ade8c99251945dad8d57bf4aabe86ecee35", size = 346692, upload-time = "2025-07-01T15:54:58.561Z" }, + { url = "https://files.pythonhosted.org/packages/e3/03/7e50423c04d78daf391da3cc4330bdb97042fc192a58b186f2d5deb7befd/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab504c4d654e4a29558eaa5bb8cea5fdc1703ea60a8099ffd9c758472cf913f", size = 379415, upload-time = "2025-07-01T15:54:59.751Z" }, + { url = "https://files.pythonhosted.org/packages/57/00/d11ee60d4d3b16808432417951c63df803afb0e0fc672b5e8d07e9edaaae/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fd0641abca296bc1a00183fe44f7fced8807ed49d501f188faa642d0e4975b83", size = 391783, upload-time = "2025-07-01T15:55:00.898Z" }, + { url = "https://files.pythonhosted.org/packages/08/b3/1069c394d9c0d6d23c5b522e1f6546b65793a22950f6e0210adcc6f97c3e/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b312fecc1d017b5327afa81d4da1480f51c68810963a7336d92203dbb3d4f1", size = 512844, upload-time = "2025-07-01T15:55:02.201Z" }, + { url = "https://files.pythonhosted.org/packages/08/3b/c4fbf0926800ed70b2c245ceca99c49f066456755f5d6eb8863c2c51e6d0/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c741107203954f6fc34d3066d213d0a0c40f7bb5aafd698fb39888af277c70d8", size = 402105, upload-time = "2025-07-01T15:55:03.698Z" }, + { url = "https://files.pythonhosted.org/packages/1c/b0/db69b52ca07413e568dae9dc674627a22297abb144c4d6022c6d78f1e5cc/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc3e55a7db08dc9a6ed5fb7103019d2c1a38a349ac41901f9f66d7f95750942f", size = 383440, upload-time = "2025-07-01T15:55:05.398Z" }, + { url = "https://files.pythonhosted.org/packages/4c/e1/c65255ad5b63903e56b3bb3ff9dcc3f4f5c3badde5d08c741ee03903e951/rpds_py-0.26.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e851920caab2dbcae311fd28f4313c6953993893eb5c1bb367ec69d9a39e7ed", size = 412759, upload-time = "2025-07-01T15:55:08.316Z" }, + { url = "https://files.pythonhosted.org/packages/e4/22/bb731077872377a93c6e93b8a9487d0406c70208985831034ccdeed39c8e/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:dfbf280da5f876d0b00c81f26bedce274e72a678c28845453885a9b3c22ae632", size = 556032, upload-time = "2025-07-01T15:55:09.52Z" }, + { url = "https://files.pythonhosted.org/packages/e0/8b/393322ce7bac5c4530fb96fc79cc9ea2f83e968ff5f6e873f905c493e1c4/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1cc81d14ddfa53d7f3906694d35d54d9d3f850ef8e4e99ee68bc0d1e5fed9a9c", size = 585416, upload-time = "2025-07-01T15:55:11.216Z" }, + { url = "https://files.pythonhosted.org/packages/49/ae/769dc372211835bf759319a7aae70525c6eb523e3371842c65b7ef41c9c6/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dca83c498b4650a91efcf7b88d669b170256bf8017a5db6f3e06c2bf031f57e0", size = 554049, upload-time = "2025-07-01T15:55:13.004Z" }, + { url = "https://files.pythonhosted.org/packages/6b/f9/4c43f9cc203d6ba44ce3146246cdc38619d92c7bd7bad4946a3491bd5b70/rpds_py-0.26.0-cp313-cp313t-win32.whl", hash = "sha256:4d11382bcaf12f80b51d790dee295c56a159633a8e81e6323b16e55d81ae37e9", size = 218428, upload-time = "2025-07-01T15:55:14.486Z" }, + { url = "https://files.pythonhosted.org/packages/7e/8b/9286b7e822036a4a977f2f1e851c7345c20528dbd56b687bb67ed68a8ede/rpds_py-0.26.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff110acded3c22c033e637dd8896e411c7d3a11289b2edf041f86663dbc791e9", size = 231524, upload-time = "2025-07-01T15:55:15.745Z" }, + { url = "https://files.pythonhosted.org/packages/51/f2/b5c85b758a00c513bb0389f8fc8e61eb5423050c91c958cdd21843faa3e6/rpds_py-0.26.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f61a9326f80ca59214d1cceb0a09bb2ece5b2563d4e0cd37bfd5515c28510674", size = 373505, upload-time = "2025-07-01T15:56:34.716Z" }, + { url = "https://files.pythonhosted.org/packages/23/e0/25db45e391251118e915e541995bb5f5ac5691a3b98fb233020ba53afc9b/rpds_py-0.26.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:183f857a53bcf4b1b42ef0f57ca553ab56bdd170e49d8091e96c51c3d69ca696", size = 359468, upload-time = "2025-07-01T15:56:36.219Z" }, + { url = "https://files.pythonhosted.org/packages/0b/73/dd5ee6075bb6491be3a646b301dfd814f9486d924137a5098e61f0487e16/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:941c1cfdf4799d623cf3aa1d326a6b4fdb7a5799ee2687f3516738216d2262fb", size = 382680, upload-time = "2025-07-01T15:56:37.644Z" }, + { url = "https://files.pythonhosted.org/packages/2f/10/84b522ff58763a5c443f5bcedc1820240e454ce4e620e88520f04589e2ea/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72a8d9564a717ee291f554eeb4bfeafe2309d5ec0aa6c475170bdab0f9ee8e88", size = 397035, upload-time = "2025-07-01T15:56:39.241Z" }, + { url = "https://files.pythonhosted.org/packages/06/ea/8667604229a10a520fcbf78b30ccc278977dcc0627beb7ea2c96b3becef0/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:511d15193cbe013619dd05414c35a7dedf2088fcee93c6bbb7c77859765bd4e8", size = 514922, upload-time = "2025-07-01T15:56:40.645Z" }, + { url = "https://files.pythonhosted.org/packages/24/e6/9ed5b625c0661c4882fc8cdf302bf8e96c73c40de99c31e0b95ed37d508c/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aea1f9741b603a8d8fedb0ed5502c2bc0accbc51f43e2ad1337fe7259c2b77a5", size = 402822, upload-time = "2025-07-01T15:56:42.137Z" }, + { url = "https://files.pythonhosted.org/packages/8a/58/212c7b6fd51946047fb45d3733da27e2fa8f7384a13457c874186af691b1/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4019a9d473c708cf2f16415688ef0b4639e07abaa569d72f74745bbeffafa2c7", size = 384336, upload-time = "2025-07-01T15:56:44.239Z" }, + { url = "https://files.pythonhosted.org/packages/aa/f5/a40ba78748ae8ebf4934d4b88e77b98497378bc2c24ba55ebe87a4e87057/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:093d63b4b0f52d98ebae33b8c50900d3d67e0666094b1be7a12fffd7f65de74b", size = 416871, upload-time = "2025-07-01T15:56:46.284Z" }, + { url = "https://files.pythonhosted.org/packages/d5/a6/33b1fc0c9f7dcfcfc4a4353daa6308b3ece22496ceece348b3e7a7559a09/rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2abe21d8ba64cded53a2a677e149ceb76dcf44284202d737178afe7ba540c1eb", size = 559439, upload-time = "2025-07-01T15:56:48.549Z" }, + { url = "https://files.pythonhosted.org/packages/71/2d/ceb3f9c12f8cfa56d34995097f6cd99da1325642c60d1b6680dd9df03ed8/rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:4feb7511c29f8442cbbc28149a92093d32e815a28aa2c50d333826ad2a20fdf0", size = 588380, upload-time = "2025-07-01T15:56:50.086Z" }, + { url = "https://files.pythonhosted.org/packages/c8/ed/9de62c2150ca8e2e5858acf3f4f4d0d180a38feef9fdab4078bea63d8dba/rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e99685fc95d386da368013e7fb4269dd39c30d99f812a8372d62f244f662709c", size = 555334, upload-time = "2025-07-01T15:56:51.703Z" }, +] + +[[package]] +name = "rsa" +version = "4.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyasn1" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/da/8a/22b7beea3ee0d44b1916c0c1cb0ee3af23b700b6da9f04991899d0c555d4/rsa-4.9.1.tar.gz", hash = "sha256:e7bdbfdb5497da4c07dfd35530e1a902659db6ff241e39d9953cad06ebd0ae75", size = 29034, upload-time = "2025-04-16T09:51:18.218Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/8d/0133e4eb4beed9e425d9a98ed6e081a55d195481b7632472be1af08d2f6b/rsa-4.9.1-py3-none-any.whl", hash = "sha256:68635866661c6836b8d39430f97a996acbd61bfa49406748ea243539fe239762", size = 34696, upload-time = "2025-04-16T09:51:17.142Z" }, +] + +[[package]] +name = "ruff" +version = "0.12.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9b/ce/8d7dbedede481245b489b769d27e2934730791a9a82765cb94566c6e6abd/ruff-0.12.4.tar.gz", hash = "sha256:13efa16df6c6eeb7d0f091abae50f58e9522f3843edb40d56ad52a5a4a4b6873", size = 5131435, upload-time = "2025-07-17T17:27:19.138Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ae/9f/517bc5f61bad205b7f36684ffa5415c013862dee02f55f38a217bdbe7aa4/ruff-0.12.4-py3-none-linux_armv6l.whl", hash = "sha256:cb0d261dac457ab939aeb247e804125a5d521b21adf27e721895b0d3f83a0d0a", size = 10188824, upload-time = "2025-07-17T17:26:31.412Z" }, + { url = "https://files.pythonhosted.org/packages/28/83/691baae5a11fbbde91df01c565c650fd17b0eabed259e8b7563de17c6529/ruff-0.12.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:55c0f4ca9769408d9b9bac530c30d3e66490bd2beb2d3dae3e4128a1f05c7442", size = 10884521, upload-time = "2025-07-17T17:26:35.084Z" }, + { url = "https://files.pythonhosted.org/packages/d6/8d/756d780ff4076e6dd035d058fa220345f8c458391f7edfb1c10731eedc75/ruff-0.12.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:a8224cc3722c9ad9044da7f89c4c1ec452aef2cfe3904365025dd2f51daeae0e", size = 10277653, upload-time = "2025-07-17T17:26:37.897Z" }, + { url = "https://files.pythonhosted.org/packages/8d/97/8eeee0f48ece153206dce730fc9e0e0ca54fd7f261bb3d99c0a4343a1892/ruff-0.12.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9949d01d64fa3672449a51ddb5d7548b33e130240ad418884ee6efa7a229586", size = 10485993, upload-time = "2025-07-17T17:26:40.68Z" }, + { url = "https://files.pythonhosted.org/packages/49/b8/22a43d23a1f68df9b88f952616c8508ea6ce4ed4f15353b8168c48b2d7e7/ruff-0.12.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:be0593c69df9ad1465e8a2d10e3defd111fdb62dcd5be23ae2c06da77e8fcffb", size = 10022824, upload-time = "2025-07-17T17:26:43.564Z" }, + { url = "https://files.pythonhosted.org/packages/cd/70/37c234c220366993e8cffcbd6cadbf332bfc848cbd6f45b02bade17e0149/ruff-0.12.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7dea966bcb55d4ecc4cc3270bccb6f87a337326c9dcd3c07d5b97000dbff41c", size = 11524414, upload-time = "2025-07-17T17:26:46.219Z" }, + { url = "https://files.pythonhosted.org/packages/14/77/c30f9964f481b5e0e29dd6a1fae1f769ac3fd468eb76fdd5661936edd262/ruff-0.12.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:afcfa3ab5ab5dd0e1c39bf286d829e042a15e966b3726eea79528e2e24d8371a", size = 12419216, upload-time = "2025-07-17T17:26:48.883Z" }, + { url = "https://files.pythonhosted.org/packages/6e/79/af7fe0a4202dce4ef62c5e33fecbed07f0178f5b4dd9c0d2fcff5ab4a47c/ruff-0.12.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c057ce464b1413c926cdb203a0f858cd52f3e73dcb3270a3318d1630f6395bb3", size = 11976756, upload-time = "2025-07-17T17:26:51.754Z" }, + { url = "https://files.pythonhosted.org/packages/09/d1/33fb1fc00e20a939c305dbe2f80df7c28ba9193f7a85470b982815a2dc6a/ruff-0.12.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e64b90d1122dc2713330350626b10d60818930819623abbb56535c6466cce045", size = 11020019, upload-time = "2025-07-17T17:26:54.265Z" }, + { url = "https://files.pythonhosted.org/packages/64/f4/e3cd7f7bda646526f09693e2e02bd83d85fff8a8222c52cf9681c0d30843/ruff-0.12.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2abc48f3d9667fdc74022380b5c745873499ff827393a636f7a59da1515e7c57", size = 11277890, upload-time = "2025-07-17T17:26:56.914Z" }, + { url = "https://files.pythonhosted.org/packages/5e/d0/69a85fb8b94501ff1a4f95b7591505e8983f38823da6941eb5b6badb1e3a/ruff-0.12.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:2b2449dc0c138d877d629bea151bee8c0ae3b8e9c43f5fcaafcd0c0d0726b184", size = 10348539, upload-time = "2025-07-17T17:26:59.381Z" }, + { url = "https://files.pythonhosted.org/packages/16/a0/91372d1cb1678f7d42d4893b88c252b01ff1dffcad09ae0c51aa2542275f/ruff-0.12.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:56e45bb11f625db55f9b70477062e6a1a04d53628eda7784dce6e0f55fd549eb", size = 10009579, upload-time = "2025-07-17T17:27:02.462Z" }, + { url = "https://files.pythonhosted.org/packages/23/1b/c4a833e3114d2cc0f677e58f1df6c3b20f62328dbfa710b87a1636a5e8eb/ruff-0.12.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:478fccdb82ca148a98a9ff43658944f7ab5ec41c3c49d77cd99d44da019371a1", size = 10942982, upload-time = "2025-07-17T17:27:05.343Z" }, + { url = "https://files.pythonhosted.org/packages/ff/ce/ce85e445cf0a5dd8842f2f0c6f0018eedb164a92bdf3eda51984ffd4d989/ruff-0.12.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:0fc426bec2e4e5f4c4f182b9d2ce6a75c85ba9bcdbe5c6f2a74fcb8df437df4b", size = 11343331, upload-time = "2025-07-17T17:27:08.652Z" }, + { url = "https://files.pythonhosted.org/packages/35/cf/441b7fc58368455233cfb5b77206c849b6dfb48b23de532adcc2e50ccc06/ruff-0.12.4-py3-none-win32.whl", hash = "sha256:4de27977827893cdfb1211d42d84bc180fceb7b72471104671c59be37041cf93", size = 10267904, upload-time = "2025-07-17T17:27:11.814Z" }, + { url = "https://files.pythonhosted.org/packages/ce/7e/20af4a0df5e1299e7368d5ea4350412226afb03d95507faae94c80f00afd/ruff-0.12.4-py3-none-win_amd64.whl", hash = "sha256:fe0b9e9eb23736b453143d72d2ceca5db323963330d5b7859d60d101147d461a", size = 11209038, upload-time = "2025-07-17T17:27:14.417Z" }, + { url = "https://files.pythonhosted.org/packages/11/02/8857d0dfb8f44ef299a5dfd898f673edefb71e3b533b3b9d2db4c832dd13/ruff-0.12.4-py3-none-win_arm64.whl", hash = "sha256:0618ec4442a83ab545e5b71202a5c0ed7791e8471435b94e655b570a5031a98e", size = 10469336, upload-time = "2025-07-17T17:27:16.913Z" }, +] + +[[package]] +name = "send2trash" +version = "1.8.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fd/3a/aec9b02217bb79b87bbc1a21bc6abc51e3d5dcf65c30487ac96c0908c722/Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf", size = 17394, upload-time = "2024-04-07T00:01:09.267Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/b0/4562db6223154aa4e22f939003cb92514c79f3d4dccca3444253fd17f902/Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9", size = 18072, upload-time = "2024-04-07T00:01:07.438Z" }, +] + +[[package]] +name = "setuptools" +version = "80.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/5d/3bf57dcd21979b887f014ea83c24ae194cfcd12b9e0fda66b957c69d1fca/setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c", size = 1319958, upload-time = "2025-05-27T00:56:51.443Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922", size = 1201486, upload-time = "2025-05-27T00:56:49.664Z" }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload-time = "2024-02-25T23:20:04.057Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" }, +] + +[[package]] +name = "soupsieve" +version = "2.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418, upload-time = "2025-04-20T18:50:08.518Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677, upload-time = "2025-04-20T18:50:07.196Z" }, +] + +[[package]] +name = "sqlalchemy" +version = "2.0.41" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "greenlet", marker = "platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64'" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/66/45b165c595ec89aa7dcc2c1cd222ab269bc753f1fc7a1e68f8481bd957bf/sqlalchemy-2.0.41.tar.gz", hash = "sha256:edba70118c4be3c2b1f90754d308d0b79c6fe2c0fdc52d8ddf603916f83f4db9", size = 9689424, upload-time = "2025-05-14T17:10:32.339Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/37/4e/b00e3ffae32b74b5180e15d2ab4040531ee1bef4c19755fe7926622dc958/sqlalchemy-2.0.41-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6375cd674fe82d7aa9816d1cb96ec592bac1726c11e0cafbf40eeee9a4516b5f", size = 2121232, upload-time = "2025-05-14T17:48:20.444Z" }, + { url = "https://files.pythonhosted.org/packages/ef/30/6547ebb10875302074a37e1970a5dce7985240665778cfdee2323709f749/sqlalchemy-2.0.41-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9f8c9fdd15a55d9465e590a402f42082705d66b05afc3ffd2d2eb3c6ba919560", size = 2110897, upload-time = "2025-05-14T17:48:21.634Z" }, + { url = "https://files.pythonhosted.org/packages/9e/21/59df2b41b0f6c62da55cd64798232d7349a9378befa7f1bb18cf1dfd510a/sqlalchemy-2.0.41-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32f9dc8c44acdee06c8fc6440db9eae8b4af8b01e4b1aee7bdd7241c22edff4f", size = 3273313, upload-time = "2025-05-14T17:51:56.205Z" }, + { url = "https://files.pythonhosted.org/packages/62/e4/b9a7a0e5c6f79d49bcd6efb6e90d7536dc604dab64582a9dec220dab54b6/sqlalchemy-2.0.41-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90c11ceb9a1f482c752a71f203a81858625d8df5746d787a4786bca4ffdf71c6", size = 3273807, upload-time = "2025-05-14T17:55:26.928Z" }, + { url = "https://files.pythonhosted.org/packages/39/d8/79f2427251b44ddee18676c04eab038d043cff0e764d2d8bb08261d6135d/sqlalchemy-2.0.41-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:911cc493ebd60de5f285bcae0491a60b4f2a9f0f5c270edd1c4dbaef7a38fc04", size = 3209632, upload-time = "2025-05-14T17:51:59.384Z" }, + { url = "https://files.pythonhosted.org/packages/d4/16/730a82dda30765f63e0454918c982fb7193f6b398b31d63c7c3bd3652ae5/sqlalchemy-2.0.41-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03968a349db483936c249f4d9cd14ff2c296adfa1290b660ba6516f973139582", size = 3233642, upload-time = "2025-05-14T17:55:29.901Z" }, + { url = "https://files.pythonhosted.org/packages/04/61/c0d4607f7799efa8b8ea3c49b4621e861c8f5c41fd4b5b636c534fcb7d73/sqlalchemy-2.0.41-cp311-cp311-win32.whl", hash = "sha256:293cd444d82b18da48c9f71cd7005844dbbd06ca19be1ccf6779154439eec0b8", size = 2086475, upload-time = "2025-05-14T17:56:02.095Z" }, + { url = "https://files.pythonhosted.org/packages/9d/8e/8344f8ae1cb6a479d0741c02cd4f666925b2bf02e2468ddaf5ce44111f30/sqlalchemy-2.0.41-cp311-cp311-win_amd64.whl", hash = "sha256:3d3549fc3e40667ec7199033a4e40a2f669898a00a7b18a931d3efb4c7900504", size = 2110903, upload-time = "2025-05-14T17:56:03.499Z" }, + { url = "https://files.pythonhosted.org/packages/3e/2a/f1f4e068b371154740dd10fb81afb5240d5af4aa0087b88d8b308b5429c2/sqlalchemy-2.0.41-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:81f413674d85cfd0dfcd6512e10e0f33c19c21860342a4890c3a2b59479929f9", size = 2119645, upload-time = "2025-05-14T17:55:24.854Z" }, + { url = "https://files.pythonhosted.org/packages/9b/e8/c664a7e73d36fbfc4730f8cf2bf930444ea87270f2825efbe17bf808b998/sqlalchemy-2.0.41-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:598d9ebc1e796431bbd068e41e4de4dc34312b7aa3292571bb3674a0cb415dd1", size = 2107399, upload-time = "2025-05-14T17:55:28.097Z" }, + { url = "https://files.pythonhosted.org/packages/5c/78/8a9cf6c5e7135540cb682128d091d6afa1b9e48bd049b0d691bf54114f70/sqlalchemy-2.0.41-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a104c5694dfd2d864a6f91b0956eb5d5883234119cb40010115fd45a16da5e70", size = 3293269, upload-time = "2025-05-14T17:50:38.227Z" }, + { url = "https://files.pythonhosted.org/packages/3c/35/f74add3978c20de6323fb11cb5162702670cc7a9420033befb43d8d5b7a4/sqlalchemy-2.0.41-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6145afea51ff0af7f2564a05fa95eb46f542919e6523729663a5d285ecb3cf5e", size = 3303364, upload-time = "2025-05-14T17:51:49.829Z" }, + { url = "https://files.pythonhosted.org/packages/6a/d4/c990f37f52c3f7748ebe98883e2a0f7d038108c2c5a82468d1ff3eec50b7/sqlalchemy-2.0.41-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b46fa6eae1cd1c20e6e6f44e19984d438b6b2d8616d21d783d150df714f44078", size = 3229072, upload-time = "2025-05-14T17:50:39.774Z" }, + { url = "https://files.pythonhosted.org/packages/15/69/cab11fecc7eb64bc561011be2bd03d065b762d87add52a4ca0aca2e12904/sqlalchemy-2.0.41-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41836fe661cc98abfae476e14ba1906220f92c4e528771a8a3ae6a151242d2ae", size = 3268074, upload-time = "2025-05-14T17:51:51.736Z" }, + { url = "https://files.pythonhosted.org/packages/5c/ca/0c19ec16858585d37767b167fc9602593f98998a68a798450558239fb04a/sqlalchemy-2.0.41-cp312-cp312-win32.whl", hash = "sha256:a8808d5cf866c781150d36a3c8eb3adccfa41a8105d031bf27e92c251e3969d6", size = 2084514, upload-time = "2025-05-14T17:55:49.915Z" }, + { url = "https://files.pythonhosted.org/packages/7f/23/4c2833d78ff3010a4e17f984c734f52b531a8c9060a50429c9d4b0211be6/sqlalchemy-2.0.41-cp312-cp312-win_amd64.whl", hash = "sha256:5b14e97886199c1f52c14629c11d90c11fbb09e9334fa7bb5f6d068d9ced0ce0", size = 2111557, upload-time = "2025-05-14T17:55:51.349Z" }, + { url = "https://files.pythonhosted.org/packages/d3/ad/2e1c6d4f235a97eeef52d0200d8ddda16f6c4dd70ae5ad88c46963440480/sqlalchemy-2.0.41-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4eeb195cdedaf17aab6b247894ff2734dcead6c08f748e617bfe05bd5a218443", size = 2115491, upload-time = "2025-05-14T17:55:31.177Z" }, + { url = "https://files.pythonhosted.org/packages/cf/8d/be490e5db8400dacc89056f78a52d44b04fbf75e8439569d5b879623a53b/sqlalchemy-2.0.41-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d4ae769b9c1c7757e4ccce94b0641bc203bbdf43ba7a2413ab2523d8d047d8dc", size = 2102827, upload-time = "2025-05-14T17:55:34.921Z" }, + { url = "https://files.pythonhosted.org/packages/a0/72/c97ad430f0b0e78efaf2791342e13ffeafcbb3c06242f01a3bb8fe44f65d/sqlalchemy-2.0.41-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a62448526dd9ed3e3beedc93df9bb6b55a436ed1474db31a2af13b313a70a7e1", size = 3225224, upload-time = "2025-05-14T17:50:41.418Z" }, + { url = "https://files.pythonhosted.org/packages/5e/51/5ba9ea3246ea068630acf35a6ba0d181e99f1af1afd17e159eac7e8bc2b8/sqlalchemy-2.0.41-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc56c9788617b8964ad02e8fcfeed4001c1f8ba91a9e1f31483c0dffb207002a", size = 3230045, upload-time = "2025-05-14T17:51:54.722Z" }, + { url = "https://files.pythonhosted.org/packages/78/2f/8c14443b2acea700c62f9b4a8bad9e49fc1b65cfb260edead71fd38e9f19/sqlalchemy-2.0.41-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c153265408d18de4cc5ded1941dcd8315894572cddd3c58df5d5b5705b3fa28d", size = 3159357, upload-time = "2025-05-14T17:50:43.483Z" }, + { url = "https://files.pythonhosted.org/packages/fc/b2/43eacbf6ccc5276d76cea18cb7c3d73e294d6fb21f9ff8b4eef9b42bbfd5/sqlalchemy-2.0.41-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f67766965996e63bb46cfbf2ce5355fc32d9dd3b8ad7e536a920ff9ee422e23", size = 3197511, upload-time = "2025-05-14T17:51:57.308Z" }, + { url = "https://files.pythonhosted.org/packages/fa/2e/677c17c5d6a004c3c45334ab1dbe7b7deb834430b282b8a0f75ae220c8eb/sqlalchemy-2.0.41-cp313-cp313-win32.whl", hash = "sha256:bfc9064f6658a3d1cadeaa0ba07570b83ce6801a1314985bf98ec9b95d74e15f", size = 2082420, upload-time = "2025-05-14T17:55:52.69Z" }, + { url = "https://files.pythonhosted.org/packages/e9/61/e8c1b9b6307c57157d328dd8b8348ddc4c47ffdf1279365a13b2b98b8049/sqlalchemy-2.0.41-cp313-cp313-win_amd64.whl", hash = "sha256:82ca366a844eb551daff9d2e6e7a9e5e76d2612c8564f58db6c19a726869c1df", size = 2108329, upload-time = "2025-05-14T17:55:54.495Z" }, + { url = "https://files.pythonhosted.org/packages/1c/fc/9ba22f01b5cdacc8f5ed0d22304718d2c758fce3fd49a5372b886a86f37c/sqlalchemy-2.0.41-py3-none-any.whl", hash = "sha256:57df5dc6fdb5ed1a88a1ed2195fd31927e705cad62dedd86b46972752a80f576", size = 1911224, upload-time = "2025-05-14T17:39:42.154Z" }, +] + +[[package]] +name = "sse-starlette" +version = "2.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/07/3e/eae74d8d33e3262bae0a7e023bb43d8bdd27980aa3557333f4632611151f/sse_starlette-2.4.1.tar.gz", hash = "sha256:7c8a800a1ca343e9165fc06bbda45c78e4c6166320707ae30b416c42da070926", size = 18635, upload-time = "2025-07-06T09:41:33.631Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e4/f1/6c7eaa8187ba789a6dd6d74430307478d2a91c23a5452ab339b6fbe15a08/sse_starlette-2.4.1-py3-none-any.whl", hash = "sha256:08b77ea898ab1a13a428b2b6f73cfe6d0e607a7b4e15b9bb23e4a37b087fd39a", size = 10824, upload-time = "2025-07-06T09:41:32.321Z" }, +] + +[[package]] +name = "stack-data" +version = "0.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asttokens" }, + { name = "executing" }, + { name = "pure-eval" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707, upload-time = "2023-09-30T13:58:05.479Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload-time = "2023-09-30T13:58:03.53Z" }, +] + +[[package]] +name = "starlette" +version = "0.47.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/04/57/d062573f391d062710d4088fa1369428c38d51460ab6fedff920efef932e/starlette-0.47.2.tar.gz", hash = "sha256:6ae9aa5db235e4846decc1e7b79c4f346adf41e9777aebeb49dfd09bbd7023d8", size = 2583948, upload-time = "2025-07-20T17:31:58.522Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/1f/b876b1f83aef204198a42dc101613fefccb32258e5428b5f9259677864b4/starlette-0.47.2-py3-none-any.whl", hash = "sha256:c5847e96134e5c5371ee9fac6fdf1a67336d5815e09eb2a01fdb57a351ef915b", size = 72984, upload-time = "2025-07-20T17:31:56.738Z" }, +] + +[[package]] +name = "tavily-python" +version = "0.7.10" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "httpx" }, + { name = "requests" }, + { name = "tiktoken" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/04/0e/d4aa0f4dec298298b510ee5209f5ff29352bbbba106fd7ea0221ba8840dc/tavily_python-0.7.10.tar.gz", hash = "sha256:c87b4c0549ab2e416cf4ac3da8fe3ce5db106288408b06e197d4b5ba8ec7ead9", size = 19275, upload-time = "2025-07-17T23:57:01.239Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/60/4c4678a28b3b5061aa2ab45b215290d3a71810e7996bafdf6b7313e75fb3/tavily_python-0.7.10-py3-none-any.whl", hash = "sha256:a99958e14dd091271611be7fb1e1a8a86f5bff3a9022b9626f4c4f1513338088", size = 15786, upload-time = "2025-07-17T23:56:58.404Z" }, +] + +[[package]] +name = "tenacity" +version = "9.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036, upload-time = "2025-04-02T08:25:09.966Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248, upload-time = "2025-04-02T08:25:07.678Z" }, +] + +[[package]] +name = "terminado" +version = "0.18.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess", marker = "os_name != 'nt'" }, + { name = "pywinpty", marker = "os_name == 'nt'" }, + { name = "tornado" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8a/11/965c6fd8e5cc254f1fe142d547387da17a8ebfd75a3455f637c663fb38a0/terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e", size = 32701, upload-time = "2024-03-12T14:34:39.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0", size = 14154, upload-time = "2024-03-12T14:34:36.569Z" }, +] + +[[package]] +name = "tiktoken" +version = "0.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "regex" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ea/cf/756fedf6981e82897f2d570dd25fa597eb3f4459068ae0572d7e888cfd6f/tiktoken-0.9.0.tar.gz", hash = "sha256:d02a5ca6a938e0490e1ff957bc48c8b078c88cb83977be1625b1fd8aac792c5d", size = 35991, upload-time = "2025-02-14T06:03:01.003Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4d/ae/4613a59a2a48e761c5161237fc850eb470b4bb93696db89da51b79a871f1/tiktoken-0.9.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:f32cc56168eac4851109e9b5d327637f15fd662aa30dd79f964b7c39fbadd26e", size = 1065987, upload-time = "2025-02-14T06:02:14.174Z" }, + { url = "https://files.pythonhosted.org/packages/3f/86/55d9d1f5b5a7e1164d0f1538a85529b5fcba2b105f92db3622e5d7de6522/tiktoken-0.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:45556bc41241e5294063508caf901bf92ba52d8ef9222023f83d2483a3055348", size = 1009155, upload-time = "2025-02-14T06:02:15.384Z" }, + { url = "https://files.pythonhosted.org/packages/03/58/01fb6240df083b7c1916d1dcb024e2b761213c95d576e9f780dfb5625a76/tiktoken-0.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03935988a91d6d3216e2ec7c645afbb3d870b37bcb67ada1943ec48678e7ee33", size = 1142898, upload-time = "2025-02-14T06:02:16.666Z" }, + { url = "https://files.pythonhosted.org/packages/b1/73/41591c525680cd460a6becf56c9b17468d3711b1df242c53d2c7b2183d16/tiktoken-0.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b3d80aad8d2c6b9238fc1a5524542087c52b860b10cbf952429ffb714bc1136", size = 1197535, upload-time = "2025-02-14T06:02:18.595Z" }, + { url = "https://files.pythonhosted.org/packages/7d/7c/1069f25521c8f01a1a182f362e5c8e0337907fae91b368b7da9c3e39b810/tiktoken-0.9.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b2a21133be05dc116b1d0372af051cd2c6aa1d2188250c9b553f9fa49301b336", size = 1259548, upload-time = "2025-02-14T06:02:20.729Z" }, + { url = "https://files.pythonhosted.org/packages/6f/07/c67ad1724b8e14e2b4c8cca04b15da158733ac60136879131db05dda7c30/tiktoken-0.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:11a20e67fdf58b0e2dea7b8654a288e481bb4fc0289d3ad21291f8d0849915fb", size = 893895, upload-time = "2025-02-14T06:02:22.67Z" }, + { url = "https://files.pythonhosted.org/packages/cf/e5/21ff33ecfa2101c1bb0f9b6df750553bd873b7fb532ce2cb276ff40b197f/tiktoken-0.9.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e88f121c1c22b726649ce67c089b90ddda8b9662545a8aeb03cfef15967ddd03", size = 1065073, upload-time = "2025-02-14T06:02:24.768Z" }, + { url = "https://files.pythonhosted.org/packages/8e/03/a95e7b4863ee9ceec1c55983e4cc9558bcfd8f4f80e19c4f8a99642f697d/tiktoken-0.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a6600660f2f72369acb13a57fb3e212434ed38b045fd8cc6cdd74947b4b5d210", size = 1008075, upload-time = "2025-02-14T06:02:26.92Z" }, + { url = "https://files.pythonhosted.org/packages/40/10/1305bb02a561595088235a513ec73e50b32e74364fef4de519da69bc8010/tiktoken-0.9.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95e811743b5dfa74f4b227927ed86cbc57cad4df859cb3b643be797914e41794", size = 1140754, upload-time = "2025-02-14T06:02:28.124Z" }, + { url = "https://files.pythonhosted.org/packages/1b/40/da42522018ca496432ffd02793c3a72a739ac04c3794a4914570c9bb2925/tiktoken-0.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99376e1370d59bcf6935c933cb9ba64adc29033b7e73f5f7569f3aad86552b22", size = 1196678, upload-time = "2025-02-14T06:02:29.845Z" }, + { url = "https://files.pythonhosted.org/packages/5c/41/1e59dddaae270ba20187ceb8aa52c75b24ffc09f547233991d5fd822838b/tiktoken-0.9.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:badb947c32739fb6ddde173e14885fb3de4d32ab9d8c591cbd013c22b4c31dd2", size = 1259283, upload-time = "2025-02-14T06:02:33.838Z" }, + { url = "https://files.pythonhosted.org/packages/5b/64/b16003419a1d7728d0d8c0d56a4c24325e7b10a21a9dd1fc0f7115c02f0a/tiktoken-0.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:5a62d7a25225bafed786a524c1b9f0910a1128f4232615bf3f8257a73aaa3b16", size = 894897, upload-time = "2025-02-14T06:02:36.265Z" }, + { url = "https://files.pythonhosted.org/packages/7a/11/09d936d37f49f4f494ffe660af44acd2d99eb2429d60a57c71318af214e0/tiktoken-0.9.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2b0e8e05a26eda1249e824156d537015480af7ae222ccb798e5234ae0285dbdb", size = 1064919, upload-time = "2025-02-14T06:02:37.494Z" }, + { url = "https://files.pythonhosted.org/packages/80/0e/f38ba35713edb8d4197ae602e80837d574244ced7fb1b6070b31c29816e0/tiktoken-0.9.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:27d457f096f87685195eea0165a1807fae87b97b2161fe8c9b1df5bd74ca6f63", size = 1007877, upload-time = "2025-02-14T06:02:39.516Z" }, + { url = "https://files.pythonhosted.org/packages/fe/82/9197f77421e2a01373e27a79dd36efdd99e6b4115746ecc553318ecafbf0/tiktoken-0.9.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cf8ded49cddf825390e36dd1ad35cd49589e8161fdcb52aa25f0583e90a3e01", size = 1140095, upload-time = "2025-02-14T06:02:41.791Z" }, + { url = "https://files.pythonhosted.org/packages/f2/bb/4513da71cac187383541facd0291c4572b03ec23c561de5811781bbd988f/tiktoken-0.9.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc156cb314119a8bb9748257a2eaebd5cc0753b6cb491d26694ed42fc7cb3139", size = 1195649, upload-time = "2025-02-14T06:02:43Z" }, + { url = "https://files.pythonhosted.org/packages/fa/5c/74e4c137530dd8504e97e3a41729b1103a4ac29036cbfd3250b11fd29451/tiktoken-0.9.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:cd69372e8c9dd761f0ab873112aba55a0e3e506332dd9f7522ca466e817b1b7a", size = 1258465, upload-time = "2025-02-14T06:02:45.046Z" }, + { url = "https://files.pythonhosted.org/packages/de/a8/8f499c179ec900783ffe133e9aab10044481679bb9aad78436d239eee716/tiktoken-0.9.0-cp313-cp313-win_amd64.whl", hash = "sha256:5ea0edb6f83dc56d794723286215918c1cde03712cbbafa0348b33448faf5b95", size = 894669, upload-time = "2025-02-14T06:02:47.341Z" }, +] + +[[package]] +name = "tinycss2" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085, upload-time = "2024-10-24T14:58:29.895Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610, upload-time = "2024-10-24T14:58:28.029Z" }, +] + +[[package]] +name = "tokenizers" +version = "0.20.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "huggingface-hub" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/da/25/b1681c1c30ea3ea6e584ae3fffd552430b12faa599b558c4c4783f56d7ff/tokenizers-0.20.3.tar.gz", hash = "sha256:2278b34c5d0dd78e087e1ca7f9b1dcbf129d80211afa645f214bd6e051037539", size = 340513, upload-time = "2024-11-05T17:34:10.403Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/93/6742ef9206409d5ce1fdf44d5ca1687cdc3847ba0485424e2c731e6bcf67/tokenizers-0.20.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:585b51e06ca1f4839ce7759941e66766d7b060dccfdc57c4ca1e5b9a33013a90", size = 2674224, upload-time = "2024-11-05T17:30:49.972Z" }, + { url = "https://files.pythonhosted.org/packages/aa/14/e75ece72e99f6ef9ae07777ca9fdd78608f69466a5cecf636e9bd2f25d5c/tokenizers-0.20.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:61cbf11954f3b481d08723ebd048ba4b11e582986f9be74d2c3bdd9293a4538d", size = 2558991, upload-time = "2024-11-05T17:30:51.666Z" }, + { url = "https://files.pythonhosted.org/packages/46/54/033b5b2ba0c3ae01e026c6f7ced147d41a2fa1c573d00a66cb97f6d7f9b3/tokenizers-0.20.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef820880d5e4e8484e2fa54ff8d297bb32519eaa7815694dc835ace9130a3eea", size = 2892476, upload-time = "2024-11-05T17:30:53.505Z" }, + { url = "https://files.pythonhosted.org/packages/e6/b0/cc369fb3297d61f3311cab523d16d48c869dc2f0ba32985dbf03ff811041/tokenizers-0.20.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:67ef4dcb8841a4988cd00dd288fb95dfc8e22ed021f01f37348fd51c2b055ba9", size = 2802775, upload-time = "2024-11-05T17:30:55.229Z" }, + { url = "https://files.pythonhosted.org/packages/1a/74/62ad983e8ea6a63e04ed9c5be0b605056bf8aac2f0125f9b5e0b3e2b89fa/tokenizers-0.20.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff1ef8bd47a02b0dc191688ccb4da53600df5d4c9a05a4b68e1e3de4823e78eb", size = 3086138, upload-time = "2024-11-05T17:30:57.332Z" }, + { url = "https://files.pythonhosted.org/packages/6b/ac/4637ba619db25094998523f9e6f5b456e1db1f8faa770a3d925d436db0c3/tokenizers-0.20.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:444d188186eab3148baf0615b522461b41b1f0cd58cd57b862ec94b6ac9780f1", size = 3098076, upload-time = "2024-11-05T17:30:59.455Z" }, + { url = "https://files.pythonhosted.org/packages/58/ce/9793f2dc2ce529369807c9c74e42722b05034af411d60f5730b720388c7d/tokenizers-0.20.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:37c04c032c1442740b2c2d925f1857885c07619224a533123ac7ea71ca5713da", size = 3379650, upload-time = "2024-11-05T17:31:01.264Z" }, + { url = "https://files.pythonhosted.org/packages/50/f6/2841de926bc4118af996eaf0bdf0ea5b012245044766ffc0347e6c968e63/tokenizers-0.20.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:453c7769d22231960ee0e883d1005c93c68015025a5e4ae56275406d94a3c907", size = 2994005, upload-time = "2024-11-05T17:31:02.985Z" }, + { url = "https://files.pythonhosted.org/packages/a3/b2/00915c4fed08e9505d37cf6eaab45b12b4bff8f6719d459abcb9ead86a4b/tokenizers-0.20.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4bb31f7b2847e439766aaa9cc7bccf7ac7088052deccdb2275c952d96f691c6a", size = 8977488, upload-time = "2024-11-05T17:31:04.424Z" }, + { url = "https://files.pythonhosted.org/packages/e9/ac/1c069e7808181ff57bcf2d39e9b6fbee9133a55410e6ebdaa89f67c32e83/tokenizers-0.20.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:843729bf0f991b29655a069a2ff58a4c24375a553c70955e15e37a90dd4e045c", size = 9294935, upload-time = "2024-11-05T17:31:06.882Z" }, + { url = "https://files.pythonhosted.org/packages/50/47/722feb70ee68d1c4412b12d0ea4acc2713179fd63f054913990f9e259492/tokenizers-0.20.3-cp311-none-win32.whl", hash = "sha256:efcce3a927b1e20ca694ba13f7a68c59b0bd859ef71e441db68ee42cf20c2442", size = 2197175, upload-time = "2024-11-05T17:31:09.385Z" }, + { url = "https://files.pythonhosted.org/packages/75/68/1b4f928b15a36ed278332ac75d66d7eb65d865bf344d049c452c18447bf9/tokenizers-0.20.3-cp311-none-win_amd64.whl", hash = "sha256:88301aa0801f225725b6df5dea3d77c80365ff2362ca7e252583f2b4809c4cc0", size = 2381616, upload-time = "2024-11-05T17:31:10.685Z" }, + { url = "https://files.pythonhosted.org/packages/07/00/92a08af2a6b0c88c50f1ab47d7189e695722ad9714b0ee78ea5e1e2e1def/tokenizers-0.20.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:49d12a32e190fad0e79e5bdb788d05da2f20d8e006b13a70859ac47fecf6ab2f", size = 2667951, upload-time = "2024-11-05T17:31:12.356Z" }, + { url = "https://files.pythonhosted.org/packages/ec/9a/e17a352f0bffbf415cf7d73756f5c73a3219225fc5957bc2f39d52c61684/tokenizers-0.20.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:282848cacfb9c06d5e51489f38ec5aa0b3cd1e247a023061945f71f41d949d73", size = 2555167, upload-time = "2024-11-05T17:31:13.839Z" }, + { url = "https://files.pythonhosted.org/packages/27/37/d108df55daf4f0fcf1f58554692ff71687c273d870a34693066f0847be96/tokenizers-0.20.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abe4e08c7d0cd6154c795deb5bf81d2122f36daf075e0c12a8b050d824ef0a64", size = 2898389, upload-time = "2024-11-05T17:31:15.12Z" }, + { url = "https://files.pythonhosted.org/packages/b2/27/32f29da16d28f59472fa7fb38e7782069748c7e9ab9854522db20341624c/tokenizers-0.20.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ca94fc1b73b3883c98f0c88c77700b13d55b49f1071dfd57df2b06f3ff7afd64", size = 2795866, upload-time = "2024-11-05T17:31:16.857Z" }, + { url = "https://files.pythonhosted.org/packages/29/4e/8a9a3c89e128c4a40f247b501c10279d2d7ade685953407c4d94c8c0f7a7/tokenizers-0.20.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef279c7e239f95c8bdd6ff319d9870f30f0d24915b04895f55b1adcf96d6c60d", size = 3085446, upload-time = "2024-11-05T17:31:18.392Z" }, + { url = "https://files.pythonhosted.org/packages/b4/3b/a2a7962c496ebcd95860ca99e423254f760f382cd4bd376f8895783afaf5/tokenizers-0.20.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:16384073973f6ccbde9852157a4fdfe632bb65208139c9d0c0bd0176a71fd67f", size = 3094378, upload-time = "2024-11-05T17:31:20.329Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f4/a8a33f0192a1629a3bd0afcad17d4d221bbf9276da4b95d226364208d5eb/tokenizers-0.20.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:312d522caeb8a1a42ebdec87118d99b22667782b67898a76c963c058a7e41d4f", size = 3385755, upload-time = "2024-11-05T17:31:21.778Z" }, + { url = "https://files.pythonhosted.org/packages/9e/65/c83cb3545a65a9eaa2e13b22c93d5e00bd7624b354a44adbdc93d5d9bd91/tokenizers-0.20.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2b7cb962564785a83dafbba0144ecb7f579f1d57d8c406cdaa7f32fe32f18ad", size = 2997679, upload-time = "2024-11-05T17:31:23.134Z" }, + { url = "https://files.pythonhosted.org/packages/55/e9/a80d4e592307688a67c7c59ab77e03687b6a8bd92eb5db763a2c80f93f57/tokenizers-0.20.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:124c5882ebb88dadae1fc788a582299fcd3a8bd84fc3e260b9918cf28b8751f5", size = 8989296, upload-time = "2024-11-05T17:31:24.953Z" }, + { url = "https://files.pythonhosted.org/packages/90/af/60c957af8d2244321124e893828f1a4817cde1a2d08d09d423b73f19bd2f/tokenizers-0.20.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2b6e54e71f84c4202111a489879005cb14b92616a87417f6c102c833af961ea2", size = 9303621, upload-time = "2024-11-05T17:31:27.341Z" }, + { url = "https://files.pythonhosted.org/packages/be/a9/96172310ee141009646d63a1ca267c099c462d747fe5ef7e33f74e27a683/tokenizers-0.20.3-cp312-none-win32.whl", hash = "sha256:83d9bfbe9af86f2d9df4833c22e94d94750f1d0cd9bfb22a7bb90a86f61cdb1c", size = 2188979, upload-time = "2024-11-05T17:31:29.483Z" }, + { url = "https://files.pythonhosted.org/packages/bd/68/61d85ae7ae96dde7d0974ff3538db75d5cdc29be2e4329cd7fc51a283e22/tokenizers-0.20.3-cp312-none-win_amd64.whl", hash = "sha256:44def74cee574d609a36e17c8914311d1b5dbcfe37c55fd29369d42591b91cf2", size = 2380725, upload-time = "2024-11-05T17:31:31.315Z" }, + { url = "https://files.pythonhosted.org/packages/07/19/36e9eaafb229616cb8502b42030fa7fe347550e76cb618de71b498fc3222/tokenizers-0.20.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:e0b630e0b536ef0e3c8b42c685c1bc93bd19e98c0f1543db52911f8ede42cf84", size = 2666813, upload-time = "2024-11-05T17:31:32.783Z" }, + { url = "https://files.pythonhosted.org/packages/b9/c7/e2ce1d4f756c8a62ef93fdb4df877c2185339b6d63667b015bf70ea9d34b/tokenizers-0.20.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a02d160d2b19bcbfdf28bd9a4bf11be4cb97d0499c000d95d4c4b1a4312740b6", size = 2555354, upload-time = "2024-11-05T17:31:34.208Z" }, + { url = "https://files.pythonhosted.org/packages/7c/cf/5309c2d173a6a67f9ec8697d8e710ea32418de6fd8541778032c202a1c3e/tokenizers-0.20.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e3d80d89b068bc30034034b5319218c7c0a91b00af19679833f55f3becb6945", size = 2897745, upload-time = "2024-11-05T17:31:35.733Z" }, + { url = "https://files.pythonhosted.org/packages/2c/e5/af3078e32f225e680e69d61f78855880edb8d53f5850a1834d519b2b103f/tokenizers-0.20.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:174a54910bed1b089226512b4458ea60d6d6fd93060254734d3bc3540953c51c", size = 2794385, upload-time = "2024-11-05T17:31:37.497Z" }, + { url = "https://files.pythonhosted.org/packages/0b/a7/bc421fe46650cc4eb4a913a236b88c243204f32c7480684d2f138925899e/tokenizers-0.20.3-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:098b8a632b8656aa5802c46689462c5c48f02510f24029d71c208ec2c822e771", size = 3084580, upload-time = "2024-11-05T17:31:39.456Z" }, + { url = "https://files.pythonhosted.org/packages/c6/22/97e1e95ee81f75922c9f569c23cb2b1fdc7f5a7a29c4c9fae17e63f751a6/tokenizers-0.20.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:78c8c143e3ae41e718588281eb3e212c2b31623c9d6d40410ec464d7d6221fb5", size = 3093581, upload-time = "2024-11-05T17:31:41.224Z" }, + { url = "https://files.pythonhosted.org/packages/d5/14/f0df0ee3b9e516121e23c0099bccd7b9f086ba9150021a750e99b16ce56f/tokenizers-0.20.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b26b0aadb18cd8701077362ba359a06683662d5cafe3e8e8aba10eb05c037f1", size = 3385934, upload-time = "2024-11-05T17:31:43.811Z" }, + { url = "https://files.pythonhosted.org/packages/66/52/7a171bd4929e3ffe61a29b4340fe5b73484709f92a8162a18946e124c34c/tokenizers-0.20.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07d7851a72717321022f3774e84aa9d595a041d643fafa2e87fbc9b18711dac0", size = 2997311, upload-time = "2024-11-05T17:31:46.224Z" }, + { url = "https://files.pythonhosted.org/packages/7c/64/f1993bb8ebf775d56875ca0d50a50f2648bfbbb143da92fe2e6ceeb4abd5/tokenizers-0.20.3-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:bd44e48a430ada902c6266a8245f5036c4fe744fcb51f699999fbe82aa438797", size = 8988601, upload-time = "2024-11-05T17:31:47.907Z" }, + { url = "https://files.pythonhosted.org/packages/d6/3f/49fa63422159bbc2f2a4ac5bfc597d04d4ec0ad3d2ef46649b5e9a340e37/tokenizers-0.20.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:a4c186bb006ccbe1f5cc4e0380d1ce7806f5955c244074fd96abc55e27b77f01", size = 9303950, upload-time = "2024-11-05T17:31:50.674Z" }, + { url = "https://files.pythonhosted.org/packages/66/11/79d91aeb2817ad1993ef61c690afe73e6dbedbfb21918b302ef5a2ba9bfb/tokenizers-0.20.3-cp313-none-win32.whl", hash = "sha256:6e19e0f1d854d6ab7ea0c743d06e764d1d9a546932be0a67f33087645f00fe13", size = 2188941, upload-time = "2024-11-05T17:31:53.334Z" }, + { url = "https://files.pythonhosted.org/packages/c2/ff/ac8410f868fb8b14b5e619efa304aa119cb8a40bd7df29fc81a898e64f99/tokenizers-0.20.3-cp313-none-win_amd64.whl", hash = "sha256:d50ede425c7e60966a9680d41b58b3a0950afa1bb570488e2972fa61662c4273", size = 2380269, upload-time = "2024-11-05T17:31:54.796Z" }, +] + +[[package]] +name = "tornado" +version = "6.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/51/89/c72771c81d25d53fe33e3dca61c233b665b2780f21820ba6fd2c6793c12b/tornado-6.5.1.tar.gz", hash = "sha256:84ceece391e8eb9b2b95578db65e920d2a61070260594819589609ba9bc6308c", size = 509934, upload-time = "2025-05-22T18:15:38.788Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/89/f4532dee6843c9e0ebc4e28d4be04c67f54f60813e4bf73d595fe7567452/tornado-6.5.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d50065ba7fd11d3bd41bcad0825227cc9a95154bad83239357094c36708001f7", size = 441948, upload-time = "2025-05-22T18:15:20.862Z" }, + { url = "https://files.pythonhosted.org/packages/15/9a/557406b62cffa395d18772e0cdcf03bed2fff03b374677348eef9f6a3792/tornado-6.5.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9ca370f717997cb85606d074b0e5b247282cf5e2e1611568b8821afe0342d6", size = 440112, upload-time = "2025-05-22T18:15:22.591Z" }, + { url = "https://files.pythonhosted.org/packages/55/82/7721b7319013a3cf881f4dffa4f60ceff07b31b394e459984e7a36dc99ec/tornado-6.5.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b77e9dfa7ed69754a54c89d82ef746398be82f749df69c4d3abe75c4d1ff4888", size = 443672, upload-time = "2025-05-22T18:15:24.027Z" }, + { url = "https://files.pythonhosted.org/packages/7d/42/d11c4376e7d101171b94e03cef0cbce43e823ed6567ceda571f54cf6e3ce/tornado-6.5.1-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253b76040ee3bab8bcf7ba9feb136436a3787208717a1fb9f2c16b744fba7331", size = 443019, upload-time = "2025-05-22T18:15:25.735Z" }, + { url = "https://files.pythonhosted.org/packages/7d/f7/0c48ba992d875521ac761e6e04b0a1750f8150ae42ea26df1852d6a98942/tornado-6.5.1-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:308473f4cc5a76227157cdf904de33ac268af770b2c5f05ca6c1161d82fdd95e", size = 443252, upload-time = "2025-05-22T18:15:27.499Z" }, + { url = "https://files.pythonhosted.org/packages/89/46/d8d7413d11987e316df4ad42e16023cd62666a3c0dfa1518ffa30b8df06c/tornado-6.5.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:caec6314ce8a81cf69bd89909f4b633b9f523834dc1a352021775d45e51d9401", size = 443930, upload-time = "2025-05-22T18:15:29.299Z" }, + { url = "https://files.pythonhosted.org/packages/78/b2/f8049221c96a06df89bed68260e8ca94beca5ea532ffc63b1175ad31f9cc/tornado-6.5.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:13ce6e3396c24e2808774741331638ee6c2f50b114b97a55c5b442df65fd9692", size = 443351, upload-time = "2025-05-22T18:15:31.038Z" }, + { url = "https://files.pythonhosted.org/packages/76/ff/6a0079e65b326cc222a54720a748e04a4db246870c4da54ece4577bfa702/tornado-6.5.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5cae6145f4cdf5ab24744526cc0f55a17d76f02c98f4cff9daa08ae9a217448a", size = 443328, upload-time = "2025-05-22T18:15:32.426Z" }, + { url = "https://files.pythonhosted.org/packages/49/18/e3f902a1d21f14035b5bc6246a8c0f51e0eef562ace3a2cea403c1fb7021/tornado-6.5.1-cp39-abi3-win32.whl", hash = "sha256:e0a36e1bc684dca10b1aa75a31df8bdfed656831489bc1e6a6ebed05dc1ec365", size = 444396, upload-time = "2025-05-22T18:15:34.205Z" }, + { url = "https://files.pythonhosted.org/packages/7b/09/6526e32bf1049ee7de3bebba81572673b19a2a8541f795d887e92af1a8bc/tornado-6.5.1-cp39-abi3-win_amd64.whl", hash = "sha256:908e7d64567cecd4c2b458075589a775063453aeb1d2a1853eedb806922f568b", size = 444840, upload-time = "2025-05-22T18:15:36.1Z" }, + { url = "https://files.pythonhosted.org/packages/55/a7/535c44c7bea4578e48281d83c615219f3ab19e6abc67625ef637c73987be/tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7", size = 443596, upload-time = "2025-05-22T18:15:37.433Z" }, +] + +[[package]] +name = "tqdm" +version = "4.67.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737, upload-time = "2024-11-24T20:12:22.481Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540, upload-time = "2024-11-24T20:12:19.698Z" }, +] + +[[package]] +name = "traitlets" +version = "5.14.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621, upload-time = "2024-04-19T11:11:49.746Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload-time = "2024-04-19T11:11:46.763Z" }, +] + +[[package]] +name = "types-python-dateutil" +version = "2.9.0.20250708" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c9/95/6bdde7607da2e1e99ec1c1672a759d42f26644bbacf939916e086db34870/types_python_dateutil-2.9.0.20250708.tar.gz", hash = "sha256:ccdbd75dab2d6c9696c350579f34cffe2c281e4c5f27a585b2a2438dd1d5c8ab", size = 15834, upload-time = "2025-07-08T03:14:03.382Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/72/52/43e70a8e57fefb172c22a21000b03ebcc15e47e97f5cb8495b9c2832efb4/types_python_dateutil-2.9.0.20250708-py3-none-any.whl", hash = "sha256:4d6d0cc1cc4d24a2dc3816024e502564094497b713f7befda4d5bc7a8e3fd21f", size = 17724, upload-time = "2025-07-08T03:14:02.593Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.14.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/98/5a/da40306b885cc8c09109dc2e1abd358d5684b1425678151cdaed4731c822/typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36", size = 107673, upload-time = "2025-07-04T13:28:34.16Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b5/00/d631e67a838026495268c2f6884f3711a15a9a2a96cd244fdaea53b823fb/typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76", size = 43906, upload-time = "2025-07-04T13:28:32.743Z" }, +] + +[[package]] +name = "typing-inspect" +version = "0.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mypy-extensions" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dc/74/1789779d91f1961fa9438e9a8710cdae6bd138c80d7303996933d117264a/typing_inspect-0.9.0.tar.gz", hash = "sha256:b23fc42ff6f6ef6954e4852c1fb512cdd18dbea03134f91f856a95ccc9461f78", size = 13825, upload-time = "2023-05-24T20:25:47.612Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/65/f3/107a22063bf27bdccf2024833d3445f4eea42b2e598abfbd46f6a63b6cb0/typing_inspect-0.9.0-py3-none-any.whl", hash = "sha256:9ee6fc59062311ef8547596ab6b955e1b8aa46242d854bfc78f4f6b0eff35f9f", size = 8827, upload-time = "2023-05-24T20:25:45.287Z" }, +] + +[[package]] +name = "typing-inspection" +version = "0.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726, upload-time = "2025-05-21T18:55:23.885Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552, upload-time = "2025-05-21T18:55:22.152Z" }, +] + +[[package]] +name = "tzdata" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380, upload-time = "2025-03-23T13:54:43.652Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload-time = "2025-03-23T13:54:41.845Z" }, +] + +[[package]] +name = "uri-template" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/31/c7/0336f2bd0bcbada6ccef7aaa25e443c118a704f828a0620c6fa0207c1b64/uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7", size = 21678, upload-time = "2023-06-21T01:49:05.374Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363", size = 11140, upload-time = "2023-06-21T01:49:03.467Z" }, +] + +[[package]] +name = "urllib3" +version = "2.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185, upload-time = "2025-06-18T14:07:41.644Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload-time = "2025-06-18T14:07:40.39Z" }, +] + +[[package]] +name = "uvicorn" +version = "0.35.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5e/42/e0e305207bb88c6b8d3061399c6a961ffe5fbb7e2aa63c9234df7259e9cd/uvicorn-0.35.0.tar.gz", hash = "sha256:bc662f087f7cf2ce11a1d7fd70b90c9f98ef2e2831556dd078d131b96cc94a01", size = 78473, upload-time = "2025-06-28T16:15:46.058Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/e2/dc81b1bd1dcfe91735810265e9d26bc8ec5da45b4c0f6237e286819194c3/uvicorn-0.35.0-py3-none-any.whl", hash = "sha256:197535216b25ff9b785e29a0b79199f55222193d47f820816e7da751e9bc8d4a", size = 66406, upload-time = "2025-06-28T16:15:44.816Z" }, +] + +[[package]] +name = "wcwidth" +version = "0.2.13" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/63/53559446a878410fc5a5974feb13d31d78d752eb18aeba59c7fef1af7598/wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5", size = 101301, upload-time = "2024-01-06T02:10:57.829Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166, upload-time = "2024-01-06T02:10:55.763Z" }, +] + +[[package]] +name = "webcolors" +version = "24.11.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7b/29/061ec845fb58521848f3739e466efd8250b4b7b98c1b6c5bf4d40b419b7e/webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6", size = 45064, upload-time = "2024-11-11T07:43:24.224Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/e8/c0e05e4684d13459f93d312077a9a2efbe04d59c393bc2b8802248c908d4/webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9", size = 14934, upload-time = "2024-11-11T07:43:22.529Z" }, +] + +[[package]] +name = "webencodings" +version = "0.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721, upload-time = "2017-04-05T20:21:34.189Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774, upload-time = "2017-04-05T20:21:32.581Z" }, +] + +[[package]] +name = "websocket-client" +version = "1.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e6/30/fba0d96b4b5fbf5948ed3f4681f7da2f9f64512e1d303f94b4cc174c24a5/websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da", size = 54648, upload-time = "2024-04-23T22:16:16.976Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526", size = 58826, upload-time = "2024-04-23T22:16:14.422Z" }, +] + +[[package]] +name = "websockets" +version = "15.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/21/e6/26d09fab466b7ca9c7737474c52be4f76a40301b08362eb2dbc19dcc16c1/websockets-15.0.1.tar.gz", hash = "sha256:82544de02076bafba038ce055ee6412d68da13ab47f0c60cab827346de828dee", size = 177016, upload-time = "2025-03-05T20:03:41.606Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9f/32/18fcd5919c293a398db67443acd33fde142f283853076049824fc58e6f75/websockets-15.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:823c248b690b2fd9303ba00c4f66cd5e2d8c3ba4aa968b2779be9532a4dad431", size = 175423, upload-time = "2025-03-05T20:01:56.276Z" }, + { url = "https://files.pythonhosted.org/packages/76/70/ba1ad96b07869275ef42e2ce21f07a5b0148936688c2baf7e4a1f60d5058/websockets-15.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678999709e68425ae2593acf2e3ebcbcf2e69885a5ee78f9eb80e6e371f1bf57", size = 173082, upload-time = "2025-03-05T20:01:57.563Z" }, + { url = "https://files.pythonhosted.org/packages/86/f2/10b55821dd40eb696ce4704a87d57774696f9451108cff0d2824c97e0f97/websockets-15.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d50fd1ee42388dcfb2b3676132c78116490976f1300da28eb629272d5d93e905", size = 173330, upload-time = "2025-03-05T20:01:59.063Z" }, + { url = "https://files.pythonhosted.org/packages/a5/90/1c37ae8b8a113d3daf1065222b6af61cc44102da95388ac0018fcb7d93d9/websockets-15.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d99e5546bf73dbad5bf3547174cd6cb8ba7273062a23808ffea025ecb1cf8562", size = 182878, upload-time = "2025-03-05T20:02:00.305Z" }, + { url = "https://files.pythonhosted.org/packages/8e/8d/96e8e288b2a41dffafb78e8904ea7367ee4f891dafc2ab8d87e2124cb3d3/websockets-15.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66dd88c918e3287efc22409d426c8f729688d89a0c587c88971a0faa2c2f3792", size = 181883, upload-time = "2025-03-05T20:02:03.148Z" }, + { url = "https://files.pythonhosted.org/packages/93/1f/5d6dbf551766308f6f50f8baf8e9860be6182911e8106da7a7f73785f4c4/websockets-15.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8dd8327c795b3e3f219760fa603dcae1dcc148172290a8ab15158cf85a953413", size = 182252, upload-time = "2025-03-05T20:02:05.29Z" }, + { url = "https://files.pythonhosted.org/packages/d4/78/2d4fed9123e6620cbf1706c0de8a1632e1a28e7774d94346d7de1bba2ca3/websockets-15.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8fdc51055e6ff4adeb88d58a11042ec9a5eae317a0a53d12c062c8a8865909e8", size = 182521, upload-time = "2025-03-05T20:02:07.458Z" }, + { url = "https://files.pythonhosted.org/packages/e7/3b/66d4c1b444dd1a9823c4a81f50231b921bab54eee2f69e70319b4e21f1ca/websockets-15.0.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:693f0192126df6c2327cce3baa7c06f2a117575e32ab2308f7f8216c29d9e2e3", size = 181958, upload-time = "2025-03-05T20:02:09.842Z" }, + { url = "https://files.pythonhosted.org/packages/08/ff/e9eed2ee5fed6f76fdd6032ca5cd38c57ca9661430bb3d5fb2872dc8703c/websockets-15.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54479983bd5fb469c38f2f5c7e3a24f9a4e70594cd68cd1fa6b9340dadaff7cf", size = 181918, upload-time = "2025-03-05T20:02:11.968Z" }, + { url = "https://files.pythonhosted.org/packages/d8/75/994634a49b7e12532be6a42103597b71098fd25900f7437d6055ed39930a/websockets-15.0.1-cp311-cp311-win32.whl", hash = "sha256:16b6c1b3e57799b9d38427dda63edcbe4926352c47cf88588c0be4ace18dac85", size = 176388, upload-time = "2025-03-05T20:02:13.32Z" }, + { url = "https://files.pythonhosted.org/packages/98/93/e36c73f78400a65f5e236cd376713c34182e6663f6889cd45a4a04d8f203/websockets-15.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:27ccee0071a0e75d22cb35849b1db43f2ecd3e161041ac1ee9d2352ddf72f065", size = 176828, upload-time = "2025-03-05T20:02:14.585Z" }, + { url = "https://files.pythonhosted.org/packages/51/6b/4545a0d843594f5d0771e86463606a3988b5a09ca5123136f8a76580dd63/websockets-15.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3e90baa811a5d73f3ca0bcbf32064d663ed81318ab225ee4f427ad4e26e5aff3", size = 175437, upload-time = "2025-03-05T20:02:16.706Z" }, + { url = "https://files.pythonhosted.org/packages/f4/71/809a0f5f6a06522af902e0f2ea2757f71ead94610010cf570ab5c98e99ed/websockets-15.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:592f1a9fe869c778694f0aa806ba0374e97648ab57936f092fd9d87f8bc03665", size = 173096, upload-time = "2025-03-05T20:02:18.832Z" }, + { url = "https://files.pythonhosted.org/packages/3d/69/1a681dd6f02180916f116894181eab8b2e25b31e484c5d0eae637ec01f7c/websockets-15.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0701bc3cfcb9164d04a14b149fd74be7347a530ad3bbf15ab2c678a2cd3dd9a2", size = 173332, upload-time = "2025-03-05T20:02:20.187Z" }, + { url = "https://files.pythonhosted.org/packages/a6/02/0073b3952f5bce97eafbb35757f8d0d54812b6174ed8dd952aa08429bcc3/websockets-15.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8b56bdcdb4505c8078cb6c7157d9811a85790f2f2b3632c7d1462ab5783d215", size = 183152, upload-time = "2025-03-05T20:02:22.286Z" }, + { url = "https://files.pythonhosted.org/packages/74/45/c205c8480eafd114b428284840da0b1be9ffd0e4f87338dc95dc6ff961a1/websockets-15.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0af68c55afbd5f07986df82831c7bff04846928ea8d1fd7f30052638788bc9b5", size = 182096, upload-time = "2025-03-05T20:02:24.368Z" }, + { url = "https://files.pythonhosted.org/packages/14/8f/aa61f528fba38578ec553c145857a181384c72b98156f858ca5c8e82d9d3/websockets-15.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64dee438fed052b52e4f98f76c5790513235efaa1ef7f3f2192c392cd7c91b65", size = 182523, upload-time = "2025-03-05T20:02:25.669Z" }, + { url = "https://files.pythonhosted.org/packages/ec/6d/0267396610add5bc0d0d3e77f546d4cd287200804fe02323797de77dbce9/websockets-15.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d5f6b181bb38171a8ad1d6aa58a67a6aa9d4b38d0f8c5f496b9e42561dfc62fe", size = 182790, upload-time = "2025-03-05T20:02:26.99Z" }, + { url = "https://files.pythonhosted.org/packages/02/05/c68c5adbf679cf610ae2f74a9b871ae84564462955d991178f95a1ddb7dd/websockets-15.0.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5d54b09eba2bada6011aea5375542a157637b91029687eb4fdb2dab11059c1b4", size = 182165, upload-time = "2025-03-05T20:02:30.291Z" }, + { url = "https://files.pythonhosted.org/packages/29/93/bb672df7b2f5faac89761cb5fa34f5cec45a4026c383a4b5761c6cea5c16/websockets-15.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3be571a8b5afed347da347bfcf27ba12b069d9d7f42cb8c7028b5e98bbb12597", size = 182160, upload-time = "2025-03-05T20:02:31.634Z" }, + { url = "https://files.pythonhosted.org/packages/ff/83/de1f7709376dc3ca9b7eeb4b9a07b4526b14876b6d372a4dc62312bebee0/websockets-15.0.1-cp312-cp312-win32.whl", hash = "sha256:c338ffa0520bdb12fbc527265235639fb76e7bc7faafbb93f6ba80d9c06578a9", size = 176395, upload-time = "2025-03-05T20:02:33.017Z" }, + { url = "https://files.pythonhosted.org/packages/7d/71/abf2ebc3bbfa40f391ce1428c7168fb20582d0ff57019b69ea20fa698043/websockets-15.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:fcd5cf9e305d7b8338754470cf69cf81f420459dbae8a3b40cee57417f4614a7", size = 176841, upload-time = "2025-03-05T20:02:34.498Z" }, + { url = "https://files.pythonhosted.org/packages/cb/9f/51f0cf64471a9d2b4d0fc6c534f323b664e7095640c34562f5182e5a7195/websockets-15.0.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ee443ef070bb3b6ed74514f5efaa37a252af57c90eb33b956d35c8e9c10a1931", size = 175440, upload-time = "2025-03-05T20:02:36.695Z" }, + { url = "https://files.pythonhosted.org/packages/8a/05/aa116ec9943c718905997412c5989f7ed671bc0188ee2ba89520e8765d7b/websockets-15.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5a939de6b7b4e18ca683218320fc67ea886038265fd1ed30173f5ce3f8e85675", size = 173098, upload-time = "2025-03-05T20:02:37.985Z" }, + { url = "https://files.pythonhosted.org/packages/ff/0b/33cef55ff24f2d92924923c99926dcce78e7bd922d649467f0eda8368923/websockets-15.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:746ee8dba912cd6fc889a8147168991d50ed70447bf18bcda7039f7d2e3d9151", size = 173329, upload-time = "2025-03-05T20:02:39.298Z" }, + { url = "https://files.pythonhosted.org/packages/31/1d/063b25dcc01faa8fada1469bdf769de3768b7044eac9d41f734fd7b6ad6d/websockets-15.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:595b6c3969023ecf9041b2936ac3827e4623bfa3ccf007575f04c5a6aa318c22", size = 183111, upload-time = "2025-03-05T20:02:40.595Z" }, + { url = "https://files.pythonhosted.org/packages/93/53/9a87ee494a51bf63e4ec9241c1ccc4f7c2f45fff85d5bde2ff74fcb68b9e/websockets-15.0.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c714d2fc58b5ca3e285461a4cc0c9a66bd0e24c5da9911e30158286c9b5be7f", size = 182054, upload-time = "2025-03-05T20:02:41.926Z" }, + { url = "https://files.pythonhosted.org/packages/ff/b2/83a6ddf56cdcbad4e3d841fcc55d6ba7d19aeb89c50f24dd7e859ec0805f/websockets-15.0.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f3c1e2ab208db911594ae5b4f79addeb3501604a165019dd221c0bdcabe4db8", size = 182496, upload-time = "2025-03-05T20:02:43.304Z" }, + { url = "https://files.pythonhosted.org/packages/98/41/e7038944ed0abf34c45aa4635ba28136f06052e08fc2168520bb8b25149f/websockets-15.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:229cf1d3ca6c1804400b0a9790dc66528e08a6a1feec0d5040e8b9eb14422375", size = 182829, upload-time = "2025-03-05T20:02:48.812Z" }, + { url = "https://files.pythonhosted.org/packages/e0/17/de15b6158680c7623c6ef0db361da965ab25d813ae54fcfeae2e5b9ef910/websockets-15.0.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:756c56e867a90fb00177d530dca4b097dd753cde348448a1012ed6c5131f8b7d", size = 182217, upload-time = "2025-03-05T20:02:50.14Z" }, + { url = "https://files.pythonhosted.org/packages/33/2b/1f168cb6041853eef0362fb9554c3824367c5560cbdaad89ac40f8c2edfc/websockets-15.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:558d023b3df0bffe50a04e710bc87742de35060580a293c2a984299ed83bc4e4", size = 182195, upload-time = "2025-03-05T20:02:51.561Z" }, + { url = "https://files.pythonhosted.org/packages/86/eb/20b6cdf273913d0ad05a6a14aed4b9a85591c18a987a3d47f20fa13dcc47/websockets-15.0.1-cp313-cp313-win32.whl", hash = "sha256:ba9e56e8ceeeedb2e080147ba85ffcd5cd0711b89576b83784d8605a7df455fa", size = 176393, upload-time = "2025-03-05T20:02:53.814Z" }, + { url = "https://files.pythonhosted.org/packages/1b/6c/c65773d6cab416a64d191d6ee8a8b1c68a09970ea6909d16965d26bfed1e/websockets-15.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:e09473f095a819042ecb2ab9465aee615bd9c2028e4ef7d933600a8401c79561", size = 176837, upload-time = "2025-03-05T20:02:55.237Z" }, + { url = "https://files.pythonhosted.org/packages/fa/a8/5b41e0da817d64113292ab1f8247140aac61cbf6cfd085d6a0fa77f4984f/websockets-15.0.1-py3-none-any.whl", hash = "sha256:f7a866fbc1e97b5c617ee4116daaa09b722101d4a3c170c787450ba409f9736f", size = 169743, upload-time = "2025-03-05T20:03:39.41Z" }, +] + +[[package]] +name = "widgetsnbextension" +version = "4.0.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/41/53/2e0253c5efd69c9656b1843892052a31c36d37ad42812b5da45c62191f7e/widgetsnbextension-4.0.14.tar.gz", hash = "sha256:a3629b04e3edb893212df862038c7232f62973373869db5084aed739b437b5af", size = 1097428, upload-time = "2025-04-10T13:01:25.628Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ca/51/5447876806d1088a0f8f71e16542bf350918128d0a69437df26047c8e46f/widgetsnbextension-4.0.14-py3-none-any.whl", hash = "sha256:4875a9eaf72fbf5079dc372a51a9f268fc38d46f767cbf85c43a36da5cb9b575", size = 2196503, upload-time = "2025-04-10T13:01:23.086Z" }, +] + +[[package]] +name = "wikipedia-api" +version = "0.8.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/aa/2e35be124dfc7e581480705f912040172f6570cc12e68a245ba9258c32ef/wikipedia_api-0.8.1.tar.gz", hash = "sha256:b31e93b3f5407c1a1ba413ed7326a05379a3c270df6cf6a211aca67a14c5658b", size = 19934, upload-time = "2025-01-19T23:44:33.488Z" } + +[[package]] +name = "xxhash" +version = "3.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/00/5e/d6e5258d69df8b4ed8c83b6664f2b47d30d2dec551a29ad72a6c69eafd31/xxhash-3.5.0.tar.gz", hash = "sha256:84f2caddf951c9cbf8dc2e22a89d4ccf5d86391ac6418fe81e3c67d0cf60b45f", size = 84241, upload-time = "2024-08-17T09:20:38.972Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b8/c7/afed0f131fbda960ff15eee7f304fa0eeb2d58770fade99897984852ef23/xxhash-3.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:02c2e816896dc6f85922ced60097bcf6f008dedfc5073dcba32f9c8dd786f3c1", size = 31969, upload-time = "2024-08-17T09:18:00.852Z" }, + { url = "https://files.pythonhosted.org/packages/8c/0c/7c3bc6d87e5235672fcc2fb42fd5ad79fe1033925f71bf549ee068c7d1ca/xxhash-3.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6027dcd885e21581e46d3c7f682cfb2b870942feeed58a21c29583512c3f09f8", size = 30800, upload-time = "2024-08-17T09:18:01.863Z" }, + { url = "https://files.pythonhosted.org/packages/04/9e/01067981d98069eec1c20201f8c145367698e9056f8bc295346e4ea32dd1/xxhash-3.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1308fa542bbdbf2fa85e9e66b1077eea3a88bef38ee8a06270b4298a7a62a166", size = 221566, upload-time = "2024-08-17T09:18:03.461Z" }, + { url = "https://files.pythonhosted.org/packages/d4/09/d4996de4059c3ce5342b6e1e6a77c9d6c91acce31f6ed979891872dd162b/xxhash-3.5.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c28b2fdcee797e1c1961cd3bcd3d545cab22ad202c846235197935e1df2f8ef7", size = 201214, upload-time = "2024-08-17T09:18:05.616Z" }, + { url = "https://files.pythonhosted.org/packages/62/f5/6d2dc9f8d55a7ce0f5e7bfef916e67536f01b85d32a9fbf137d4cadbee38/xxhash-3.5.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:924361811732ddad75ff23e90efd9ccfda4f664132feecb90895bade6a1b4623", size = 429433, upload-time = "2024-08-17T09:18:06.957Z" }, + { url = "https://files.pythonhosted.org/packages/d9/72/9256303f10e41ab004799a4aa74b80b3c5977d6383ae4550548b24bd1971/xxhash-3.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89997aa1c4b6a5b1e5b588979d1da048a3c6f15e55c11d117a56b75c84531f5a", size = 194822, upload-time = "2024-08-17T09:18:08.331Z" }, + { url = "https://files.pythonhosted.org/packages/34/92/1a3a29acd08248a34b0e6a94f4e0ed9b8379a4ff471f1668e4dce7bdbaa8/xxhash-3.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:685c4f4e8c59837de103344eb1c8a3851f670309eb5c361f746805c5471b8c88", size = 208538, upload-time = "2024-08-17T09:18:10.332Z" }, + { url = "https://files.pythonhosted.org/packages/53/ad/7fa1a109663366de42f724a1cdb8e796a260dbac45047bce153bc1e18abf/xxhash-3.5.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dbd2ecfbfee70bc1a4acb7461fa6af7748ec2ab08ac0fa298f281c51518f982c", size = 216953, upload-time = "2024-08-17T09:18:11.707Z" }, + { url = "https://files.pythonhosted.org/packages/35/02/137300e24203bf2b2a49b48ce898ecce6fd01789c0fcd9c686c0a002d129/xxhash-3.5.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:25b5a51dc3dfb20a10833c8eee25903fd2e14059e9afcd329c9da20609a307b2", size = 203594, upload-time = "2024-08-17T09:18:13.799Z" }, + { url = "https://files.pythonhosted.org/packages/23/03/aeceb273933d7eee248c4322b98b8e971f06cc3880e5f7602c94e5578af5/xxhash-3.5.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a8fb786fb754ef6ff8c120cb96629fb518f8eb5a61a16aac3a979a9dbd40a084", size = 210971, upload-time = "2024-08-17T09:18:15.824Z" }, + { url = "https://files.pythonhosted.org/packages/e3/64/ed82ec09489474cbb35c716b189ddc1521d8b3de12b1b5ab41ce7f70253c/xxhash-3.5.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:a905ad00ad1e1c34fe4e9d7c1d949ab09c6fa90c919860c1534ff479f40fd12d", size = 415050, upload-time = "2024-08-17T09:18:17.142Z" }, + { url = "https://files.pythonhosted.org/packages/71/43/6db4c02dcb488ad4e03bc86d70506c3d40a384ee73c9b5c93338eb1f3c23/xxhash-3.5.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:963be41bcd49f53af6d795f65c0da9b4cc518c0dd9c47145c98f61cb464f4839", size = 192216, upload-time = "2024-08-17T09:18:18.779Z" }, + { url = "https://files.pythonhosted.org/packages/22/6d/db4abec29e7a567455344433d095fdb39c97db6955bb4a2c432e486b4d28/xxhash-3.5.0-cp311-cp311-win32.whl", hash = "sha256:109b436096d0a2dd039c355fa3414160ec4d843dfecc64a14077332a00aeb7da", size = 30120, upload-time = "2024-08-17T09:18:20.009Z" }, + { url = "https://files.pythonhosted.org/packages/52/1c/fa3b61c0cf03e1da4767213672efe186b1dfa4fc901a4a694fb184a513d1/xxhash-3.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:b702f806693201ad6c0a05ddbbe4c8f359626d0b3305f766077d51388a6bac58", size = 30003, upload-time = "2024-08-17T09:18:21.052Z" }, + { url = "https://files.pythonhosted.org/packages/6b/8e/9e6fc572acf6e1cc7ccb01973c213f895cb8668a9d4c2b58a99350da14b7/xxhash-3.5.0-cp311-cp311-win_arm64.whl", hash = "sha256:c4dcb4120d0cc3cc448624147dba64e9021b278c63e34a38789b688fd0da9bf3", size = 26777, upload-time = "2024-08-17T09:18:22.809Z" }, + { url = "https://files.pythonhosted.org/packages/07/0e/1bfce2502c57d7e2e787600b31c83535af83746885aa1a5f153d8c8059d6/xxhash-3.5.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:14470ace8bd3b5d51318782cd94e6f94431974f16cb3b8dc15d52f3b69df8e00", size = 31969, upload-time = "2024-08-17T09:18:24.025Z" }, + { url = "https://files.pythonhosted.org/packages/3f/d6/8ca450d6fe5b71ce521b4e5db69622383d039e2b253e9b2f24f93265b52c/xxhash-3.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:59aa1203de1cb96dbeab595ded0ad0c0056bb2245ae11fac11c0ceea861382b9", size = 30787, upload-time = "2024-08-17T09:18:25.318Z" }, + { url = "https://files.pythonhosted.org/packages/5b/84/de7c89bc6ef63d750159086a6ada6416cc4349eab23f76ab870407178b93/xxhash-3.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08424f6648526076e28fae6ea2806c0a7d504b9ef05ae61d196d571e5c879c84", size = 220959, upload-time = "2024-08-17T09:18:26.518Z" }, + { url = "https://files.pythonhosted.org/packages/fe/86/51258d3e8a8545ff26468c977101964c14d56a8a37f5835bc0082426c672/xxhash-3.5.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:61a1ff00674879725b194695e17f23d3248998b843eb5e933007ca743310f793", size = 200006, upload-time = "2024-08-17T09:18:27.905Z" }, + { url = "https://files.pythonhosted.org/packages/02/0a/96973bd325412feccf23cf3680fd2246aebf4b789122f938d5557c54a6b2/xxhash-3.5.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2f2c61bee5844d41c3eb015ac652a0229e901074951ae48581d58bfb2ba01be", size = 428326, upload-time = "2024-08-17T09:18:29.335Z" }, + { url = "https://files.pythonhosted.org/packages/11/a7/81dba5010f7e733de88af9555725146fc133be97ce36533867f4c7e75066/xxhash-3.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d32a592cac88d18cc09a89172e1c32d7f2a6e516c3dfde1b9adb90ab5df54a6", size = 194380, upload-time = "2024-08-17T09:18:30.706Z" }, + { url = "https://files.pythonhosted.org/packages/fb/7d/f29006ab398a173f4501c0e4977ba288f1c621d878ec217b4ff516810c04/xxhash-3.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:70dabf941dede727cca579e8c205e61121afc9b28516752fd65724be1355cc90", size = 207934, upload-time = "2024-08-17T09:18:32.133Z" }, + { url = "https://files.pythonhosted.org/packages/8a/6e/6e88b8f24612510e73d4d70d9b0c7dff62a2e78451b9f0d042a5462c8d03/xxhash-3.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e5d0ddaca65ecca9c10dcf01730165fd858533d0be84c75c327487c37a906a27", size = 216301, upload-time = "2024-08-17T09:18:33.474Z" }, + { url = "https://files.pythonhosted.org/packages/af/51/7862f4fa4b75a25c3b4163c8a873f070532fe5f2d3f9b3fc869c8337a398/xxhash-3.5.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3e5b5e16c5a480fe5f59f56c30abdeba09ffd75da8d13f6b9b6fd224d0b4d0a2", size = 203351, upload-time = "2024-08-17T09:18:34.889Z" }, + { url = "https://files.pythonhosted.org/packages/22/61/8d6a40f288f791cf79ed5bb113159abf0c81d6efb86e734334f698eb4c59/xxhash-3.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149b7914451eb154b3dfaa721315117ea1dac2cc55a01bfbd4df7c68c5dd683d", size = 210294, upload-time = "2024-08-17T09:18:36.355Z" }, + { url = "https://files.pythonhosted.org/packages/17/02/215c4698955762d45a8158117190261b2dbefe9ae7e5b906768c09d8bc74/xxhash-3.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:eade977f5c96c677035ff39c56ac74d851b1cca7d607ab3d8f23c6b859379cab", size = 414674, upload-time = "2024-08-17T09:18:38.536Z" }, + { url = "https://files.pythonhosted.org/packages/31/5c/b7a8db8a3237cff3d535261325d95de509f6a8ae439a5a7a4ffcff478189/xxhash-3.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fa9f547bd98f5553d03160967866a71056a60960be00356a15ecc44efb40ba8e", size = 192022, upload-time = "2024-08-17T09:18:40.138Z" }, + { url = "https://files.pythonhosted.org/packages/78/e3/dd76659b2811b3fd06892a8beb850e1996b63e9235af5a86ea348f053e9e/xxhash-3.5.0-cp312-cp312-win32.whl", hash = "sha256:f7b58d1fd3551b8c80a971199543379be1cee3d0d409e1f6d8b01c1a2eebf1f8", size = 30170, upload-time = "2024-08-17T09:18:42.163Z" }, + { url = "https://files.pythonhosted.org/packages/d9/6b/1c443fe6cfeb4ad1dcf231cdec96eb94fb43d6498b4469ed8b51f8b59a37/xxhash-3.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:fa0cafd3a2af231b4e113fba24a65d7922af91aeb23774a8b78228e6cd785e3e", size = 30040, upload-time = "2024-08-17T09:18:43.699Z" }, + { url = "https://files.pythonhosted.org/packages/0f/eb/04405305f290173acc0350eba6d2f1a794b57925df0398861a20fbafa415/xxhash-3.5.0-cp312-cp312-win_arm64.whl", hash = "sha256:586886c7e89cb9828bcd8a5686b12e161368e0064d040e225e72607b43858ba2", size = 26796, upload-time = "2024-08-17T09:18:45.29Z" }, + { url = "https://files.pythonhosted.org/packages/c9/b8/e4b3ad92d249be5c83fa72916c9091b0965cb0faeff05d9a0a3870ae6bff/xxhash-3.5.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:37889a0d13b0b7d739cfc128b1c902f04e32de17b33d74b637ad42f1c55101f6", size = 31795, upload-time = "2024-08-17T09:18:46.813Z" }, + { url = "https://files.pythonhosted.org/packages/fc/d8/b3627a0aebfbfa4c12a41e22af3742cf08c8ea84f5cc3367b5de2d039cce/xxhash-3.5.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:97a662338797c660178e682f3bc180277b9569a59abfb5925e8620fba00b9fc5", size = 30792, upload-time = "2024-08-17T09:18:47.862Z" }, + { url = "https://files.pythonhosted.org/packages/c3/cc/762312960691da989c7cd0545cb120ba2a4148741c6ba458aa723c00a3f8/xxhash-3.5.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f85e0108d51092bdda90672476c7d909c04ada6923c14ff9d913c4f7dc8a3bc", size = 220950, upload-time = "2024-08-17T09:18:49.06Z" }, + { url = "https://files.pythonhosted.org/packages/fe/e9/cc266f1042c3c13750e86a535496b58beb12bf8c50a915c336136f6168dc/xxhash-3.5.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cd2fd827b0ba763ac919440042302315c564fdb797294d86e8cdd4578e3bc7f3", size = 199980, upload-time = "2024-08-17T09:18:50.445Z" }, + { url = "https://files.pythonhosted.org/packages/bf/85/a836cd0dc5cc20376de26b346858d0ac9656f8f730998ca4324921a010b9/xxhash-3.5.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:82085c2abec437abebf457c1d12fccb30cc8b3774a0814872511f0f0562c768c", size = 428324, upload-time = "2024-08-17T09:18:51.988Z" }, + { url = "https://files.pythonhosted.org/packages/b4/0e/15c243775342ce840b9ba34aceace06a1148fa1630cd8ca269e3223987f5/xxhash-3.5.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07fda5de378626e502b42b311b049848c2ef38784d0d67b6f30bb5008642f8eb", size = 194370, upload-time = "2024-08-17T09:18:54.164Z" }, + { url = "https://files.pythonhosted.org/packages/87/a1/b028bb02636dfdc190da01951d0703b3d904301ed0ef6094d948983bef0e/xxhash-3.5.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c279f0d2b34ef15f922b77966640ade58b4ccdfef1c4d94b20f2a364617a493f", size = 207911, upload-time = "2024-08-17T09:18:55.509Z" }, + { url = "https://files.pythonhosted.org/packages/80/d5/73c73b03fc0ac73dacf069fdf6036c9abad82de0a47549e9912c955ab449/xxhash-3.5.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:89e66ceed67b213dec5a773e2f7a9e8c58f64daeb38c7859d8815d2c89f39ad7", size = 216352, upload-time = "2024-08-17T09:18:57.073Z" }, + { url = "https://files.pythonhosted.org/packages/b6/2a/5043dba5ddbe35b4fe6ea0a111280ad9c3d4ba477dd0f2d1fe1129bda9d0/xxhash-3.5.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:bcd51708a633410737111e998ceb3b45d3dbc98c0931f743d9bb0a209033a326", size = 203410, upload-time = "2024-08-17T09:18:58.54Z" }, + { url = "https://files.pythonhosted.org/packages/a2/b2/9a8ded888b7b190aed75b484eb5c853ddd48aa2896e7b59bbfbce442f0a1/xxhash-3.5.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3ff2c0a34eae7df88c868be53a8dd56fbdf592109e21d4bfa092a27b0bf4a7bf", size = 210322, upload-time = "2024-08-17T09:18:59.943Z" }, + { url = "https://files.pythonhosted.org/packages/98/62/440083fafbc917bf3e4b67c2ade621920dd905517e85631c10aac955c1d2/xxhash-3.5.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:4e28503dccc7d32e0b9817aa0cbfc1f45f563b2c995b7a66c4c8a0d232e840c7", size = 414725, upload-time = "2024-08-17T09:19:01.332Z" }, + { url = "https://files.pythonhosted.org/packages/75/db/009206f7076ad60a517e016bb0058381d96a007ce3f79fa91d3010f49cc2/xxhash-3.5.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a6c50017518329ed65a9e4829154626f008916d36295b6a3ba336e2458824c8c", size = 192070, upload-time = "2024-08-17T09:19:03.007Z" }, + { url = "https://files.pythonhosted.org/packages/1f/6d/c61e0668943a034abc3a569cdc5aeae37d686d9da7e39cf2ed621d533e36/xxhash-3.5.0-cp313-cp313-win32.whl", hash = "sha256:53a068fe70301ec30d868ece566ac90d873e3bb059cf83c32e76012c889b8637", size = 30172, upload-time = "2024-08-17T09:19:04.355Z" }, + { url = "https://files.pythonhosted.org/packages/96/14/8416dce965f35e3d24722cdf79361ae154fa23e2ab730e5323aa98d7919e/xxhash-3.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:80babcc30e7a1a484eab952d76a4f4673ff601f54d5142c26826502740e70b43", size = 30041, upload-time = "2024-08-17T09:19:05.435Z" }, + { url = "https://files.pythonhosted.org/packages/27/ee/518b72faa2073f5aa8e3262408d284892cb79cf2754ba0c3a5870645ef73/xxhash-3.5.0-cp313-cp313-win_arm64.whl", hash = "sha256:4811336f1ce11cac89dcbd18f3a25c527c16311709a89313c3acaf771def2d4b", size = 26801, upload-time = "2024-08-17T09:19:06.547Z" }, +] + +[[package]] +name = "yarl" +version = "1.20.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna" }, + { name = "multidict" }, + { name = "propcache" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3c/fb/efaa23fa4e45537b827620f04cf8f3cd658b76642205162e072703a5b963/yarl-1.20.1.tar.gz", hash = "sha256:d017a4997ee50c91fd5466cef416231bb82177b93b029906cefc542ce14c35ac", size = 186428, upload-time = "2025-06-10T00:46:09.923Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b1/18/893b50efc2350e47a874c5c2d67e55a0ea5df91186b2a6f5ac52eff887cd/yarl-1.20.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:47ee6188fea634bdfaeb2cc420f5b3b17332e6225ce88149a17c413c77ff269e", size = 133833, upload-time = "2025-06-10T00:43:07.393Z" }, + { url = "https://files.pythonhosted.org/packages/89/ed/b8773448030e6fc47fa797f099ab9eab151a43a25717f9ac043844ad5ea3/yarl-1.20.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d0f6500f69e8402d513e5eedb77a4e1818691e8f45e6b687147963514d84b44b", size = 91070, upload-time = "2025-06-10T00:43:09.538Z" }, + { url = "https://files.pythonhosted.org/packages/e3/e3/409bd17b1e42619bf69f60e4f031ce1ccb29bd7380117a55529e76933464/yarl-1.20.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7a8900a42fcdaad568de58887c7b2f602962356908eedb7628eaf6021a6e435b", size = 89818, upload-time = "2025-06-10T00:43:11.575Z" }, + { url = "https://files.pythonhosted.org/packages/f8/77/64d8431a4d77c856eb2d82aa3de2ad6741365245a29b3a9543cd598ed8c5/yarl-1.20.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bad6d131fda8ef508b36be3ece16d0902e80b88ea7200f030a0f6c11d9e508d4", size = 347003, upload-time = "2025-06-10T00:43:14.088Z" }, + { url = "https://files.pythonhosted.org/packages/8d/d2/0c7e4def093dcef0bd9fa22d4d24b023788b0a33b8d0088b51aa51e21e99/yarl-1.20.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:df018d92fe22aaebb679a7f89fe0c0f368ec497e3dda6cb81a567610f04501f1", size = 336537, upload-time = "2025-06-10T00:43:16.431Z" }, + { url = "https://files.pythonhosted.org/packages/f0/f3/fc514f4b2cf02cb59d10cbfe228691d25929ce8f72a38db07d3febc3f706/yarl-1.20.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f969afbb0a9b63c18d0feecf0db09d164b7a44a053e78a7d05f5df163e43833", size = 362358, upload-time = "2025-06-10T00:43:18.704Z" }, + { url = "https://files.pythonhosted.org/packages/ea/6d/a313ac8d8391381ff9006ac05f1d4331cee3b1efaa833a53d12253733255/yarl-1.20.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:812303eb4aa98e302886ccda58d6b099e3576b1b9276161469c25803a8db277d", size = 357362, upload-time = "2025-06-10T00:43:20.888Z" }, + { url = "https://files.pythonhosted.org/packages/00/70/8f78a95d6935a70263d46caa3dd18e1f223cf2f2ff2037baa01a22bc5b22/yarl-1.20.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98c4a7d166635147924aa0bf9bfe8d8abad6fffa6102de9c99ea04a1376f91e8", size = 348979, upload-time = "2025-06-10T00:43:23.169Z" }, + { url = "https://files.pythonhosted.org/packages/cb/05/42773027968968f4f15143553970ee36ead27038d627f457cc44bbbeecf3/yarl-1.20.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12e768f966538e81e6e7550f9086a6236b16e26cd964cf4df35349970f3551cf", size = 337274, upload-time = "2025-06-10T00:43:27.111Z" }, + { url = "https://files.pythonhosted.org/packages/05/be/665634aa196954156741ea591d2f946f1b78ceee8bb8f28488bf28c0dd62/yarl-1.20.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:fe41919b9d899661c5c28a8b4b0acf704510b88f27f0934ac7a7bebdd8938d5e", size = 363294, upload-time = "2025-06-10T00:43:28.96Z" }, + { url = "https://files.pythonhosted.org/packages/eb/90/73448401d36fa4e210ece5579895731f190d5119c4b66b43b52182e88cd5/yarl-1.20.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:8601bc010d1d7780592f3fc1bdc6c72e2b6466ea34569778422943e1a1f3c389", size = 358169, upload-time = "2025-06-10T00:43:30.701Z" }, + { url = "https://files.pythonhosted.org/packages/c3/b0/fce922d46dc1eb43c811f1889f7daa6001b27a4005587e94878570300881/yarl-1.20.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:daadbdc1f2a9033a2399c42646fbd46da7992e868a5fe9513860122d7fe7a73f", size = 362776, upload-time = "2025-06-10T00:43:32.51Z" }, + { url = "https://files.pythonhosted.org/packages/f1/0d/b172628fce039dae8977fd22caeff3eeebffd52e86060413f5673767c427/yarl-1.20.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:03aa1e041727cb438ca762628109ef1333498b122e4c76dd858d186a37cec845", size = 381341, upload-time = "2025-06-10T00:43:34.543Z" }, + { url = "https://files.pythonhosted.org/packages/6b/9b/5b886d7671f4580209e855974fe1cecec409aa4a89ea58b8f0560dc529b1/yarl-1.20.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:642980ef5e0fa1de5fa96d905c7e00cb2c47cb468bfcac5a18c58e27dbf8d8d1", size = 379988, upload-time = "2025-06-10T00:43:36.489Z" }, + { url = "https://files.pythonhosted.org/packages/73/be/75ef5fd0fcd8f083a5d13f78fd3f009528132a1f2a1d7c925c39fa20aa79/yarl-1.20.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:86971e2795584fe8c002356d3b97ef6c61862720eeff03db2a7c86b678d85b3e", size = 371113, upload-time = "2025-06-10T00:43:38.592Z" }, + { url = "https://files.pythonhosted.org/packages/50/4f/62faab3b479dfdcb741fe9e3f0323e2a7d5cd1ab2edc73221d57ad4834b2/yarl-1.20.1-cp311-cp311-win32.whl", hash = "sha256:597f40615b8d25812f14562699e287f0dcc035d25eb74da72cae043bb884d773", size = 81485, upload-time = "2025-06-10T00:43:41.038Z" }, + { url = "https://files.pythonhosted.org/packages/f0/09/d9c7942f8f05c32ec72cd5c8e041c8b29b5807328b68b4801ff2511d4d5e/yarl-1.20.1-cp311-cp311-win_amd64.whl", hash = "sha256:26ef53a9e726e61e9cd1cda6b478f17e350fb5800b4bd1cd9fe81c4d91cfeb2e", size = 86686, upload-time = "2025-06-10T00:43:42.692Z" }, + { url = "https://files.pythonhosted.org/packages/5f/9a/cb7fad7d73c69f296eda6815e4a2c7ed53fc70c2f136479a91c8e5fbdb6d/yarl-1.20.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdcc4cd244e58593a4379fe60fdee5ac0331f8eb70320a24d591a3be197b94a9", size = 133667, upload-time = "2025-06-10T00:43:44.369Z" }, + { url = "https://files.pythonhosted.org/packages/67/38/688577a1cb1e656e3971fb66a3492501c5a5df56d99722e57c98249e5b8a/yarl-1.20.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b29a2c385a5f5b9c7d9347e5812b6f7ab267193c62d282a540b4fc528c8a9d2a", size = 91025, upload-time = "2025-06-10T00:43:46.295Z" }, + { url = "https://files.pythonhosted.org/packages/50/ec/72991ae51febeb11a42813fc259f0d4c8e0507f2b74b5514618d8b640365/yarl-1.20.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1112ae8154186dfe2de4732197f59c05a83dc814849a5ced892b708033f40dc2", size = 89709, upload-time = "2025-06-10T00:43:48.22Z" }, + { url = "https://files.pythonhosted.org/packages/99/da/4d798025490e89426e9f976702e5f9482005c548c579bdae792a4c37769e/yarl-1.20.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:90bbd29c4fe234233f7fa2b9b121fb63c321830e5d05b45153a2ca68f7d310ee", size = 352287, upload-time = "2025-06-10T00:43:49.924Z" }, + { url = "https://files.pythonhosted.org/packages/1a/26/54a15c6a567aac1c61b18aa0f4b8aa2e285a52d547d1be8bf48abe2b3991/yarl-1.20.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:680e19c7ce3710ac4cd964e90dad99bf9b5029372ba0c7cbfcd55e54d90ea819", size = 345429, upload-time = "2025-06-10T00:43:51.7Z" }, + { url = "https://files.pythonhosted.org/packages/d6/95/9dcf2386cb875b234353b93ec43e40219e14900e046bf6ac118f94b1e353/yarl-1.20.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4a979218c1fdb4246a05efc2cc23859d47c89af463a90b99b7c56094daf25a16", size = 365429, upload-time = "2025-06-10T00:43:53.494Z" }, + { url = "https://files.pythonhosted.org/packages/91/b2/33a8750f6a4bc224242a635f5f2cff6d6ad5ba651f6edcccf721992c21a0/yarl-1.20.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255b468adf57b4a7b65d8aad5b5138dce6a0752c139965711bdcb81bc370e1b6", size = 363862, upload-time = "2025-06-10T00:43:55.766Z" }, + { url = "https://files.pythonhosted.org/packages/98/28/3ab7acc5b51f4434b181b0cee8f1f4b77a65919700a355fb3617f9488874/yarl-1.20.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a97d67108e79cfe22e2b430d80d7571ae57d19f17cda8bb967057ca8a7bf5bfd", size = 355616, upload-time = "2025-06-10T00:43:58.056Z" }, + { url = "https://files.pythonhosted.org/packages/36/a3/f666894aa947a371724ec7cd2e5daa78ee8a777b21509b4252dd7bd15e29/yarl-1.20.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8570d998db4ddbfb9a590b185a0a33dbf8aafb831d07a5257b4ec9948df9cb0a", size = 339954, upload-time = "2025-06-10T00:43:59.773Z" }, + { url = "https://files.pythonhosted.org/packages/f1/81/5f466427e09773c04219d3450d7a1256138a010b6c9f0af2d48565e9ad13/yarl-1.20.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:97c75596019baae7c71ccf1d8cc4738bc08134060d0adfcbe5642f778d1dca38", size = 365575, upload-time = "2025-06-10T00:44:02.051Z" }, + { url = "https://files.pythonhosted.org/packages/2e/e3/e4b0ad8403e97e6c9972dd587388940a032f030ebec196ab81a3b8e94d31/yarl-1.20.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:1c48912653e63aef91ff988c5432832692ac5a1d8f0fb8a33091520b5bbe19ef", size = 365061, upload-time = "2025-06-10T00:44:04.196Z" }, + { url = "https://files.pythonhosted.org/packages/ac/99/b8a142e79eb86c926f9f06452eb13ecb1bb5713bd01dc0038faf5452e544/yarl-1.20.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4c3ae28f3ae1563c50f3d37f064ddb1511ecc1d5584e88c6b7c63cf7702a6d5f", size = 364142, upload-time = "2025-06-10T00:44:06.527Z" }, + { url = "https://files.pythonhosted.org/packages/34/f2/08ed34a4a506d82a1a3e5bab99ccd930a040f9b6449e9fd050320e45845c/yarl-1.20.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c5e9642f27036283550f5f57dc6156c51084b458570b9d0d96100c8bebb186a8", size = 381894, upload-time = "2025-06-10T00:44:08.379Z" }, + { url = "https://files.pythonhosted.org/packages/92/f8/9a3fbf0968eac704f681726eff595dce9b49c8a25cd92bf83df209668285/yarl-1.20.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:2c26b0c49220d5799f7b22c6838409ee9bc58ee5c95361a4d7831f03cc225b5a", size = 383378, upload-time = "2025-06-10T00:44:10.51Z" }, + { url = "https://files.pythonhosted.org/packages/af/85/9363f77bdfa1e4d690957cd39d192c4cacd1c58965df0470a4905253b54f/yarl-1.20.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:564ab3d517e3d01c408c67f2e5247aad4019dcf1969982aba3974b4093279004", size = 374069, upload-time = "2025-06-10T00:44:12.834Z" }, + { url = "https://files.pythonhosted.org/packages/35/99/9918c8739ba271dcd935400cff8b32e3cd319eaf02fcd023d5dcd487a7c8/yarl-1.20.1-cp312-cp312-win32.whl", hash = "sha256:daea0d313868da1cf2fac6b2d3a25c6e3a9e879483244be38c8e6a41f1d876a5", size = 81249, upload-time = "2025-06-10T00:44:14.731Z" }, + { url = "https://files.pythonhosted.org/packages/eb/83/5d9092950565481b413b31a23e75dd3418ff0a277d6e0abf3729d4d1ce25/yarl-1.20.1-cp312-cp312-win_amd64.whl", hash = "sha256:48ea7d7f9be0487339828a4de0360d7ce0efc06524a48e1810f945c45b813698", size = 86710, upload-time = "2025-06-10T00:44:16.716Z" }, + { url = "https://files.pythonhosted.org/packages/8a/e1/2411b6d7f769a07687acee88a062af5833cf1966b7266f3d8dfb3d3dc7d3/yarl-1.20.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:0b5ff0fbb7c9f1b1b5ab53330acbfc5247893069e7716840c8e7d5bb7355038a", size = 131811, upload-time = "2025-06-10T00:44:18.933Z" }, + { url = "https://files.pythonhosted.org/packages/b2/27/584394e1cb76fb771371770eccad35de400e7b434ce3142c2dd27392c968/yarl-1.20.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:14f326acd845c2b2e2eb38fb1346c94f7f3b01a4f5c788f8144f9b630bfff9a3", size = 90078, upload-time = "2025-06-10T00:44:20.635Z" }, + { url = "https://files.pythonhosted.org/packages/bf/9a/3246ae92d4049099f52d9b0fe3486e3b500e29b7ea872d0f152966fc209d/yarl-1.20.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f60e4ad5db23f0b96e49c018596707c3ae89f5d0bd97f0ad3684bcbad899f1e7", size = 88748, upload-time = "2025-06-10T00:44:22.34Z" }, + { url = "https://files.pythonhosted.org/packages/a3/25/35afe384e31115a1a801fbcf84012d7a066d89035befae7c5d4284df1e03/yarl-1.20.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:49bdd1b8e00ce57e68ba51916e4bb04461746e794e7c4d4bbc42ba2f18297691", size = 349595, upload-time = "2025-06-10T00:44:24.314Z" }, + { url = "https://files.pythonhosted.org/packages/28/2d/8aca6cb2cabc8f12efcb82749b9cefecbccfc7b0384e56cd71058ccee433/yarl-1.20.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:66252d780b45189975abfed839616e8fd2dbacbdc262105ad7742c6ae58f3e31", size = 342616, upload-time = "2025-06-10T00:44:26.167Z" }, + { url = "https://files.pythonhosted.org/packages/0b/e9/1312633d16b31acf0098d30440ca855e3492d66623dafb8e25b03d00c3da/yarl-1.20.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59174e7332f5d153d8f7452a102b103e2e74035ad085f404df2e40e663a22b28", size = 361324, upload-time = "2025-06-10T00:44:27.915Z" }, + { url = "https://files.pythonhosted.org/packages/bc/a0/688cc99463f12f7669eec7c8acc71ef56a1521b99eab7cd3abb75af887b0/yarl-1.20.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e3968ec7d92a0c0f9ac34d5ecfd03869ec0cab0697c91a45db3fbbd95fe1b653", size = 359676, upload-time = "2025-06-10T00:44:30.041Z" }, + { url = "https://files.pythonhosted.org/packages/af/44/46407d7f7a56e9a85a4c207724c9f2c545c060380718eea9088f222ba697/yarl-1.20.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1a4fbb50e14396ba3d375f68bfe02215d8e7bc3ec49da8341fe3157f59d2ff5", size = 352614, upload-time = "2025-06-10T00:44:32.171Z" }, + { url = "https://files.pythonhosted.org/packages/b1/91/31163295e82b8d5485d31d9cf7754d973d41915cadce070491778d9c9825/yarl-1.20.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11a62c839c3a8eac2410e951301309426f368388ff2f33799052787035793b02", size = 336766, upload-time = "2025-06-10T00:44:34.494Z" }, + { url = "https://files.pythonhosted.org/packages/b4/8e/c41a5bc482121f51c083c4c2bcd16b9e01e1cf8729e380273a952513a21f/yarl-1.20.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:041eaa14f73ff5a8986b4388ac6bb43a77f2ea09bf1913df7a35d4646db69e53", size = 364615, upload-time = "2025-06-10T00:44:36.856Z" }, + { url = "https://files.pythonhosted.org/packages/e3/5b/61a3b054238d33d70ea06ebba7e58597891b71c699e247df35cc984ab393/yarl-1.20.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:377fae2fef158e8fd9d60b4c8751387b8d1fb121d3d0b8e9b0be07d1b41e83dc", size = 360982, upload-time = "2025-06-10T00:44:39.141Z" }, + { url = "https://files.pythonhosted.org/packages/df/a3/6a72fb83f8d478cb201d14927bc8040af901811a88e0ff2da7842dd0ed19/yarl-1.20.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:1c92f4390e407513f619d49319023664643d3339bd5e5a56a3bebe01bc67ec04", size = 369792, upload-time = "2025-06-10T00:44:40.934Z" }, + { url = "https://files.pythonhosted.org/packages/7c/af/4cc3c36dfc7c077f8dedb561eb21f69e1e9f2456b91b593882b0b18c19dc/yarl-1.20.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:d25ddcf954df1754ab0f86bb696af765c5bfaba39b74095f27eececa049ef9a4", size = 382049, upload-time = "2025-06-10T00:44:42.854Z" }, + { url = "https://files.pythonhosted.org/packages/19/3a/e54e2c4752160115183a66dc9ee75a153f81f3ab2ba4bf79c3c53b33de34/yarl-1.20.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:909313577e9619dcff8c31a0ea2aa0a2a828341d92673015456b3ae492e7317b", size = 384774, upload-time = "2025-06-10T00:44:45.275Z" }, + { url = "https://files.pythonhosted.org/packages/9c/20/200ae86dabfca89060ec6447649f219b4cbd94531e425e50d57e5f5ac330/yarl-1.20.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:793fd0580cb9664548c6b83c63b43c477212c0260891ddf86809e1c06c8b08f1", size = 374252, upload-time = "2025-06-10T00:44:47.31Z" }, + { url = "https://files.pythonhosted.org/packages/83/75/11ee332f2f516b3d094e89448da73d557687f7d137d5a0f48c40ff211487/yarl-1.20.1-cp313-cp313-win32.whl", hash = "sha256:468f6e40285de5a5b3c44981ca3a319a4b208ccc07d526b20b12aeedcfa654b7", size = 81198, upload-time = "2025-06-10T00:44:49.164Z" }, + { url = "https://files.pythonhosted.org/packages/ba/ba/39b1ecbf51620b40ab402b0fc817f0ff750f6d92712b44689c2c215be89d/yarl-1.20.1-cp313-cp313-win_amd64.whl", hash = "sha256:495b4ef2fea40596bfc0affe3837411d6aa3371abcf31aac0ccc4bdd64d4ef5c", size = 86346, upload-time = "2025-06-10T00:44:51.182Z" }, + { url = "https://files.pythonhosted.org/packages/43/c7/669c52519dca4c95153c8ad96dd123c79f354a376346b198f438e56ffeb4/yarl-1.20.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:f60233b98423aab21d249a30eb27c389c14929f47be8430efa7dbd91493a729d", size = 138826, upload-time = "2025-06-10T00:44:52.883Z" }, + { url = "https://files.pythonhosted.org/packages/6a/42/fc0053719b44f6ad04a75d7f05e0e9674d45ef62f2d9ad2c1163e5c05827/yarl-1.20.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:6f3eff4cc3f03d650d8755c6eefc844edde99d641d0dcf4da3ab27141a5f8ddf", size = 93217, upload-time = "2025-06-10T00:44:54.658Z" }, + { url = "https://files.pythonhosted.org/packages/4f/7f/fa59c4c27e2a076bba0d959386e26eba77eb52ea4a0aac48e3515c186b4c/yarl-1.20.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:69ff8439d8ba832d6bed88af2c2b3445977eba9a4588b787b32945871c2444e3", size = 92700, upload-time = "2025-06-10T00:44:56.784Z" }, + { url = "https://files.pythonhosted.org/packages/2f/d4/062b2f48e7c93481e88eff97a6312dca15ea200e959f23e96d8ab898c5b8/yarl-1.20.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cf34efa60eb81dd2645a2e13e00bb98b76c35ab5061a3989c7a70f78c85006d", size = 347644, upload-time = "2025-06-10T00:44:59.071Z" }, + { url = "https://files.pythonhosted.org/packages/89/47/78b7f40d13c8f62b499cc702fdf69e090455518ae544c00a3bf4afc9fc77/yarl-1.20.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:8e0fe9364ad0fddab2688ce72cb7a8e61ea42eff3c7caeeb83874a5d479c896c", size = 323452, upload-time = "2025-06-10T00:45:01.605Z" }, + { url = "https://files.pythonhosted.org/packages/eb/2b/490d3b2dc66f52987d4ee0d3090a147ea67732ce6b4d61e362c1846d0d32/yarl-1.20.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f64fbf81878ba914562c672024089e3401974a39767747691c65080a67b18c1", size = 346378, upload-time = "2025-06-10T00:45:03.946Z" }, + { url = "https://files.pythonhosted.org/packages/66/ad/775da9c8a94ce925d1537f939a4f17d782efef1f973039d821cbe4bcc211/yarl-1.20.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f6342d643bf9a1de97e512e45e4b9560a043347e779a173250824f8b254bd5ce", size = 353261, upload-time = "2025-06-10T00:45:05.992Z" }, + { url = "https://files.pythonhosted.org/packages/4b/23/0ed0922b47a4f5c6eb9065d5ff1e459747226ddce5c6a4c111e728c9f701/yarl-1.20.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56dac5f452ed25eef0f6e3c6a066c6ab68971d96a9fb441791cad0efba6140d3", size = 335987, upload-time = "2025-06-10T00:45:08.227Z" }, + { url = "https://files.pythonhosted.org/packages/3e/49/bc728a7fe7d0e9336e2b78f0958a2d6b288ba89f25a1762407a222bf53c3/yarl-1.20.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7d7f497126d65e2cad8dc5f97d34c27b19199b6414a40cb36b52f41b79014be", size = 329361, upload-time = "2025-06-10T00:45:10.11Z" }, + { url = "https://files.pythonhosted.org/packages/93/8f/b811b9d1f617c83c907e7082a76e2b92b655400e61730cd61a1f67178393/yarl-1.20.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:67e708dfb8e78d8a19169818eeb5c7a80717562de9051bf2413aca8e3696bf16", size = 346460, upload-time = "2025-06-10T00:45:12.055Z" }, + { url = "https://files.pythonhosted.org/packages/70/fd/af94f04f275f95da2c3b8b5e1d49e3e79f1ed8b6ceb0f1664cbd902773ff/yarl-1.20.1-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:595c07bc79af2494365cc96ddeb772f76272364ef7c80fb892ef9d0649586513", size = 334486, upload-time = "2025-06-10T00:45:13.995Z" }, + { url = "https://files.pythonhosted.org/packages/84/65/04c62e82704e7dd0a9b3f61dbaa8447f8507655fd16c51da0637b39b2910/yarl-1.20.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:7bdd2f80f4a7df852ab9ab49484a4dee8030023aa536df41f2d922fd57bf023f", size = 342219, upload-time = "2025-06-10T00:45:16.479Z" }, + { url = "https://files.pythonhosted.org/packages/91/95/459ca62eb958381b342d94ab9a4b6aec1ddec1f7057c487e926f03c06d30/yarl-1.20.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:c03bfebc4ae8d862f853a9757199677ab74ec25424d0ebd68a0027e9c639a390", size = 350693, upload-time = "2025-06-10T00:45:18.399Z" }, + { url = "https://files.pythonhosted.org/packages/a6/00/d393e82dd955ad20617abc546a8f1aee40534d599ff555ea053d0ec9bf03/yarl-1.20.1-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:344d1103e9c1523f32a5ed704d576172d2cabed3122ea90b1d4e11fe17c66458", size = 355803, upload-time = "2025-06-10T00:45:20.677Z" }, + { url = "https://files.pythonhosted.org/packages/9e/ed/c5fb04869b99b717985e244fd93029c7a8e8febdfcffa06093e32d7d44e7/yarl-1.20.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:88cab98aa4e13e1ade8c141daeedd300a4603b7132819c484841bb7af3edce9e", size = 341709, upload-time = "2025-06-10T00:45:23.221Z" }, + { url = "https://files.pythonhosted.org/packages/24/fd/725b8e73ac2a50e78a4534ac43c6addf5c1c2d65380dd48a9169cc6739a9/yarl-1.20.1-cp313-cp313t-win32.whl", hash = "sha256:b121ff6a7cbd4abc28985b6028235491941b9fe8fe226e6fdc539c977ea1739d", size = 86591, upload-time = "2025-06-10T00:45:25.793Z" }, + { url = "https://files.pythonhosted.org/packages/94/c3/b2e9f38bc3e11191981d57ea08cab2166e74ea770024a646617c9cddd9f6/yarl-1.20.1-cp313-cp313t-win_amd64.whl", hash = "sha256:541d050a355bbbc27e55d906bc91cb6fe42f96c01413dd0f4ed5a5240513874f", size = 93003, upload-time = "2025-06-10T00:45:27.752Z" }, + { url = "https://files.pythonhosted.org/packages/b4/2d/2345fce04cfd4bee161bf1e7d9cdc702e3e16109021035dbb24db654a622/yarl-1.20.1-py3-none-any.whl", hash = "sha256:83b8eb083fe4683c6115795d9fc1cfaf2cbbefb19b3a1cb68f6527460f483a77", size = 46542, upload-time = "2025-06-10T00:46:07.521Z" }, +] + +[[package]] +name = "zstandard" +version = "0.23.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation == 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ed/f6/2ac0287b442160a89d726b17a9184a4c615bb5237db763791a7fd16d9df1/zstandard-0.23.0.tar.gz", hash = "sha256:b2d8c62d08e7255f68f7a740bae85b3c9b8e5466baa9cbf7f57f1cde0ac6bc09", size = 681701, upload-time = "2024-07-15T00:18:06.141Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/40/f67e7d2c25a0e2dc1744dd781110b0b60306657f8696cafb7ad7579469bd/zstandard-0.23.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:34895a41273ad33347b2fc70e1bff4240556de3c46c6ea430a7ed91f9042aa4e", size = 788699, upload-time = "2024-07-15T00:14:04.909Z" }, + { url = "https://files.pythonhosted.org/packages/e8/46/66d5b55f4d737dd6ab75851b224abf0afe5774976fe511a54d2eb9063a41/zstandard-0.23.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:77ea385f7dd5b5676d7fd943292ffa18fbf5c72ba98f7d09fc1fb9e819b34c23", size = 633681, upload-time = "2024-07-15T00:14:13.99Z" }, + { url = "https://files.pythonhosted.org/packages/63/b6/677e65c095d8e12b66b8f862b069bcf1f1d781b9c9c6f12eb55000d57583/zstandard-0.23.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:983b6efd649723474f29ed42e1467f90a35a74793437d0bc64a5bf482bedfa0a", size = 4944328, upload-time = "2024-07-15T00:14:16.588Z" }, + { url = "https://files.pythonhosted.org/packages/59/cc/e76acb4c42afa05a9d20827116d1f9287e9c32b7ad58cc3af0721ce2b481/zstandard-0.23.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80a539906390591dd39ebb8d773771dc4db82ace6372c4d41e2d293f8e32b8db", size = 5311955, upload-time = "2024-07-15T00:14:19.389Z" }, + { url = "https://files.pythonhosted.org/packages/78/e4/644b8075f18fc7f632130c32e8f36f6dc1b93065bf2dd87f03223b187f26/zstandard-0.23.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:445e4cb5048b04e90ce96a79b4b63140e3f4ab5f662321975679b5f6360b90e2", size = 5344944, upload-time = "2024-07-15T00:14:22.173Z" }, + { url = "https://files.pythonhosted.org/packages/76/3f/dbafccf19cfeca25bbabf6f2dd81796b7218f768ec400f043edc767015a6/zstandard-0.23.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd30d9c67d13d891f2360b2a120186729c111238ac63b43dbd37a5a40670b8ca", size = 5442927, upload-time = "2024-07-15T00:14:24.825Z" }, + { url = "https://files.pythonhosted.org/packages/0c/c3/d24a01a19b6733b9f218e94d1a87c477d523237e07f94899e1c10f6fd06c/zstandard-0.23.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d20fd853fbb5807c8e84c136c278827b6167ded66c72ec6f9a14b863d809211c", size = 4864910, upload-time = "2024-07-15T00:14:26.982Z" }, + { url = "https://files.pythonhosted.org/packages/1c/a9/cf8f78ead4597264f7618d0875be01f9bc23c9d1d11afb6d225b867cb423/zstandard-0.23.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ed1708dbf4d2e3a1c5c69110ba2b4eb6678262028afd6c6fbcc5a8dac9cda68e", size = 4935544, upload-time = "2024-07-15T00:14:29.582Z" }, + { url = "https://files.pythonhosted.org/packages/2c/96/8af1e3731b67965fb995a940c04a2c20997a7b3b14826b9d1301cf160879/zstandard-0.23.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:be9b5b8659dff1f913039c2feee1aca499cfbc19e98fa12bc85e037c17ec6ca5", size = 5467094, upload-time = "2024-07-15T00:14:40.126Z" }, + { url = "https://files.pythonhosted.org/packages/ff/57/43ea9df642c636cb79f88a13ab07d92d88d3bfe3e550b55a25a07a26d878/zstandard-0.23.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:65308f4b4890aa12d9b6ad9f2844b7ee42c7f7a4fd3390425b242ffc57498f48", size = 4860440, upload-time = "2024-07-15T00:14:42.786Z" }, + { url = "https://files.pythonhosted.org/packages/46/37/edb78f33c7f44f806525f27baa300341918fd4c4af9472fbc2c3094be2e8/zstandard-0.23.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:98da17ce9cbf3bfe4617e836d561e433f871129e3a7ac16d6ef4c680f13a839c", size = 4700091, upload-time = "2024-07-15T00:14:45.184Z" }, + { url = "https://files.pythonhosted.org/packages/c1/f1/454ac3962671a754f3cb49242472df5c2cced4eb959ae203a377b45b1a3c/zstandard-0.23.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:8ed7d27cb56b3e058d3cf684d7200703bcae623e1dcc06ed1e18ecda39fee003", size = 5208682, upload-time = "2024-07-15T00:14:47.407Z" }, + { url = "https://files.pythonhosted.org/packages/85/b2/1734b0fff1634390b1b887202d557d2dd542de84a4c155c258cf75da4773/zstandard-0.23.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:b69bb4f51daf461b15e7b3db033160937d3ff88303a7bc808c67bbc1eaf98c78", size = 5669707, upload-time = "2024-07-15T00:15:03.529Z" }, + { url = "https://files.pythonhosted.org/packages/52/5a/87d6971f0997c4b9b09c495bf92189fb63de86a83cadc4977dc19735f652/zstandard-0.23.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:034b88913ecc1b097f528e42b539453fa82c3557e414b3de9d5632c80439a473", size = 5201792, upload-time = "2024-07-15T00:15:28.372Z" }, + { url = "https://files.pythonhosted.org/packages/79/02/6f6a42cc84459d399bd1a4e1adfc78d4dfe45e56d05b072008d10040e13b/zstandard-0.23.0-cp311-cp311-win32.whl", hash = "sha256:f2d4380bf5f62daabd7b751ea2339c1a21d1c9463f1feb7fc2bdcea2c29c3160", size = 430586, upload-time = "2024-07-15T00:15:32.26Z" }, + { url = "https://files.pythonhosted.org/packages/be/a2/4272175d47c623ff78196f3c10e9dc7045c1b9caf3735bf041e65271eca4/zstandard-0.23.0-cp311-cp311-win_amd64.whl", hash = "sha256:62136da96a973bd2557f06ddd4e8e807f9e13cbb0bfb9cc06cfe6d98ea90dfe0", size = 495420, upload-time = "2024-07-15T00:15:34.004Z" }, + { url = "https://files.pythonhosted.org/packages/7b/83/f23338c963bd9de687d47bf32efe9fd30164e722ba27fb59df33e6b1719b/zstandard-0.23.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b4567955a6bc1b20e9c31612e615af6b53733491aeaa19a6b3b37f3b65477094", size = 788713, upload-time = "2024-07-15T00:15:35.815Z" }, + { url = "https://files.pythonhosted.org/packages/5b/b3/1a028f6750fd9227ee0b937a278a434ab7f7fdc3066c3173f64366fe2466/zstandard-0.23.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e172f57cd78c20f13a3415cc8dfe24bf388614324d25539146594c16d78fcc8", size = 633459, upload-time = "2024-07-15T00:15:37.995Z" }, + { url = "https://files.pythonhosted.org/packages/26/af/36d89aae0c1f95a0a98e50711bc5d92c144939efc1f81a2fcd3e78d7f4c1/zstandard-0.23.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0e166f698c5a3e914947388c162be2583e0c638a4703fc6a543e23a88dea3c1", size = 4945707, upload-time = "2024-07-15T00:15:39.872Z" }, + { url = "https://files.pythonhosted.org/packages/cd/2e/2051f5c772f4dfc0aae3741d5fc72c3dcfe3aaeb461cc231668a4db1ce14/zstandard-0.23.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:12a289832e520c6bd4dcaad68e944b86da3bad0d339ef7989fb7e88f92e96072", size = 5306545, upload-time = "2024-07-15T00:15:41.75Z" }, + { url = "https://files.pythonhosted.org/packages/0a/9e/a11c97b087f89cab030fa71206963090d2fecd8eb83e67bb8f3ffb84c024/zstandard-0.23.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d50d31bfedd53a928fed6707b15a8dbeef011bb6366297cc435accc888b27c20", size = 5337533, upload-time = "2024-07-15T00:15:44.114Z" }, + { url = "https://files.pythonhosted.org/packages/fc/79/edeb217c57fe1bf16d890aa91a1c2c96b28c07b46afed54a5dcf310c3f6f/zstandard-0.23.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72c68dda124a1a138340fb62fa21b9bf4848437d9ca60bd35db36f2d3345f373", size = 5436510, upload-time = "2024-07-15T00:15:46.509Z" }, + { url = "https://files.pythonhosted.org/packages/81/4f/c21383d97cb7a422ddf1ae824b53ce4b51063d0eeb2afa757eb40804a8ef/zstandard-0.23.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:53dd9d5e3d29f95acd5de6802e909ada8d8d8cfa37a3ac64836f3bc4bc5512db", size = 4859973, upload-time = "2024-07-15T00:15:49.939Z" }, + { url = "https://files.pythonhosted.org/packages/ab/15/08d22e87753304405ccac8be2493a495f529edd81d39a0870621462276ef/zstandard-0.23.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:6a41c120c3dbc0d81a8e8adc73312d668cd34acd7725f036992b1b72d22c1772", size = 4936968, upload-time = "2024-07-15T00:15:52.025Z" }, + { url = "https://files.pythonhosted.org/packages/eb/fa/f3670a597949fe7dcf38119a39f7da49a8a84a6f0b1a2e46b2f71a0ab83f/zstandard-0.23.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:40b33d93c6eddf02d2c19f5773196068d875c41ca25730e8288e9b672897c105", size = 5467179, upload-time = "2024-07-15T00:15:54.971Z" }, + { url = "https://files.pythonhosted.org/packages/4e/a9/dad2ab22020211e380adc477a1dbf9f109b1f8d94c614944843e20dc2a99/zstandard-0.23.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9206649ec587e6b02bd124fb7799b86cddec350f6f6c14bc82a2b70183e708ba", size = 4848577, upload-time = "2024-07-15T00:15:57.634Z" }, + { url = "https://files.pythonhosted.org/packages/08/03/dd28b4484b0770f1e23478413e01bee476ae8227bbc81561f9c329e12564/zstandard-0.23.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76e79bc28a65f467e0409098fa2c4376931fd3207fbeb6b956c7c476d53746dd", size = 4693899, upload-time = "2024-07-15T00:16:00.811Z" }, + { url = "https://files.pythonhosted.org/packages/2b/64/3da7497eb635d025841e958bcd66a86117ae320c3b14b0ae86e9e8627518/zstandard-0.23.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:66b689c107857eceabf2cf3d3fc699c3c0fe8ccd18df2219d978c0283e4c508a", size = 5199964, upload-time = "2024-07-15T00:16:03.669Z" }, + { url = "https://files.pythonhosted.org/packages/43/a4/d82decbab158a0e8a6ebb7fc98bc4d903266bce85b6e9aaedea1d288338c/zstandard-0.23.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9c236e635582742fee16603042553d276cca506e824fa2e6489db04039521e90", size = 5655398, upload-time = "2024-07-15T00:16:06.694Z" }, + { url = "https://files.pythonhosted.org/packages/f2/61/ac78a1263bc83a5cf29e7458b77a568eda5a8f81980691bbc6eb6a0d45cc/zstandard-0.23.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a8fffdbd9d1408006baaf02f1068d7dd1f016c6bcb7538682622c556e7b68e35", size = 5191313, upload-time = "2024-07-15T00:16:09.758Z" }, + { url = "https://files.pythonhosted.org/packages/e7/54/967c478314e16af5baf849b6ee9d6ea724ae5b100eb506011f045d3d4e16/zstandard-0.23.0-cp312-cp312-win32.whl", hash = "sha256:dc1d33abb8a0d754ea4763bad944fd965d3d95b5baef6b121c0c9013eaf1907d", size = 430877, upload-time = "2024-07-15T00:16:11.758Z" }, + { url = "https://files.pythonhosted.org/packages/75/37/872d74bd7739639c4553bf94c84af7d54d8211b626b352bc57f0fd8d1e3f/zstandard-0.23.0-cp312-cp312-win_amd64.whl", hash = "sha256:64585e1dba664dc67c7cdabd56c1e5685233fbb1fc1966cfba2a340ec0dfff7b", size = 495595, upload-time = "2024-07-15T00:16:13.731Z" }, + { url = "https://files.pythonhosted.org/packages/80/f1/8386f3f7c10261fe85fbc2c012fdb3d4db793b921c9abcc995d8da1b7a80/zstandard-0.23.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:576856e8594e6649aee06ddbfc738fec6a834f7c85bf7cadd1c53d4a58186ef9", size = 788975, upload-time = "2024-07-15T00:16:16.005Z" }, + { url = "https://files.pythonhosted.org/packages/16/e8/cbf01077550b3e5dc86089035ff8f6fbbb312bc0983757c2d1117ebba242/zstandard-0.23.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:38302b78a850ff82656beaddeb0bb989a0322a8bbb1bf1ab10c17506681d772a", size = 633448, upload-time = "2024-07-15T00:16:17.897Z" }, + { url = "https://files.pythonhosted.org/packages/06/27/4a1b4c267c29a464a161aeb2589aff212b4db653a1d96bffe3598f3f0d22/zstandard-0.23.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2240ddc86b74966c34554c49d00eaafa8200a18d3a5b6ffbf7da63b11d74ee2", size = 4945269, upload-time = "2024-07-15T00:16:20.136Z" }, + { url = "https://files.pythonhosted.org/packages/7c/64/d99261cc57afd9ae65b707e38045ed8269fbdae73544fd2e4a4d50d0ed83/zstandard-0.23.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2ef230a8fd217a2015bc91b74f6b3b7d6522ba48be29ad4ea0ca3a3775bf7dd5", size = 5306228, upload-time = "2024-07-15T00:16:23.398Z" }, + { url = "https://files.pythonhosted.org/packages/7a/cf/27b74c6f22541f0263016a0fd6369b1b7818941de639215c84e4e94b2a1c/zstandard-0.23.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:774d45b1fac1461f48698a9d4b5fa19a69d47ece02fa469825b442263f04021f", size = 5336891, upload-time = "2024-07-15T00:16:26.391Z" }, + { url = "https://files.pythonhosted.org/packages/fa/18/89ac62eac46b69948bf35fcd90d37103f38722968e2981f752d69081ec4d/zstandard-0.23.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f77fa49079891a4aab203d0b1744acc85577ed16d767b52fc089d83faf8d8ed", size = 5436310, upload-time = "2024-07-15T00:16:29.018Z" }, + { url = "https://files.pythonhosted.org/packages/a8/a8/5ca5328ee568a873f5118d5b5f70d1f36c6387716efe2e369010289a5738/zstandard-0.23.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ac184f87ff521f4840e6ea0b10c0ec90c6b1dcd0bad2f1e4a9a1b4fa177982ea", size = 4859912, upload-time = "2024-07-15T00:16:31.871Z" }, + { url = "https://files.pythonhosted.org/packages/ea/ca/3781059c95fd0868658b1cf0440edd832b942f84ae60685d0cfdb808bca1/zstandard-0.23.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c363b53e257246a954ebc7c488304b5592b9c53fbe74d03bc1c64dda153fb847", size = 4936946, upload-time = "2024-07-15T00:16:34.593Z" }, + { url = "https://files.pythonhosted.org/packages/ce/11/41a58986f809532742c2b832c53b74ba0e0a5dae7e8ab4642bf5876f35de/zstandard-0.23.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e7792606d606c8df5277c32ccb58f29b9b8603bf83b48639b7aedf6df4fe8171", size = 5466994, upload-time = "2024-07-15T00:16:36.887Z" }, + { url = "https://files.pythonhosted.org/packages/83/e3/97d84fe95edd38d7053af05159465d298c8b20cebe9ccb3d26783faa9094/zstandard-0.23.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a0817825b900fcd43ac5d05b8b3079937073d2b1ff9cf89427590718b70dd840", size = 4848681, upload-time = "2024-07-15T00:16:39.709Z" }, + { url = "https://files.pythonhosted.org/packages/6e/99/cb1e63e931de15c88af26085e3f2d9af9ce53ccafac73b6e48418fd5a6e6/zstandard-0.23.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:9da6bc32faac9a293ddfdcb9108d4b20416219461e4ec64dfea8383cac186690", size = 4694239, upload-time = "2024-07-15T00:16:41.83Z" }, + { url = "https://files.pythonhosted.org/packages/ab/50/b1e703016eebbc6501fc92f34db7b1c68e54e567ef39e6e59cf5fb6f2ec0/zstandard-0.23.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fd7699e8fd9969f455ef2926221e0233f81a2542921471382e77a9e2f2b57f4b", size = 5200149, upload-time = "2024-07-15T00:16:44.287Z" }, + { url = "https://files.pythonhosted.org/packages/aa/e0/932388630aaba70197c78bdb10cce2c91fae01a7e553b76ce85471aec690/zstandard-0.23.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:d477ed829077cd945b01fc3115edd132c47e6540ddcd96ca169facff28173057", size = 5655392, upload-time = "2024-07-15T00:16:46.423Z" }, + { url = "https://files.pythonhosted.org/packages/02/90/2633473864f67a15526324b007a9f96c96f56d5f32ef2a56cc12f9548723/zstandard-0.23.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa6ce8b52c5987b3e34d5674b0ab529a4602b632ebab0a93b07bfb4dfc8f8a33", size = 5191299, upload-time = "2024-07-15T00:16:49.053Z" }, + { url = "https://files.pythonhosted.org/packages/b0/4c/315ca5c32da7e2dc3455f3b2caee5c8c2246074a61aac6ec3378a97b7136/zstandard-0.23.0-cp313-cp313-win32.whl", hash = "sha256:a9b07268d0c3ca5c170a385a0ab9fb7fdd9f5fd866be004c4ea39e44edce47dd", size = 430862, upload-time = "2024-07-15T00:16:51.003Z" }, + { url = "https://files.pythonhosted.org/packages/a2/bf/c6aaba098e2d04781e8f4f7c0ba3c7aa73d00e4c436bcc0cf059a66691d1/zstandard-0.23.0-cp313-cp313-win_amd64.whl", hash = "sha256:f3513916e8c645d0610815c257cbfd3242adfd5c4cfa78be514e5a3ebb42a41b", size = 495578, upload-time = "2024-07-15T00:16:53.135Z" }, +] diff --git a/usecase/solar-political-influence-analyzer/src/frontend/.env.example b/usecase/solar-political-influence-analyzer/src/frontend/.env.example new file mode 100644 index 0000000..53e59cb --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/.env.example @@ -0,0 +1,5 @@ +# API URL (로컬 개발) +NEXT_PUBLIC_API_URL=http://localhost:8000 + +# API URL (프로덕션) +# NEXT_PUBLIC_API_URL=https://your-cloudfront-domain.cloudfront.net diff --git a/usecase/solar-political-influence-analyzer/src/frontend/README.md b/usecase/solar-political-influence-analyzer/src/frontend/README.md new file mode 100644 index 0000000..142b0f5 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/README.md @@ -0,0 +1,133 @@ +# PIN - 정치테마주 관계도 분석 플랫폼 + +정치인 또는 정책을 입력하면 관련 정책, 산업군, 기업을 그래프로 시각화하여 보여주는 분석 플랫폼입니다. + +## 📋 요구사항 + +- **Node.js**: v22.x 이상 +- **패키지 매니저**: pnpm +- **Python**: 3.8 이상 (백엔드 서버용) + +## 🚀 시작하기 + +### 1. 프론트엔드 설치 및 실행 + +\`\`\`bash +# 의존성 설치 +pnpm install + +# 프로덕션 빌드 +pnpm build + +# 개발 서버 실행 (포트 3000) +pnpm dev + +# 프로덕션 서버 실행 +pnpm start +\`\`\` + +### 2. 백엔드 서버 실행 + +이 프로젝트는 두 개의 백엔드 서버가 필요합니다: + +#### Mock Server (포트 8001) +\`\`\`bash +# 현재 레포지토리의 main.py 실행 +python main.py +\`\`\` + +#### Deep Research Server (포트 8000) +\`\`\`bash +# 별도 레포지토리의 deep research main.py 실행 +cd /path/to/deep-research +python main.py +\`\`\` + +### 3. 전체 시스템 구성 + +\`\`\` +프론트엔드 (localhost:3000) + ↓ +Mock Server (localhost:8001) + ↓ +Deep Research API (localhost:8000) +\`\`\` + +## 🏗️ 프로젝트 구조 + +\`\`\` +├── app/ # Next.js 앱 라우터 +│ ├── page.tsx # 메인 페이지 (입력 화면) +│ └── analysis/ # 분석 결과 페이지 +├── components/ # React 컴포넌트 +│ ├── relationship-graph.tsx # 관계도 시각화 +│ └── ui/ # UI 컴포넌트 +├── lib/ # 유틸리티 및 타입 +├── public/ # 정적 파일 +└── main.py # FastAPI 백엔드 서버 +\`\`\` + +## 🔑 주요 기능 + +- **정치인/정책 검색**: 정치인 이름 또는 정책명을 입력하여 관련 정보 분석 +- **관계도 시각화**: 입력 → 정책 → 산업군 → 기업의 4단계 관계를 그래프로 표시 +- **상세 정보 제공**: 각 노드에 마우스를 올리면 상세한 근거 자료 및 출처 확인 가능 +- **반응형 디자인**: 모바일 및 데스크톱 환경 모두 지원 + +## 🛠️ 기술 스택 + +- **Frontend**: Next.js 16, React 19, TypeScript +- **Styling**: Tailwind CSS v4 +- **Backend**: FastAPI (Python) +- **AI Integration**: Upstage API + +## 📝 API 엔드포인트 + +### POST /api/query +정치인 또는 정책에 대한 관계 분석 요청 + +**Request Body:** +\`\`\`json +{ + "query": "이재명" +} +\`\`\` + +**Response:** +\`\`\`json +{ + "report_title": "...", + "time_range": "...", + "influence_chains": [...], + "notes": "..." +} +\`\`\` + +## 🤝 개발 가이드 + +### 환경 변수 설정 + +`.env.local` 파일을 생성하여 필요한 환경 변수를 설정하세요: + +\`\`\`env +NEXT_PUBLIC_API_URL=http://localhost:8001 +UPSTAGE_API_KEY=your_api_key_here +\`\`\` + +### 빌드 및 배포 + +\`\`\`bash +# 프로덕션 빌드 +pnpm build + +# 빌드 결과물 실행 +pnpm start +\`\`\` + +## 📄 라이선스 + +이 프로젝트는 MIT 라이선스를 따릅니다. + +## 👥 기여 + +버그 리포트 및 기능 제안은 Issues를 통해 제출해주세요. diff --git a/usecase/solar-political-influence-analyzer/src/frontend/app/analysis/page.tsx b/usecase/solar-political-influence-analyzer/src/frontend/app/analysis/page.tsx new file mode 100644 index 0000000..34206e0 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/app/analysis/page.tsx @@ -0,0 +1,55 @@ +import Link from "next/link" +import { ArrowLeft } from "lucide-react" +import { Button } from "@/components/ui/button" +import { AnalysisContent } from "@/components/analysis-content" +import { Skeleton } from "@/components/ui/skeleton" + +export default function AnalysisPage() { + // Query is now handled inside AnalysisContent via useSearchParams + + return ( + <div className="min-h-screen flex flex-col bg-background"> + {/* Header */} + <header className="border-b border-border bg-background sticky top-0 z-50 backdrop-blur-sm bg-background/95"> + <div className="container mx-auto px-4 py-4"> + <div className="flex items-center justify-between"> + <div className="flex items-center gap-4"> + <Link href="/"> + <Button variant="ghost" size="sm" className="gap-2"> + <ArrowLeft className="w-4 h-4" /> + <span className="hidden sm:inline">돌아가기</span> + </Button> + </Link> + <div className="flex items-center gap-2"> + <div className="w-8 h-8 rounded-lg bg-primary flex items-center justify-center"> + <span className="text-primary-foreground font-bold text-lg">P</span> + </div> + <h1 className="text-xl font-bold">PIN</h1> + </div> + </div> + <div className="text-sm text-muted-foreground hidden md:block">정치 테마주 관계도 분석</div> + </div> + </div> + </header> + + {/* Main Content */} + <main className="flex-1 container mx-auto px-4 py-6"> + <AnalysisContent /> + </main> + </div> + ) +} + +function AnalysisLoadingSkeleton() { + return ( + <div className="space-y-6"> + <div className="space-y-2"> + <Skeleton className="h-8 w-64" /> + <Skeleton className="h-4 w-48" /> + </div> + <div className="border border-border rounded-xl p-8"> + <Skeleton className="h-[600px] w-full" /> + </div> + </div> + ) +} diff --git a/usecase/solar-political-influence-analyzer/src/frontend/app/api/generate/route.ts b/usecase/solar-political-influence-analyzer/src/frontend/app/api/generate/route.ts new file mode 100644 index 0000000..afc05d1 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/app/api/generate/route.ts @@ -0,0 +1,32 @@ +import { NextRequest, NextResponse } from 'next/server' + +export async function POST(request: NextRequest) { + try { + const body = await request.json() + + // CloudFront를 통해 ALB 호출 + const apiUrl = process.env.API_URL || 'https://d31ad140yvex7c.cloudfront.net/api' + + const response = await fetch(`${apiUrl}/generate`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ query: body.query }), + signal: AbortSignal.timeout(300000) // 5분 타임아웃 + }) + + if (!response.ok) { + throw new Error(`API error: ${response.status}`) + } + + const data = await response.json() + return NextResponse.json(data) + } catch (error) { + console.error('AWS API route error:', error) + return NextResponse.json( + { error: 'Failed to fetch analysis data' }, + { status: 500 } + ) + } +} \ No newline at end of file diff --git a/usecase/solar-political-influence-analyzer/src/frontend/app/api/stock-price/route.ts b/usecase/solar-political-influence-analyzer/src/frontend/app/api/stock-price/route.ts new file mode 100644 index 0000000..8f36a86 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/app/api/stock-price/route.ts @@ -0,0 +1,43 @@ +import { NextRequest, NextResponse } from 'next/server' + +export async function POST(request: NextRequest) { + try { + const body = await request.json() + const { company } = body + + if (!company) { + return NextResponse.json( + { error: 'Company parameter required' }, + { status: 400 } + ) + } + + // CloudFront를 통해 ALB 호출 + const backendUrl = process.env.NEXT_PUBLIC_API_URL || 'https://d31ad140yvex7c.cloudfront.net/api' + + const response = await fetch(`${backendUrl}/stock-price`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ company }), + signal: AbortSignal.timeout(10000) // 10초 타임아웃 + }) + + if (!response.ok) { + throw new Error(`Backend error: ${response.status}`) + } + + const data = await response.json() + return NextResponse.json(data) + } catch (error) { + console.error('Stock price API route error:', error) + return NextResponse.json( + { + company: body?.company || 'Unknown', + error: '주가 정보를 가져올 수 없습니다.' + }, + { status: 500 } + ) + } +} \ No newline at end of file diff --git a/usecase/solar-political-influence-analyzer/src/frontend/app/globals.css b/usecase/solar-political-influence-analyzer/src/frontend/app/globals.css new file mode 100644 index 0000000..eafb555 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/app/globals.css @@ -0,0 +1,175 @@ +@import "tailwindcss"; +@import "tw-animate-css"; + +@custom-variant dark (&:is(.dark *)); + +:root { + --background: oklch(1 0 0); + --foreground: oklch(0.145 0 0); + --card: oklch(1 0 0); + --card-foreground: oklch(0.145 0 0); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.145 0 0); + --primary: oklch(0.205 0 0); + --primary-foreground: oklch(0.985 0 0); + --secondary: oklch(0.97 0 0); + --secondary-foreground: oklch(0.205 0 0); + --muted: oklch(0.97 0 0); + --muted-foreground: oklch(0.556 0 0); + --accent: oklch(0.97 0 0); + --accent-foreground: oklch(0.205 0 0); + --destructive: oklch(0.577 0.245 27.325); + --destructive-foreground: oklch(0.577 0.245 27.325); + --border: oklch(0.922 0 0); + --input: oklch(0.922 0 0); + --ring: oklch(0.708 0 0); + --chart-1: oklch(0.646 0.222 41.116); + --chart-2: oklch(0.6 0.118 184.704); + --chart-3: oklch(0.398 0.07 227.392); + --chart-4: oklch(0.828 0.189 84.429); + --chart-5: oklch(0.769 0.188 70.08); + --radius: 0.625rem; + --sidebar: oklch(0.985 0 0); + --sidebar-foreground: oklch(0.145 0 0); + --sidebar-primary: oklch(0.205 0 0); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.97 0 0); + --sidebar-accent-foreground: oklch(0.205 0 0); + --sidebar-border: oklch(0.922 0 0); + --sidebar-ring: oklch(0.708 0 0); +} + +.dark { + --background: oklch(0.145 0 0); + --foreground: oklch(0.985 0 0); + --card: oklch(0.145 0 0); + --card-foreground: oklch(0.985 0 0); + --popover: oklch(0.145 0 0); + --popover-foreground: oklch(0.985 0 0); + --primary: oklch(0.985 0 0); + --primary-foreground: oklch(0.205 0 0); + --secondary: oklch(0.269 0 0); + --secondary-foreground: oklch(0.985 0 0); + --muted: oklch(0.269 0 0); + --muted-foreground: oklch(0.708 0 0); + --accent: oklch(0.269 0 0); + --accent-foreground: oklch(0.985 0 0); + --destructive: oklch(0.396 0.141 25.723); + --destructive-foreground: oklch(0.637 0.237 25.331); + --border: oklch(0.269 0 0); + --input: oklch(0.269 0 0); + --ring: oklch(0.439 0 0); + --chart-1: oklch(0.488 0.243 264.376); + --chart-2: oklch(0.696 0.17 162.48); + --chart-3: oklch(0.769 0.188 70.08); + --chart-4: oklch(0.627 0.265 303.9); + --chart-5: oklch(0.645 0.246 16.439); + --sidebar: oklch(0.205 0 0); + --sidebar-foreground: oklch(0.985 0 0); + --sidebar-primary: oklch(0.488 0.243 264.376); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.269 0 0); + --sidebar-accent-foreground: oklch(0.985 0 0); + --sidebar-border: oklch(0.269 0 0); + --sidebar-ring: oklch(0.439 0 0); +} + +@theme inline { + --font-sans: "Geist", "Geist Fallback"; + --font-mono: "Geist Mono", "Geist Mono Fallback"; + + /* Primary brand colors - Professional financial blue */ + --color-primary: #0066ff; + --color-primary-foreground: #ffffff; + + /* Backgrounds */ + --color-background: #ffffff; + --color-foreground: #0a0a0a; + + /* Secondary surfaces */ + --color-card: #ffffff; + --color-card-foreground: #0a0a0a; + + /* Muted/subtle elements */ + --color-muted: #f5f7fa; + --color-muted-foreground: #6b7280; + + /* Accents */ + --color-accent: #f0f4ff; + --color-accent-foreground: #0066ff; + + /* Borders */ + --color-border: #e5e7eb; + --color-input: #e5e7eb; + + /* Semantic colors */ + --color-destructive: #ef4444; + --color-destructive-foreground: #ffffff; + + /* Stock indicators */ + --color-stock-up: #10b981; + --color-stock-down: #ef4444; + + /* Graph node colors */ + --color-node-input: #0066ff; + --color-node-policy: #8b5cf6; + --color-node-sector: #06b6d4; + --color-node-enterprise: #10b981; + + --radius: 0.5rem; + + /* optional: --font-sans, --font-serif, --font-mono if they are applied in the layout.tsx */ + --color-background: var(--background); + --color-foreground: var(--foreground); + --color-card: var(--card); + --color-card-foreground: var(--card-foreground); + --color-popover: var(--popover); + --color-popover-foreground: var(--popover-foreground); + --color-primary: var(--primary); + --color-primary-foreground: var(--primary-foreground); + --color-secondary: var(--secondary); + --color-secondary-foreground: var(--secondary-foreground); + --color-muted: var(--muted); + --color-muted-foreground: var(--muted-foreground); + --color-accent: var(--accent); + --color-accent-foreground: var(--accent-foreground); + --color-destructive: var(--destructive); + --color-destructive-foreground: var(--destructive-foreground); + --color-border: var(--border); + --color-input: var(--input); + --color-ring: var(--ring); + --color-chart-1: var(--chart-1); + --color-chart-2: var(--chart-2); + --color-chart-3: var(--chart-3); + --color-chart-4: var(--chart-4); + --color-chart-5: var(--chart-5); + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); + --color-sidebar: var(--sidebar); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-ring: var(--sidebar-ring); +} + +@layer base { + * { + @apply border-border outline-ring/50; + } + + body { + @apply bg-background text-foreground; + font-feature-settings: "rlig" 1, "calt" 1; + } +} + +@layer utilities { + .text-balance { + text-wrap: balance; + } +} diff --git a/usecase/solar-political-influence-analyzer/src/frontend/app/layout.tsx b/usecase/solar-political-influence-analyzer/src/frontend/app/layout.tsx new file mode 100644 index 0000000..c5b6c42 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/app/layout.tsx @@ -0,0 +1,33 @@ +import type React from "react" +import type { Metadata } from "next" +import { Geist, Geist_Mono } from "next/font/google" +import "./globals.css" + +const _geist = Geist({ subsets: ["latin"] }) +const _geistMono = Geist_Mono({ subsets: ["latin"] }) + +export const metadata: Metadata = { + title: "정치테마주 분석 PIN", + description: "정치인-정책-산업-기업 관계도 분석 시스템", + generator: "PIN", + icons: { + icon: [ + { + url: "/icon.svg", + type: "image/svg+xml", + }, + ], + }, +} + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode +}>) { + return ( + <html lang="en"> + <body className={`font-sans antialiased`}>{children}</body> + </html> + ) +} diff --git a/usecase/solar-political-influence-analyzer/src/frontend/app/loading.tsx b/usecase/solar-political-influence-analyzer/src/frontend/app/loading.tsx new file mode 100644 index 0000000..f36964f --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/app/loading.tsx @@ -0,0 +1,3 @@ +export default function Loading() { + return null +} diff --git a/usecase/solar-political-influence-analyzer/src/frontend/app/page.tsx b/usecase/solar-political-influence-analyzer/src/frontend/app/page.tsx new file mode 100644 index 0000000..5a6a12c --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/app/page.tsx @@ -0,0 +1,161 @@ +'use client' + +import Link from "next/link" +import { Search } from "lucide-react" +import { Button } from "@/components/ui/button" +import { Input } from "@/components/ui/input" +import { useRouter } from "next/navigation" +import { FormEvent } from "react" + +export default function HomePage() { + const router = useRouter() + + const handleSubmit = (e: FormEvent<HTMLFormElement>) => { + e.preventDefault() + const formData = new FormData(e.currentTarget) + const query = formData.get('query') as string + if (query?.trim()) { + router.push(`/analysis?query=${encodeURIComponent(query.trim())}`) + } + } + return ( + <div className="min-h-screen flex flex-col bg-gradient-to-br from-background via-accent/30 to-background"> + {/* Header */} + <header className="border-b border-border/40 bg-background/80 backdrop-blur-sm"> + <div className="container mx-auto px-4 py-4"> + <div className="flex items-center justify-between"> + <div className="flex items-center gap-2"> + <div className="w-8 h-8 rounded-lg bg-primary flex items-center justify-center"> + <span className="text-primary-foreground font-bold text-lg">P</span> + </div> + <h1 className="text-xl font-bold">PIN</h1> + </div> + <nav className="hidden md:flex items-center gap-6 text-sm"> + <Link href="#" className="text-muted-foreground hover:text-foreground transition-colors"> + 분석 방법 + </Link> + <Link href="#" className="text-muted-foreground hover:text-foreground transition-colors"> + 데이터 소스 + </Link> + <Link href="#" className="text-muted-foreground hover:text-foreground transition-colors"> + 문의하기 + </Link> + </nav> + </div> + </div> + </header> + + {/* Main Content */} + <main className="flex-1 flex items-center justify-center px-4 py-12"> + <div className="w-full max-w-3xl space-y-8"> + {/* Hero Section */} + <div className="text-center space-y-4"> + <div className="inline-flex items-center gap-2 px-4 py-2 rounded-full bg-accent text-accent-foreground text-sm font-medium mb-4"> + <span className="w-2 h-2 rounded-full bg-primary animate-pulse"></span> + 정치 테마주 관계도 분석 플랫폼 + </div> + <h2 className="text-4xl md:text-5xl lg:text-6xl font-bold text-balance leading-tight"> + 정치와 경제의 + <br /> + <span className="text-primary">연결고리</span>를 발견하세요 + </h2> + <p className="text-lg md:text-xl text-muted-foreground text-balance max-w-2xl mx-auto leading-relaxed"> + 정치인과 정책이 어떤 산업과 기업에 영향을 미치는지 + <br className="hidden sm:block" /> + 한눈에 파악할 수 있는 인사이트를 제공합니다 + </p> + </div> + + {/* Search Form */} + <form onSubmit={handleSubmit} className="space-y-4"> + <div className="relative"> + <Search className="absolute left-4 top-1/2 -translate-y-1/2 w-5 h-5 text-muted-foreground" /> + <Input + type="text" + name="query" + placeholder="정치인 이름 또는 정책을 입력하세요 (예: 이재명, 그린뉴딜)" + className="pl-12 pr-4 py-6 text-lg rounded-xl border-2 focus:border-primary transition-colors" + required + /> + </div> + <Button type="submit" size="lg" className="w-full py-6 text-lg rounded-xl font-semibold"> + 관계도 분석 시작하기 + </Button> + </form> + + {/* Quick Examples */} + <div className="space-y-3"> + <p className="text-sm text-muted-foreground text-center">빠른 검색:</p> + <div className="flex flex-wrap justify-center gap-2"> + {["이재명", "윤석열", "그린뉴딜", "반도체 지원", "법인세 인하"].map((example) => ( + <Link + key={example} + href={`/analysis?query=${encodeURIComponent(example)}`} + className="px-4 py-2 rounded-full bg-muted hover:bg-muted/80 text-sm font-medium transition-colors" + > + {example} + </Link> + ))} + </div> + </div> + + {/* Features */} + <div className="grid md:grid-cols-3 gap-4 pt-8"> + <div className="p-6 rounded-xl bg-card border border-border space-y-2"> + <div className="w-10 h-10 rounded-lg bg-primary/10 flex items-center justify-center"> + <svg className="w-5 h-5 text-primary" fill="none" viewBox="0 0 24 24" stroke="currentColor"> + <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 10V3L4 14h7v7l9-11h-7z" /> + </svg> + </div> + <h3 className="font-semibold">실시간 분석</h3> + <p className="text-sm text-muted-foreground leading-relaxed"> + 최신 뉴스와 데이터를 기반으로 실시간 관계도를 생성합니다 + </p> + </div> + <div className="p-6 rounded-xl bg-card border border-border space-y-2"> + <div className="w-10 h-10 rounded-lg bg-primary/10 flex items-center justify-center"> + <svg className="w-5 h-5 text-primary" fill="none" viewBox="0 0 24 24" stroke="currentColor"> + <path + strokeLinecap="round" + strokeLinejoin="round" + strokeWidth={2} + d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z" + /> + </svg> + </div> + <h3 className="font-semibold">근거 기반</h3> + <p className="text-sm text-muted-foreground leading-relaxed"> + 모든 연결에 대한 출처와 근거를 투명하게 제공합니다 + </p> + </div> + <div className="p-6 rounded-xl bg-card border border-border space-y-2"> + <div className="w-10 h-10 rounded-lg bg-primary/10 flex items-center justify-center"> + <svg className="w-5 h-5 text-primary" fill="none" viewBox="0 0 24 24" stroke="currentColor"> + <path + strokeLinecap="round" + strokeLinejoin="round" + strokeWidth={2} + d="M7 12l3-3 3 3 4-4M8 21l4-4 4 4M3 4h18M4 4h16v12a1 1 0 01-1 1H5a1 1 0 01-1-1V4z" + /> + </svg> + </div> + <h3 className="font-semibold">주가 연동</h3> + <p className="text-sm text-muted-foreground leading-relaxed"> + 관련 기업의 실시간 주가 정보를 함께 확인할 수 있습니다 + </p> + </div> + </div> + </div> + </main> + + {/* Footer */} + <footer className="border-t border-border/40 bg-background/80 backdrop-blur-sm"> + <div className="container mx-auto px-4 py-6"> + <p className="text-center text-sm text-muted-foreground"> + © 2025 PIN. 투자 결정은 본인의 책임하에 이루어져야 합니다. + </p> + </div> + </footer> + </div> + ) +} diff --git a/usecase/solar-political-influence-analyzer/src/frontend/components.json b/usecase/solar-political-influence-analyzer/src/frontend/components.json new file mode 100644 index 0000000..1c758b4 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "", + "css": "app/globals.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "iconLibrary": "lucide" +} diff --git a/usecase/solar-political-influence-analyzer/src/frontend/components/analysis-content.tsx b/usecase/solar-political-influence-analyzer/src/frontend/components/analysis-content.tsx new file mode 100644 index 0000000..342f76b --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/components/analysis-content.tsx @@ -0,0 +1,169 @@ +"use client" + +import { useEffect, useState } from "react" +import { useSearchParams } from "next/navigation" // Add useSearchParams import +import { Card } from "@/components/ui/card" +import { Badge } from "@/components/ui/badge" +import { Spinner } from "@/components/ui/spinner" +import { RelationshipGraph } from "@/components/relationship-graph" +import type { AnalysisReport } from "@/lib/types" +import { AlertCircle } from "lucide-react" +import { safeRender } from "@/lib/utils" + +export function AnalysisContent() { + const searchParams = useSearchParams() + const [query, setQuery] = useState<string>("") + const [loading, setLoading] = useState(true) + const [error, setError] = useState<string | null>(null) + const [apiResponse, setApiResponse] = useState<AnalysisReport | null>(null) + + useEffect(() => { + if (typeof window !== "undefined") { + const params = new URLSearchParams(window.location.search) + const q = params.get("query") || params.get("q") || "" + setQuery(q) + } + }, []) + + useEffect(() => { + const fetchData = async () => { + if (!query) return + + try { + setLoading(true) + console.log("[v0] Fetching data for query:", query) + + // Use environment variable for API URL + const apiUrl = process.env.NEXT_PUBLIC_API_URL || "https://ups-t3-alb-984329148.ap-northeast-2.elb.amazonaws.com" + + // 1. Job 생성 + const jobResponse = await fetch(`${apiUrl}/generate`, { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ query }), + }) + + if (!jobResponse.ok) { + throw new Error("Failed to create job") + } + + const { job_id } = await jobResponse.json() + console.log("[v0] Job created:", job_id) + + // 2. Polling (3초마다 상태 확인) + const pollInterval = setInterval(async () => { + try { + const statusResponse = await fetch(`${apiUrl}/job/${job_id}`) + if (!statusResponse.ok) { + throw new Error("Failed to fetch job status") + } + + const jobData = await statusResponse.json() + console.log("[v0] Job status:", jobData.status) + + if (jobData.status === "completed") { + clearInterval(pollInterval) + setApiResponse(jobData.result) + setLoading(false) + } else if (jobData.status === "failed") { + clearInterval(pollInterval) + throw new Error(jobData.error || "Analysis failed") + } + } catch (err) { + clearInterval(pollInterval) + console.error("[v0] Polling error:", err) + setError("분석 중 오류가 발생했습니다.") + setLoading(false) + } + }, 3000) + + // 5분 후 타임아웃 + setTimeout(() => { + clearInterval(pollInterval) + if (loading) { + setError("분석 시간이 초과되었습니다. 다시 시도해주세요.") + setLoading(false) + } + }, 300000) + + } catch (err) { + console.error("[v0] Error fetching data:", err) + setError("분석 대상을 가져오는데 실패했습니다. 다시 시도해주세요.") + setLoading(false) + } + } + + fetchData() + }, [query]) + + if (!query) { + return ( + <div className="flex items-center justify-center min-h-[400px]"> + <div className="text-center space-y-2"> + <AlertCircle className="w-12 h-12 text-muted-foreground mx-auto" /> + <p className="text-muted-foreground">검색어를 입력해주세요</p> + </div> + </div> + ) + } + + if (loading) { + return ( + <div className="flex items-center justify-center min-h-[600px]"> + <div className="text-center space-y-4"> + <Spinner className="w-12 h-12 mx-auto" /> + <div className="space-y-2"> + <p className="font-medium">관계도를 분석하고 있습니다...</p> + <p className="text-sm text-muted-foreground">정책, 산업, 기업 간의 연결고리를 찾는 중입니다</p> + <p className="text-xs text-muted-foreground/80">심층 분석에는 시간이 소요될 수 있습니다.</p> + </div> + </div> + </div> + ) + } + + if (error || !apiResponse) { + return ( + <div className="flex items-center justify-center min-h-[400px]"> + <div className="text-center space-y-2"> + <AlertCircle className="w-12 h-12 text-destructive mx-auto" /> + <p className="text-muted-foreground">{error || "분석 결과를 불러올 수 없습니다"}</p> + </div> + </div> + ) + } + + return ( + <div className="space-y-6"> + {/* Header Info */} + <div className="space-y-3"> + <div className="flex flex-wrap items-center gap-3"> + <h2 className="text-2xl md:text-3xl font-bold">{safeRender(apiResponse.report_title)}</h2> + <Badge variant="secondary" className="text-xs"> + {safeRender(apiResponse.time_range)} + </Badge> + </div> + <p className="text-muted-foreground leading-relaxed"> + <span className="font-medium text-foreground">{query}</span>에 대한 정치·경제 관계도 분석 결과입니다. 노드를 + 클릭하면 상세 정보와 근거를 확인할 수 있습니다. + </p> + </div> + + {/* Graph Visualization */} + <Card className="p-4 md:p-6"> + <RelationshipGraph data={apiResponse} /> + </Card> + + {/* Notes */} + {apiResponse.notes && ( + <Card className="p-4 bg-muted/50 border-muted"> + <p className="text-sm text-muted-foreground leading-relaxed"> + <span className="font-medium text-foreground">참고사항:</span> {safeRender(apiResponse.notes)} + </p> + </Card> + )} + </div> + ) +} diff --git a/usecase/solar-political-influence-analyzer/src/frontend/components/relationship-graph.tsx b/usecase/solar-political-influence-analyzer/src/frontend/components/relationship-graph.tsx new file mode 100644 index 0000000..13a458f --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/components/relationship-graph.tsx @@ -0,0 +1,675 @@ +"use client" + +import { useState, useEffect, useRef, useMemo } from "react" +import type { AnalysisReport } from "@/lib/types" +import { ExternalLink } from "lucide-react" +import { cn, safeRender } from "@/lib/utils" + +interface RelationshipGraphProps { + data: AnalysisReport +} + +interface NodePosition { + x: number + y: number +} + +interface ProcessedNode { + id: string + label: string + type: "input" | "policy" | "sector" | "enterprise" + fullText?: string + data: any +} + +interface ProcessedEdge { + id: string + source: string + target: string + data: any +} + +interface StockPriceData { + price?: string + direction?: "상승" | "하락" + change?: string + change_percent?: string + error?: string +} + +export function RelationshipGraph({ data }: RelationshipGraphProps) { + const svgRef = useRef<SVGSVGElement>(null) + const [dimensions, setDimensions] = useState({ width: 1000, height: 600 }) + const [nodePositions, setNodePositions] = useState<Map<string, NodePosition>>(new Map()) + const [selectedNode, setSelectedNode] = useState<string | null>(null) + const [isMobile, setIsMobile] = useState(false) + const [hoveredNode, setHoveredNode] = useState<ProcessedNode | null>(null) + const [stockPrices, setStockPrices] = useState<Record<string, StockPriceData>>({}) + const [isLoadingStocks, setIsLoadingStocks] = useState(true) + const stockFetchedRef = useRef(false) + + const { nodes, edges } = useMemo(() => { + const nodes: ProcessedNode[] = [] + const edges: ProcessedEdge[] = [] + + // Safety check: ensure data and influence_chains exist + if ( + !data || + !data.influence_chains || + !Array.isArray(data.influence_chains) || + data.influence_chains.length === 0 + ) { + console.error("[v0] Invalid or empty data structure:", data) + return { nodes: [], edges: [] } + } + + console.log("[v0] Processing influence_chains:", data.influence_chains) + + // Create input node (politician) - with fallback + const politician = data.influence_chains[0]?.politician || "Unknown" + nodes.push({ + id: "input-1", + label: politician, + type: "input", + data: {}, + }) + + const policyNodes: ProcessedNode[] = [] + const sectorNodes: ProcessedNode[] = [] + const companyNodes: ProcessedNode[] = [] + + data.influence_chains.forEach((chain, idx) => { + // Safety checks for each chain + if (!chain) { + console.warn(`[v0] Skipping invalid chain at index ${idx}`) + return + } + + console.log(`[v0] Processing chain ${idx}:`, { + policy: chain.policy, + sector: chain.industry_or_sector, + impact: chain.impact_description, + evidence: chain.evidence, + }) + + // Add policy node - allow "None directly linked" + const policyLabel = chain.policy && chain.policy.trim() !== "" ? chain.policy : "None directly linked" + const policyNode = { + id: `policy-${idx}`, + label: policyLabel, + fullText: policyLabel, + type: "policy" as const, + data: { + policy: policyLabel, // Store policy value directly + description: policyLabel, + evidence: Array.isArray(chain.evidence) ? chain.evidence : [], + }, + } + policyNodes.push(policyNode) + console.log(`[v0] Created policy node:`, policyNode) + + // Add sector node - with fallback + const sector = chain.industry_or_sector || "Unknown Sector" + const impactDescription = chain.impact_description || "No description available" + const sectorNode = { + id: `sector-${idx}`, + label: sector, + type: "sector" as const, + data: { + sector: sector, // Ensure sector is stored + impactDescription: impactDescription, // Store impact description with correct key + impact_description: impactDescription, // Also store with underscore version for compatibility + }, + } + sectorNodes.push(sectorNode) + console.log(`[v0] Created sector node:`, sectorNode) + + // Add company nodes - with array safety check + if (Array.isArray(chain.companies)) { + chain.companies.forEach((company, companyIdx) => { + if (company && company.trim() !== "") { + const symbolMatch = company.match(/$$(\d+)$$/) + companyNodes.push({ + id: `enterprise-${idx}-${companyIdx}`, + label: company, + type: "enterprise", + data: { + stockData: { + symbol: symbolMatch ? symbolMatch[1] : "N/A", + price: 0, + change: 0, + changePercent: 0, + }, + }, + }) + } + }) + } + }) + + nodes.push(...policyNodes) + nodes.push(...sectorNodes) + nodes.push(...companyNodes) + + console.log("[v0] Processed nodes:", nodes.length, "edges:", edges.length) + console.log( + "[v0] Final nodes data:", + nodes.map((n) => ({ id: n.id, type: n.type, data: n.data })), + ) + + return { nodes, edges } + }, [data]) + + useEffect(() => { + const checkMobile = () => { + setIsMobile(window.innerWidth < 768) + } + checkMobile() + window.addEventListener("resize", checkMobile) + return () => window.removeEventListener("resize", checkMobile) + }, []) + + useEffect(() => { + if (nodes.length > 0) { + const columnGroups = new Map<string, ProcessedNode[]>() + nodes.forEach((node) => { + const column = node.type + if (!columnGroups.has(column)) { + columnGroups.set(column, []) + } + columnGroups.get(column)!.push(node) + }) + + const newPositions = new Map<string, NodePosition>() + const isMobile = window.innerWidth < 768 + const verticalGap = 80 + const nodeHeight = 140 + + const columnOrder = ["input", "policy", "sector", "enterprise"] + const columns: ProcessedNode[][] = columnOrder.map((type) => columnGroups.get(type) || []) + + const maxNodesInColumn = Math.max(...columns.map((col) => col.length)) + const calculatedHeight = Math.max(600, maxNodesInColumn * (nodeHeight + verticalGap) + 200) + + const columnWidth = isMobile ? 200 : 300 + const totalWidth = columns.length * columnWidth + 400 + + columns.forEach((columnNodes, colIndex) => { + const x = (colIndex + 1) * (totalWidth / (columns.length + 1)) + const totalHeight = columnNodes.length * nodeHeight + (columnNodes.length - 1) * verticalGap + const startY = (calculatedHeight - totalHeight) / 2 + + columnNodes.forEach((node, rowIndex) => { + const y = startY + rowIndex * (nodeHeight + verticalGap) + newPositions.set(node.id, { x, y }) + }) + }) + + setNodePositions(newPositions) + setDimensions({ width: totalWidth, height: calculatedHeight }) + } + }, [nodes]) + + useEffect(() => { + const updateDimensions = () => { + if (svgRef.current) { + const container = svgRef.current.parentElement + if (container) { + const width = container.clientWidth + const height = dimensions.height + setDimensions((prev) => ({ width, height: prev.height })) + } + } + } + + updateDimensions() + window.addEventListener("resize", updateDimensions) + return () => window.removeEventListener("resize", updateDimensions) + }, [dimensions.height]) + + useEffect(() => { + if (stockFetchedRef.current) return + stockFetchedRef.current = true + + const fetchAllStockPrices = async () => { + console.log("[v0] Starting to fetch all stock prices...") + const allCompanies = new Set<string>() + + // Collect all unique company names + nodes.forEach((node) => { + if (node.type === "enterprise" && node.label) { + const companies = node.label.includes(",") ? node.label.split(",").map((c) => c.trim()) : [node.label] + companies.forEach((c) => allCompanies.add(c)) + } + }) + + console.log(`[v0] Found ${allCompanies.size} unique companies:`, Array.from(allCompanies)) + + const companyArray = Array.from(allCompanies) + const results: Record<string, StockPriceData> = {} + + for (let i = 0; i < companyArray.length; i++) { + const company = companyArray[i] + console.log(`[v0] Fetching stock price for: ${company} (${i + 1}/${companyArray.length})`) + + try { + const response = await fetch("/api/stock-price", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ action: "stock-price", company }), + }) + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`) + } + + const data = await response.json() + console.log(`[v0] Received stock data for ${company}:`, data) + results[company] = data + } catch (error) { + console.error(`[v0] Failed to fetch stock price for ${company}:`, error) + results[company] = { error: "검색도중 에러가 났습니다." } + } + + // Wait 0.5 seconds instead of 1 second between requests to avoid rate limiting + if (i < companyArray.length - 1) { + await new Promise((resolve) => setTimeout(resolve, 500)) + } + } + + console.log("[v0] Finished fetching all stock prices:", results) + setStockPrices(results) + setIsLoadingStocks(false) + } + + if (nodes.some((node) => node.type === "enterprise")) { + fetchAllStockPrices() + } else { + setIsLoadingStocks(false) + } + }, [nodes]) + + const getNodeColor = (type: ProcessedNode["type"]) => { + switch (type) { + case "input": + return "rgb(17, 24, 39)" // Black (gray-900) + case "policy": + return "rgb(55, 65, 81)" // Dark gray (gray-700) + case "sector": + return "rgb(156, 163, 175)" // Light gray (gray-400) + case "enterprise": + return "rgb(243, 244, 246)" // White (gray-100) + default: + return "rgb(55, 65, 81)" + } + } + + const getTextColor = (type: ProcessedNode["type"]) => { + switch (type) { + case "input": + return "rgb(255, 255, 255)" // White text on black + case "policy": + return "rgb(255, 255, 255)" // White text on dark gray + case "sector": + return "rgb(17, 24, 39)" // Dark text on light gray + case "enterprise": + return "rgb(17, 24, 39)" // Dark text on white + default: + return "rgb(255, 255, 255)" + } + } + + const getIntersectionPoint = (source: NodePosition, target: NodePosition, targetType: string, isMobile: boolean) => { + return target + } + + if (nodes.length === 0) { + return ( + <div className="flex items-center justify-center min-h-[400px] text-muted-foreground"> + <p>관계도를 생성할 수 있는 데이터가 없습니다.</p> + </div> + ) + } + + return ( + <div className="relative w-full overflow-x-auto overflow-y-auto" style={{ height: dimensions.height }}> + <svg + ref={svgRef} + width={dimensions.width} + height={dimensions.height} + className="min-w-full" + style={{ minWidth: isMobile ? "100%" : "800px" }} + > + <g className="edges"> + {nodes + .filter((n) => n.type === "input") + .map((inputNode) => { + const inputPos = nodePositions.get(inputNode.id) + if (!inputPos) return null + + return nodes + .filter((n) => n.type === "policy") + .map((policyNode) => { + const policyPos = nodePositions.get(policyNode.id) + if (!policyPos) return null + + return ( + <line + key={`edge-${inputNode.id}-${policyNode.id}`} + x1={inputPos.x} + y1={inputPos.y} + x2={policyPos.x} + y2={policyPos.y} + stroke="rgb(107, 114, 128)" + strokeWidth="2" + strokeDasharray="5,5" + opacity="0.7" + /> + ) + }) + })} + + {nodes + .filter((n) => n.type === "policy") + .map((policyNode) => { + const policyPos = nodePositions.get(policyNode.id) + if (!policyPos) return null + + // Extract index from policy-{idx} + const policyIdx = policyNode.id.split("-")[1] + const sectorNode = nodes.find((n) => n.id === `sector-${policyIdx}`) + if (!sectorNode) return null + + const sectorPos = nodePositions.get(sectorNode.id) + if (!sectorPos) return null + + return ( + <line + key={`edge-${policyNode.id}-${sectorNode.id}`} + x1={policyPos.x} + y1={policyPos.y} + x2={sectorPos.x} + y2={sectorPos.y} + stroke="rgb(107, 114, 128)" + strokeWidth="2" + strokeDasharray="5,5" + opacity="0.7" + /> + ) + })} + + {nodes + .filter((n) => n.type === "sector") + .map((sectorNode) => { + const sectorPos = nodePositions.get(sectorNode.id) + if (!sectorPos) return null + + // Extract index from sector-{idx} + const sectorIdx = sectorNode.id.split("-")[1] + + // Find all companies that belong to this sector (enterprise-{idx}-{companyIdx}) + const companyNodes = nodes.filter( + (n) => n.type === "enterprise" && n.id.startsWith(`enterprise-${sectorIdx}-`), + ) + + return companyNodes.map((companyNode) => { + const companyPos = nodePositions.get(companyNode.id) + if (!companyPos) return null + + return ( + <line + key={`edge-${sectorNode.id}-${companyNode.id}`} + x1={sectorPos.x} + y1={sectorPos.y} + x2={companyPos.x} + y2={companyPos.y} + stroke="rgb(107, 114, 128)" + strokeWidth="2" + strokeDasharray="5,5" + opacity="0.7" + /> + ) + }) + })} + </g> + + {/* Draw nodes */} + <g className="nodes"> + {nodes.map((node) => { + const pos = nodePositions.get(node.id) + if (!pos) return null + + return ( + <g + key={node.id} + className="cursor-pointer transition-transform duration-200 ease-out hover:-translate-y-1" + onMouseEnter={() => setHoveredNode(node)} + onMouseLeave={() => setHoveredNode(null)} + > + <NodeRect + type={node.type} + x={pos.x} + y={pos.y} + color={getNodeColor(node.type)} + isSelected={selectedNode === node.id} + isMobile={isMobile} + /> + <text + x={pos.x} + y={pos.y} + textAnchor="middle" + dominantBaseline="middle" + className="text-base md:text-xl font-medium pointer-events-none drop-shadow-md" + style={{ userSelect: "none", fill: getTextColor(node.type) }} + > + {truncateText(node.label, isMobile ? 15 : 20)} + </text> + </g> + ) + })} + </g> + </svg> + + {hoveredNode && ( + <div + className="absolute z-50 pointer-events-auto" + style={{ + left: `${nodePositions.get(hoveredNode.id)?.x || 0}px`, + top: `${(nodePositions.get(hoveredNode.id)?.y || 0) - 30}px`, + transform: "translate(-50%, -100%)", + }} + onMouseEnter={() => setHoveredNode(hoveredNode)} + onMouseLeave={() => setHoveredNode(null)} + > + <NodeTooltipContent node={hoveredNode} stockPrices={stockPrices} isLoadingStocks={isLoadingStocks} /> + </div> + )} + </div> + ) +} + +function NodeRect({ + type, + x, + y, + color, + isSelected, + isMobile, +}: { + type: ProcessedNode["type"] + x: number + y: number + color: string + isSelected: boolean + isMobile: boolean +}) { + const width = isMobile ? 200 : 250 + const height = isMobile ? 100 : 140 + const rx = isMobile ? 8 : 10 + const ry = isMobile ? 8 : 10 + + return ( + <rect + x={x - width / 2} + y={y - height / 2} + width={width} + height={height} + rx={rx} + ry={ry} + fill={color} + stroke={isSelected ? "rgb(239, 68, 68)" : getBorderColor(type)} + strokeWidth={isSelected ? 2 : 1.5} + className="transition-all duration-300 ease-in-out" + style={{ filter: "drop-shadow(0 4px 6px rgb(0 0 0 / 0.1))" }} + /> + ) +} + +function NodeTooltipContent({ + node, + stockPrices, + isLoadingStocks, +}: { + node: ProcessedNode + stockPrices: Record<string, StockPriceData> + isLoadingStocks: boolean +}) { + return ( + <div className="max-w-md bg-background/95 backdrop-blur-sm text-foreground rounded-lg shadow-xl border p-4"> + <div> + <div className="font-bold text-lg mb-1">{safeRender(node.fullText || node.label || "N/A")}</div> + </div> + + {node.type === "policy" && ( + <div className="pt-2 border-t border-border space-y-2"> + <div className="text-sm"> + <span className="font-medium text-muted-foreground">관련 정책: </span> + <span className="font-medium text-foreground"> + {safeRender(node.data?.policy || node.data?.description || node.label || "N/A")} + </span> + </div> + {node.data?.evidence && Array.isArray(node.data.evidence) && node.data.evidence.length > 0 && ( + <div className="mt-3"> + <div className="text-sm font-medium text-muted-foreground mb-2">관련 근거</div> + {node.data.evidence.map((evidence: any, idx: number) => { + if (!evidence || typeof evidence !== "object") return null + + const title = evidence.source_title || evidence.title || "제목 없음" + const url = evidence.url || evidence.source_url || "" + + return ( + <div key={idx} className="flex flex-col gap-1 mb-2"> + <span className="text-sm font-medium text-foreground">{safeRender(title)}</span> + {url && ( + <a + href={safeRender(url)} + target="_blank" + rel="noopener noreferrer" + className="text-xs text-primary hover:underline flex items-center gap-1" + > + <ExternalLink className="w-3 h-3" /> + <span className="break-all">{safeRender(url)}</span> + </a> + )} + </div> + ) + })} + </div> + )} + </div> + )} + + {node.type === "sector" && ( + <div className="pt-2 border-t border-border space-y-3"> + <div className="text-sm"> + <span className="font-medium text-muted-foreground">산업 분야: </span> + <span className="font-medium text-foreground">{safeRender(node.data?.sector || node.label || "N/A")}</span> + </div> + <div className="text-sm"> + <span className="font-medium text-muted-foreground">영향 분석: </span> + <span className="text-foreground"> + {safeRender(node.data?.impactDescription || node.data?.impact_description || "N/A")} + </span> + </div> + </div> + )} + + {node.type === "enterprise" && ( + <div className="pt-2 border-t border-border space-y-3"> + <div className="text-sm font-medium text-muted-foreground mb-2">주가 정보</div> + {isLoadingStocks ? ( + <div className="text-sm text-muted-foreground">로딩 중...</div> + ) : ( + <> + {(() => { + const companies = node.label.includes(",") ? node.label.split(",").map((c) => c.trim()) : [node.label] + + return companies.map((company, idx) => { + const stockData = stockPrices[company] + + if (!stockData) { + return ( + <div key={idx} className="mb-3"> + <div className="font-medium text-sm text-foreground mb-1">{company}</div> + <div className="text-sm text-gray-600">주가 정보를 불러올 수 없습니다</div> + </div> + ) + } + + if (stockData.error) { + return ( + <div key={idx} className="mb-3"> + <div className="font-medium text-sm text-foreground mb-1">{company}</div> + <div className="text-sm text-gray-600">{stockData.error}</div> + </div> + ) + } + + const isUp = stockData.direction === "상승" + const priceColor = isUp ? "text-red-500" : "text-blue-500" + + return ( + <div key={idx} className="mb-3"> + <div className="font-medium text-sm text-foreground mb-1">{company}</div> + <div className="flex items-baseline gap-2"> + <span className={cn("text-2xl font-bold", priceColor)}>{stockData.price || "N/A"}</span> + <span className="text-xs text-muted-foreground">{stockData.direction || ""}</span> + </div> + {stockData.change && ( + <div className="text-sm text-muted-foreground mt-1"> + {stockData.change} ({stockData.change_percent || ""}) + </div> + )} + </div> + ) + }) + })()} + </> + )} + </div> + )} + </div> + ) +} + +function getBorderColor(type: ProcessedNode["type"]) { + switch (type) { + case "input": + return "rgb(75, 85, 99)" // gray-600 for black nodes + case "policy": + return "rgb(107, 114, 128)" // gray-500 for dark gray nodes + case "sector": + return "rgb(209, 213, 219)" // gray-300 for light gray nodes + case "enterprise": + return "rgb(229, 231, 235)" // gray-200 for white nodes + default: + return "rgb(156, 163, 175)" // gray-400 default + } +} + +function truncateText(text: string, maxLength: number): string { + if (!text) return "N/A" + const textString = typeof text === "string" ? text : String(text) + if (textString.length <= maxLength) return textString + return textString.substring(0, maxLength) + "..." +} diff --git a/usecase/solar-political-influence-analyzer/src/frontend/components/theme-provider.tsx b/usecase/solar-political-influence-analyzer/src/frontend/components/theme-provider.tsx new file mode 100644 index 0000000..c4168dc --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/components/theme-provider.tsx @@ -0,0 +1,11 @@ +'use client' + +import * as React from 'react' +import { + ThemeProvider as NextThemesProvider, + type ThemeProviderProps, +} from 'next-themes' + +export function ThemeProvider({ children, ...props }: ThemeProviderProps) { + return <NextThemesProvider {...props}>{children}</NextThemesProvider> +} diff --git a/usecase/solar-political-influence-analyzer/src/frontend/components/ui/badge.tsx b/usecase/solar-political-influence-analyzer/src/frontend/components/ui/badge.tsx new file mode 100644 index 0000000..40d931b --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/components/ui/badge.tsx @@ -0,0 +1,46 @@ +import * as React from 'react' +import { Slot } from '@radix-ui/react-slot' +import { cva, type VariantProps } from 'class-variance-authority' + +import { cn } from '@/lib/utils' + +const badgeVariants = cva( + 'inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden', + { + variants: { + variant: { + default: + 'border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90', + secondary: + 'border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90', + destructive: + 'border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60', + outline: + 'text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground', + }, + }, + defaultVariants: { + variant: 'default', + }, + }, +) + +function Badge({ + className, + variant, + asChild = false, + ...props +}: React.ComponentProps<'span'> & + VariantProps<typeof badgeVariants> & { asChild?: boolean }) { + const Comp = asChild ? Slot : 'span' + + return ( + <Comp + data-slot="badge" + className={cn(badgeVariants({ variant }), className)} + {...props} + /> + ) +} + +export { Badge, badgeVariants } diff --git a/usecase/solar-political-influence-analyzer/src/frontend/components/ui/button.tsx b/usecase/solar-political-influence-analyzer/src/frontend/components/ui/button.tsx new file mode 100644 index 0000000..2c26af8 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/components/ui/button.tsx @@ -0,0 +1,60 @@ +import * as React from 'react' +import { Slot } from '@radix-ui/react-slot' +import { cva, type VariantProps } from 'class-variance-authority' + +import { cn } from '@/lib/utils' + +const buttonVariants = cva( + "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", + { + variants: { + variant: { + default: 'bg-primary text-primary-foreground hover:bg-primary/90', + destructive: + 'bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60', + outline: + 'border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50', + secondary: + 'bg-secondary text-secondary-foreground hover:bg-secondary/80', + ghost: + 'hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50', + link: 'text-primary underline-offset-4 hover:underline', + }, + size: { + default: 'h-9 px-4 py-2 has-[>svg]:px-3', + sm: 'h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5', + lg: 'h-10 rounded-md px-6 has-[>svg]:px-4', + icon: 'size-9', + 'icon-sm': 'size-8', + 'icon-lg': 'size-10', + }, + }, + defaultVariants: { + variant: 'default', + size: 'default', + }, + }, +) + +function Button({ + className, + variant, + size, + asChild = false, + ...props +}: React.ComponentProps<'button'> & + VariantProps<typeof buttonVariants> & { + asChild?: boolean + }) { + const Comp = asChild ? Slot : 'button' + + return ( + <Comp + data-slot="button" + className={cn(buttonVariants({ variant, size, className }))} + {...props} + /> + ) +} + +export { Button, buttonVariants } diff --git a/usecase/solar-political-influence-analyzer/src/frontend/components/ui/card.tsx b/usecase/solar-political-influence-analyzer/src/frontend/components/ui/card.tsx new file mode 100644 index 0000000..ea73751 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/components/ui/card.tsx @@ -0,0 +1,92 @@ +import * as React from 'react' + +import { cn } from '@/lib/utils' + +function Card({ className, ...props }: React.ComponentProps<'div'>) { + return ( + <div + data-slot="card" + className={cn( + 'bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm', + className, + )} + {...props} + /> + ) +} + +function CardHeader({ className, ...props }: React.ComponentProps<'div'>) { + return ( + <div + data-slot="card-header" + className={cn( + '@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6', + className, + )} + {...props} + /> + ) +} + +function CardTitle({ className, ...props }: React.ComponentProps<'div'>) { + return ( + <div + data-slot="card-title" + className={cn('leading-none font-semibold', className)} + {...props} + /> + ) +} + +function CardDescription({ className, ...props }: React.ComponentProps<'div'>) { + return ( + <div + data-slot="card-description" + className={cn('text-muted-foreground text-sm', className)} + {...props} + /> + ) +} + +function CardAction({ className, ...props }: React.ComponentProps<'div'>) { + return ( + <div + data-slot="card-action" + className={cn( + 'col-start-2 row-span-2 row-start-1 self-start justify-self-end', + className, + )} + {...props} + /> + ) +} + +function CardContent({ className, ...props }: React.ComponentProps<'div'>) { + return ( + <div + data-slot="card-content" + className={cn('px-6', className)} + {...props} + /> + ) +} + +function CardFooter({ className, ...props }: React.ComponentProps<'div'>) { + return ( + <div + data-slot="card-footer" + className={cn('flex items-center px-6 [.border-t]:pt-6', className)} + {...props} + /> + ) +} + +export { + Card, + CardHeader, + CardFooter, + CardTitle, + CardAction, + CardDescription, + CardContent, +} diff --git a/usecase/solar-political-influence-analyzer/src/frontend/components/ui/input.tsx b/usecase/solar-political-influence-analyzer/src/frontend/components/ui/input.tsx new file mode 100644 index 0000000..e569fce --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/components/ui/input.tsx @@ -0,0 +1,21 @@ +import * as React from 'react' + +import { cn } from '@/lib/utils' + +function Input({ className, type, ...props }: React.ComponentProps<'input'>) { + return ( + <input + type={type} + data-slot="input" + className={cn( + 'file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm', + 'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]', + 'aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive', + className, + )} + {...props} + /> + ) +} + +export { Input } diff --git a/usecase/solar-political-influence-analyzer/src/frontend/components/ui/skeleton.tsx b/usecase/solar-political-influence-analyzer/src/frontend/components/ui/skeleton.tsx new file mode 100644 index 0000000..831d67a --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/components/ui/skeleton.tsx @@ -0,0 +1,13 @@ +import { cn } from '@/lib/utils' + +function Skeleton({ className, ...props }: React.ComponentProps<'div'>) { + return ( + <div + data-slot="skeleton" + className={cn('bg-accent animate-pulse rounded-md', className)} + {...props} + /> + ) +} + +export { Skeleton } diff --git a/usecase/solar-political-influence-analyzer/src/frontend/components/ui/spinner.tsx b/usecase/solar-political-influence-analyzer/src/frontend/components/ui/spinner.tsx new file mode 100644 index 0000000..d2432bd --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/components/ui/spinner.tsx @@ -0,0 +1,16 @@ +import { Loader2Icon } from 'lucide-react' + +import { cn } from '@/lib/utils' + +function Spinner({ className, ...props }: React.ComponentProps<'svg'>) { + return ( + <Loader2Icon + role="status" + aria-label="Loading" + className={cn('size-4 animate-spin', className)} + {...props} + /> + ) +} + +export { Spinner } diff --git a/usecase/solar-political-influence-analyzer/src/frontend/next-env.d.ts b/usecase/solar-political-influence-analyzer/src/frontend/next-env.d.ts new file mode 100644 index 0000000..9edff1c --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/next-env.d.ts @@ -0,0 +1,6 @@ +/// <reference types="next" /> +/// <reference types="next/image-types/global" /> +import "./.next/types/routes.d.ts"; + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/usecase/solar-political-influence-analyzer/src/frontend/next.config.mjs b/usecase/solar-political-influence-analyzer/src/frontend/next.config.mjs new file mode 100644 index 0000000..18a1556 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/next.config.mjs @@ -0,0 +1,13 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + output: 'export', + typescript: { + ignoreBuildErrors: true, + }, + images: { + unoptimized: true, + }, + +} + +export default nextConfig diff --git a/usecase/solar-political-influence-analyzer/src/frontend/package-lock.json b/usecase/solar-political-influence-analyzer/src/frontend/package-lock.json new file mode 100644 index 0000000..3e4d05c --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/package-lock.json @@ -0,0 +1,4277 @@ +{ + "name": "my-v0-project", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "my-v0-project", + "version": "0.1.0", + "dependencies": { + "@hookform/resolvers": "^3.10.0", + "@radix-ui/react-accordion": "1.2.2", + "@radix-ui/react-alert-dialog": "1.1.4", + "@radix-ui/react-aspect-ratio": "1.1.1", + "@radix-ui/react-avatar": "1.1.2", + "@radix-ui/react-checkbox": "1.1.3", + "@radix-ui/react-collapsible": "1.1.2", + "@radix-ui/react-context-menu": "2.2.4", + "@radix-ui/react-dialog": "1.1.4", + "@radix-ui/react-dropdown-menu": "2.1.4", + "@radix-ui/react-hover-card": "1.1.4", + "@radix-ui/react-label": "2.1.1", + "@radix-ui/react-menubar": "1.1.4", + "@radix-ui/react-navigation-menu": "1.2.3", + "@radix-ui/react-popover": "1.1.4", + "@radix-ui/react-progress": "1.1.1", + "@radix-ui/react-radio-group": "1.2.2", + "@radix-ui/react-scroll-area": "1.2.2", + "@radix-ui/react-select": "2.1.4", + "@radix-ui/react-separator": "1.1.1", + "@radix-ui/react-slider": "1.2.2", + "@radix-ui/react-slot": "latest", + "@radix-ui/react-switch": "1.1.2", + "@radix-ui/react-tabs": "1.1.2", + "@radix-ui/react-toast": "1.2.4", + "@radix-ui/react-toggle": "1.1.1", + "@radix-ui/react-toggle-group": "1.1.1", + "@radix-ui/react-tooltip": "latest", + "@vercel/analytics": "latest", + "autoprefixer": "^10.4.20", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "cmdk": "1.0.4", + "date-fns": "4.1.0", + "embla-carousel-react": "8.5.1", + "input-otp": "1.4.1", + "lucide-react": "^0.454.0", + "next": "16.0.3", + "next-themes": "latest", + "react": "19.2.0", + "react-day-picker": "9.8.0", + "react-dom": "19.2.0", + "react-hook-form": "^7.60.0", + "react-resizable-panels": "^2.1.7", + "recharts": "2.15.4", + "sonner": "^1.7.4", + "tailwind-merge": "^2.5.5", + "tailwindcss-animate": "^1.0.7", + "vaul": "^0.9.9", + "zod": "3.25.76" + }, + "devDependencies": { + "@tailwindcss/postcss": "^4.1.9", + "@types/node": "^22", + "@types/react": "^19", + "@types/react-dom": "^19", + "postcss": "^8.5", + "tailwindcss": "^4.1.9", + "tw-animate-css": "1.3.3", + "typescript": "^5" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@babel/runtime": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", + "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@date-fns/tz": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@date-fns/tz/-/tz-1.2.0.tgz", + "integrity": "sha512-LBrd7MiJZ9McsOgxqWX7AaxrDjcFVjWH/tIKJd7pnR7McaslGYOP1QmmiBXdJH/H/yLCT+rcQ7FaPBUxRGUtrg==" + }, + "node_modules/@emnapi/runtime": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz", + "integrity": "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz", + "integrity": "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==", + "dependencies": { + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.4.tgz", + "integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==", + "dependencies": { + "@floating-ui/core": "^1.7.3", + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.6.tgz", + "integrity": "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==", + "dependencies": { + "@floating-ui/dom": "^1.7.4" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", + "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==" + }, + "node_modules/@hookform/resolvers": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-3.10.0.tgz", + "integrity": "sha512-79Dv+3mDF7i+2ajj7SkypSKHhl1cbln1OGavqrsF7p6mbUv11xpqpacPsGDCTRvCSjEEIez2ef1NveSVL3b0Ag==", + "peerDependencies": { + "react-hook-form": "^7.0.0" + } + }, + "node_modules/@img/colour": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.0.0.tgz", + "integrity": "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==", + "optional": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", + "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", + "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", + "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", + "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", + "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", + "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", + "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", + "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", + "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", + "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", + "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz", + "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", + "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", + "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", + "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-riscv64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", + "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-riscv64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", + "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", + "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", + "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", + "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", + "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", + "cpu": [ + "wasm32" + ], + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.7.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", + "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", + "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", + "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@next/env": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/@next/env/-/env-16.0.3.tgz", + "integrity": "sha512-IqgtY5Vwsm14mm/nmQaRMmywCU+yyMIYfk3/MHZ2ZTJvwVbBn3usZnjMi1GacrMVzVcAxJShTCpZlPs26EdEjQ==" + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.0.3.tgz", + "integrity": "sha512-MOnbd92+OByu0p6QBAzq1ahVWzF6nyfiH07dQDez4/Nku7G249NjxDVyEfVhz8WkLiOEU+KFVnqtgcsfP2nLXg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.0.3.tgz", + "integrity": "sha512-i70C4O1VmbTivYdRlk+5lj9xRc2BlK3oUikt3yJeHT1unL4LsNtN7UiOhVanFdc7vDAgZn1tV/9mQwMkWOJvHg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.0.3.tgz", + "integrity": "sha512-O88gCZ95sScwD00mn/AtalyCoykhhlokxH/wi1huFK+rmiP5LAYVs/i2ruk7xST6SuXN4NI5y4Xf5vepb2jf6A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.0.3.tgz", + "integrity": "sha512-CEErFt78S/zYXzFIiv18iQCbRbLgBluS8z1TNDQoyPi8/Jr5qhR3e8XHAIxVxPBjDbEMITprqELVc5KTfFj0gg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.0.3.tgz", + "integrity": "sha512-Tc3i+nwt6mQ+Dwzcri/WNDj56iWdycGVh5YwwklleClzPzz7UpfaMw1ci7bLl6GRYMXhWDBfe707EXNjKtiswQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.0.3.tgz", + "integrity": "sha512-zTh03Z/5PBBPdTurgEtr6nY0vI9KR9Ifp/jZCcHlODzwVOEKcKRBtQIGrkc7izFgOMuXDEJBmirwpGqdM/ZixA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.0.3.tgz", + "integrity": "sha512-Jc1EHxtZovcJcg5zU43X3tuqzl/sS+CmLgjRP28ZT4vk869Ncm2NoF8qSTaL99gh6uOzgM99Shct06pSO6kA6g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.0.3.tgz", + "integrity": "sha512-N7EJ6zbxgIYpI/sWNzpVKRMbfEGgsWuOIvzkML7wxAAZhPk1Msxuo/JDu1PKjWGrAoOLaZcIX5s+/pF5LIbBBg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@radix-ui/number": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.0.tgz", + "integrity": "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==" + }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.1.tgz", + "integrity": "sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==" + }, + "node_modules/@radix-ui/react-accordion": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.2.2.tgz", + "integrity": "sha512-b1oh54x4DMCdGsB4/7ahiSrViXxaBwRPotiZNnYXjLha9vfuURSAZErki6qjDoSIV0eXx5v57XnTGVtGwnfp2g==", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-collapsible": "1.1.2", + "@radix-ui/react-collection": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-alert-dialog": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.1.4.tgz", + "integrity": "sha512-A6Kh23qZDLy3PSU4bh2UJZznOrUdHImIXqF8YtUa6CN73f8EOO9XlXSCd9IHyPvIquTaa/kwaSWzZTtUvgXVGw==", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dialog": "1.1.4", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-slot": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-alert-dialog/node_modules/@radix-ui/react-slot": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.1.tgz", + "integrity": "sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.1.tgz", + "integrity": "sha512-NaVpZfmv8SKeZbn4ijN2V3jlHA9ngBG16VnIIm22nUR0Yk8KUALyBxT3KYEUnNuch9sTE8UTsS3whzBgKOL30w==", + "dependencies": { + "@radix-ui/react-primitive": "2.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-aspect-ratio": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-aspect-ratio/-/react-aspect-ratio-1.1.1.tgz", + "integrity": "sha512-kNU4FIpcFMBLkOUcgeIteH06/8JLBcYY6Le1iKenDGCYNYFX3TQqCZjzkOsz37h7r94/99GTb7YhEr98ZBJibw==", + "dependencies": { + "@radix-ui/react-primitive": "2.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-avatar": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-avatar/-/react-avatar-1.1.2.tgz", + "integrity": "sha512-GaC7bXQZ5VgZvVvsJ5mu/AEbjYLnhhkoidOboC50Z6FFlLA03wG2ianUoH+zgDQ31/9gCF59bE4+2bBgTyMiig==", + "dependencies": { + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-checkbox": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.1.3.tgz", + "integrity": "sha512-HD7/ocp8f1B3e6OHygH0n7ZKjONkhciy1Nh0yuBgObqThc3oyx+vuMfFHKAknXRHHWVE9XvXStxJFyjUmB8PIw==", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.2.tgz", + "integrity": "sha512-PliMB63vxz7vggcyq0IxNYk8vGDrLXVWw4+W4B8YnwI1s18x7YZYqlG9PLX7XxAJUi0g2DxP4XKJMFHh/iVh9A==", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.1.tgz", + "integrity": "sha512-LwT3pSho9Dljg+wY2KN2mrrh6y3qELfftINERIzBUO9e0N+t0oMTyn3k9iv+ZqgrwGkRnLpNJrsMv9BZlt2yuA==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-slot": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-slot": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.1.tgz", + "integrity": "sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.1.tgz", + "integrity": "sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.1.tgz", + "integrity": "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context-menu": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context-menu/-/react-context-menu-2.2.4.tgz", + "integrity": "sha512-ap4wdGwK52rJxGkwukU1NrnEodsUFQIooANKu+ey7d6raQ2biTcEf8za1zr0mgFHieevRTB2nK4dJeN8pTAZGQ==", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-menu": "2.1.4", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.4.tgz", + "integrity": "sha512-Ur7EV1IwQGCyaAuyDRiOLA5JIUZxELJljF+MbM/2NC0BYwfuRrbpS30BiQBJrVruscgUkieKkqXYDOoByaxIoA==", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.3", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.1", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-portal": "1.1.3", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-slot": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.1.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "^2.6.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-slot": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.1.tgz", + "integrity": "sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", + "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.3.tgz", + "integrity": "sha512-onrWn/72lQoEucDmJnr8uczSNTujT0vJnA/X5+3AkChVPowr8n1yvIKIabhWyMQeMvvmdpsvcyDqx3X1LEXCPg==", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-escape-keydown": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dropdown-menu": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.4.tgz", + "integrity": "sha512-iXU1Ab5ecM+yEepGAWK8ZhMyKX4ubFdCNtol4sT9D0OVErG9PNElfx3TQhjw7n7BC5nFVz68/5//clWy+8TXzA==", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-menu": "2.1.4", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz", + "integrity": "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.1.tgz", + "integrity": "sha512-01omzJAYRxXdG2/he/+xy+c8a8gCydoQ1yOxnWNcRhrrBW5W+RQJ22EK1SaO8tb3WoUsuEw7mJjBozPzihDFjA==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-hover-card": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-hover-card/-/react-hover-card-1.1.4.tgz", + "integrity": "sha512-QSUUnRA3PQ2UhvoCv3eYvMnCAgGQW+sTu86QPuNb+ZMi+ZENd6UWpiXbcWDQ4AEaKF9KKpCHBeaJz9Rw6lRlaQ==", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.3", + "@radix-ui/react-popper": "1.2.1", + "@radix-ui/react-portal": "1.1.3", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz", + "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.1.tgz", + "integrity": "sha512-UUw5E4e/2+4kFMH7+YxORXGWggtY6sM8WIwh5RZchhLuUg2H1hc98Py+pr8HMz6rdaYrK2t296ZEjYLOCO5uUw==", + "dependencies": { + "@radix-ui/react-primitive": "2.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menu": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.4.tgz", + "integrity": "sha512-BnOgVoL6YYdHAG6DtXONaR29Eq4nvbi8rutrV/xlr3RQCMMb3yqP85Qiw/3NReozrSW+4dfLkK+rc1hb4wPU/A==", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-collection": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.3", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.1", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.1", + "@radix-ui/react-portal": "1.1.3", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-roving-focus": "1.1.1", + "@radix-ui/react-slot": "1.1.1", + "@radix-ui/react-use-callback-ref": "1.1.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "^2.6.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-slot": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.1.tgz", + "integrity": "sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menubar": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menubar/-/react-menubar-1.1.4.tgz", + "integrity": "sha512-+KMpi7VAZuB46+1LD7a30zb5IxyzLgC8m8j42gk3N4TUCcViNQdX8FhoH1HDvYiA8quuqcek4R4bYpPn/SY1GA==", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-collection": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-menu": "2.1.4", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-roving-focus": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-navigation-menu": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.3.tgz", + "integrity": "sha512-IQWAsQ7dsLIYDrn0WqPU+cdM7MONTv9nqrLVYoie3BPiabSfUVDe6Fr+oEt0Cofsr9ONDcDe9xhmJbL1Uq1yKg==", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-collection": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.3", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.4.tgz", + "integrity": "sha512-aUACAkXx8LaFymDma+HQVji7WhvEhpFJ7+qPz17Nf4lLZqtreGOFRiNQWQmhzp7kEWg9cOyyQJpdIMUMPc/CPw==", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.3", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.1", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.1", + "@radix-ui/react-portal": "1.1.3", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-slot": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.1.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "^2.6.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-slot": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.1.tgz", + "integrity": "sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.1.tgz", + "integrity": "sha512-3kn5Me69L+jv82EKRuQCXdYyf1DqHwD2U/sxoNgBGCB7K9TRc3bQamQ+5EPM9EvyPdli0W41sROd+ZU1dTCztw==", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-rect": "1.1.0", + "@radix-ui/react-use-size": "1.1.0", + "@radix-ui/rect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.3.tgz", + "integrity": "sha512-NciRqhXnGojhT93RPyDaMPfLH3ZSl4jjIFbZQ1b/vxvZEdHsBZ49wP9w8L3HzUQwep01LcWtkUvm0OVB5JAHTw==", + "dependencies": { + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.2.tgz", + "integrity": "sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.1.tgz", + "integrity": "sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg==", + "dependencies": { + "@radix-ui/react-slot": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.1.tgz", + "integrity": "sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-progress": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-progress/-/react-progress-1.1.1.tgz", + "integrity": "sha512-6diOawA84f/eMxFHcWut0aE1C2kyE9dOyCTQOMRR2C/qPiXz/X0SaiA/RLbapQaXUCmy0/hLMf9meSccD1N0pA==", + "dependencies": { + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-primitive": "2.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-radio-group/-/react-radio-group-1.2.2.tgz", + "integrity": "sha512-E0MLLGfOP0l8P/NxgVzfXJ8w3Ch8cdO6UDzJfDChu4EJDy+/WdO5LqpdY8PYnCErkmZH3gZhDL1K7kQ41fAHuQ==", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-roving-focus": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.1.tgz", + "integrity": "sha512-QE1RoxPGJ/Nm8Qmk0PxP8ojmoaS67i0s7hVssS7KuI2FQoc/uzVlZsqKfQvxPE6D8hICCPHJ4D88zNhT3OOmkw==", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-collection": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-scroll-area": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.2.tgz", + "integrity": "sha512-EFI1N/S3YxZEW/lJ/H1jY3njlvTd8tBmgKEn4GHi51+aMm94i6NmAJstsm5cu3yJwYqYc93gpCPm21FeAbFk6g==", + "dependencies": { + "@radix-ui/number": "1.1.0", + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.4.tgz", + "integrity": "sha512-pOkb2u8KgO47j/h7AylCj7dJsm69BXcjkrvTqMptFqsE2i0p8lHkfgneXKjAgPzBMivnoMyt8o4KiV4wYzDdyQ==", + "dependencies": { + "@radix-ui/number": "1.1.0", + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-collection": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.3", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.1", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.1", + "@radix-ui/react-portal": "1.1.3", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-slot": "1.1.1", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.1", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "^2.6.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-slot": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.1.tgz", + "integrity": "sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-separator": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.1.1.tgz", + "integrity": "sha512-RRiNRSrD8iUiXriq/Y5n4/3iE8HzqgLHsusUSg5jVpU2+3tqcUFPJXHDymwEypunc2sWxDUS3UC+rkZRlHedsw==", + "dependencies": { + "@radix-ui/react-primitive": "2.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slider": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slider/-/react-slider-1.2.2.tgz", + "integrity": "sha512-sNlU06ii1/ZcbHf8I9En54ZPW0Vil/yPVg4vQMcFNjrIx51jsHbFl1HYHQvCIWJSr1q0ZmA+iIs/ZTv8h7HHSA==", + "dependencies": { + "@radix-ui/number": "1.1.0", + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-collection": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.4.tgz", + "integrity": "sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.1.2.tgz", + "integrity": "sha512-zGukiWHjEdBCRyXvKR6iXAQG6qXm2esuAD6kDOi9Cn+1X6ev3ASo4+CsYaD6Fov9r/AQFekqnD/7+V0Cs6/98g==", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.2.tgz", + "integrity": "sha512-9u/tQJMcC2aGq7KXpGivMm1mgq7oRJKXphDwdypPd/j21j/2znamPU8WkXgnhUaTrSFNIt8XhOyCAupg8/GbwQ==", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-roving-focus": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toast": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.2.4.tgz", + "integrity": "sha512-Sch9idFJHJTMH9YNpxxESqABcAFweJG4tKv+0zo0m5XBvUSL8FM5xKcJLFLXononpePs8IclyX1KieL5SDUNgA==", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-collection": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.3", + "@radix-ui/react-portal": "1.1.3", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.1.tgz", + "integrity": "sha512-i77tcgObYr743IonC1hrsnnPmszDRn8p+EGUsUt+5a/JFn28fxaM88Py6V2mc8J5kELMWishI0rLnuGLFD/nnQ==", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.1.tgz", + "integrity": "sha512-OgDLZEA30Ylyz8YSXvnGqIHtERqnUt1KUYTKdw/y8u7Ci6zGiJfXc02jahmcSNK3YcErqioj/9flWC9S1ihfwg==", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-roving-focus": "1.1.1", + "@radix-ui/react-toggle": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.2.8.tgz", + "integrity": "sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==" + }, + "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-arrow": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz", + "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", + "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-id": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-popper": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.8.tgz", + "integrity": "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-portal": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", + "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-presence": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", + "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", + "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-use-rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", + "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==", + "dependencies": { + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-use-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", + "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-visually-hidden": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz", + "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", + "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==" + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", + "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", + "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-effect-event": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", + "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-effect-event/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz", + "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", + "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz", + "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz", + "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==", + "dependencies": { + "@radix-ui/rect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", + "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.1.tgz", + "integrity": "sha512-vVfA2IZ9q/J+gEamvj761Oq1FpWgCDaNOOIfbPVp2MVPLEomUr5+Vf7kJGwQ24YxZSlQVar7Bes8kyTo5Dshpg==", + "dependencies": { + "@radix-ui/react-primitive": "2.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.0.tgz", + "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==" + }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.17.tgz", + "integrity": "sha512-csIkHIgLb3JisEFQ0vxr2Y57GUNYh447C8xzwj89U/8fdW8LhProdxvnVH6U8M2Y73QKiTIH+LWbK3V2BBZsAg==", + "dev": true, + "dependencies": { + "@jridgewell/remapping": "^2.3.4", + "enhanced-resolve": "^5.18.3", + "jiti": "^2.6.1", + "lightningcss": "1.30.2", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.17" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.17.tgz", + "integrity": "sha512-F0F7d01fmkQhsTjXezGBLdrl1KresJTcI3DB8EkScCldyKp3Msz4hub4uyYaVnk88BAS1g5DQjjF6F5qczheLA==", + "dev": true, + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.17", + "@tailwindcss/oxide-darwin-arm64": "4.1.17", + "@tailwindcss/oxide-darwin-x64": "4.1.17", + "@tailwindcss/oxide-freebsd-x64": "4.1.17", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.17", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.17", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.17", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.17", + "@tailwindcss/oxide-linux-x64-musl": "4.1.17", + "@tailwindcss/oxide-wasm32-wasi": "4.1.17", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.17", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.17" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.17.tgz", + "integrity": "sha512-BMqpkJHgOZ5z78qqiGE6ZIRExyaHyuxjgrJ6eBO5+hfrfGkuya0lYfw8fRHG77gdTjWkNWEEm+qeG2cDMxArLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.17.tgz", + "integrity": "sha512-EquyumkQweUBNk1zGEU/wfZo2qkp/nQKRZM8bUYO0J+Lums5+wl2CcG1f9BgAjn/u9pJzdYddHWBiFXJTcxmOg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.17.tgz", + "integrity": "sha512-gdhEPLzke2Pog8s12oADwYu0IAw04Y2tlmgVzIN0+046ytcgx8uZmCzEg4VcQh+AHKiS7xaL8kGo/QTiNEGRog==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.17.tgz", + "integrity": "sha512-hxGS81KskMxML9DXsaXT1H0DyA+ZBIbyG/sSAjWNe2EDl7TkPOBI42GBV3u38itzGUOmFfCzk1iAjDXds8Oh0g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.17.tgz", + "integrity": "sha512-k7jWk5E3ldAdw0cNglhjSgv501u7yrMf8oeZ0cElhxU6Y2o7f8yqelOp3fhf7evjIS6ujTI3U8pKUXV2I4iXHQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.17.tgz", + "integrity": "sha512-HVDOm/mxK6+TbARwdW17WrgDYEGzmoYayrCgmLEw7FxTPLcp/glBisuyWkFz/jb7ZfiAXAXUACfyItn+nTgsdQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.17.tgz", + "integrity": "sha512-HvZLfGr42i5anKtIeQzxdkw/wPqIbpeZqe7vd3V9vI3RQxe3xU1fLjss0TjyhxWcBaipk7NYwSrwTwK1hJARMg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.17.tgz", + "integrity": "sha512-M3XZuORCGB7VPOEDH+nzpJ21XPvK5PyjlkSFkFziNHGLc5d6g3di2McAAblmaSUNl8IOmzYwLx9NsE7bplNkwQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.17.tgz", + "integrity": "sha512-k7f+pf9eXLEey4pBlw+8dgfJHY4PZ5qOUFDyNf7SI6lHjQ9Zt7+NcscjpwdCEbYi6FI5c2KDTDWyf2iHcCSyyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.17.tgz", + "integrity": "sha512-cEytGqSSoy7zK4JRWiTCx43FsKP/zGr0CsuMawhH67ONlH+T79VteQeJQRO/X7L0juEUA8ZyuYikcRBf0vsxhg==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "dev": true, + "optional": true, + "dependencies": { + "@emnapi/core": "^1.6.0", + "@emnapi/runtime": "^1.6.0", + "@emnapi/wasi-threads": "^1.1.0", + "@napi-rs/wasm-runtime": "^1.0.7", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.17.tgz", + "integrity": "sha512-JU5AHr7gKbZlOGvMdb4722/0aYbU+tN6lv1kONx0JK2cGsh7g148zVWLM0IKR3NeKLv+L90chBVYcJ8uJWbC9A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.17.tgz", + "integrity": "sha512-SKWM4waLuqx0IH+FMDUw6R66Hu4OuTALFgnleKbqhgGU30DY20NORZMZUKgLRjQXNN2TLzKvh48QXTig4h4bGw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/postcss": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.1.17.tgz", + "integrity": "sha512-+nKl9N9mN5uJ+M7dBOOCzINw94MPstNR/GtIhz1fpZysxL/4a+No64jCBD6CPN+bIHWFx3KWuu8XJRrj/572Dw==", + "dev": true, + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "@tailwindcss/node": "4.1.17", + "@tailwindcss/oxide": "4.1.17", + "postcss": "^8.4.41", + "tailwindcss": "4.1.17" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-shape": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz", + "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==" + }, + "node_modules/@types/node": { + "version": "22.19.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.1.tgz", + "integrity": "sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ==", + "dev": true, + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/react": { + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.6.tgz", + "integrity": "sha512-p/jUvulfgU7oKtj6Xpk8cA2Y1xKTtICGpJYeJXz2YVO2UcvjQgeRMLDGfDeqeRW2Ta+0QNFwcc8X3GH8SxZz6w==", + "dev": true, + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "dev": true, + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@vercel/analytics": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@vercel/analytics/-/analytics-1.5.0.tgz", + "integrity": "sha512-MYsBzfPki4gthY5HnYN7jgInhAZ7Ac1cYDoRWFomwGHWEX7odTEzbtg9kf/QSo7XEsEAqlQugA6gJ2WS2DEa3g==", + "peerDependencies": { + "@remix-run/react": "^2", + "@sveltejs/kit": "^1 || ^2", + "next": ">= 13", + "react": "^18 || ^19 || ^19.0.0-rc", + "svelte": ">= 4", + "vue": "^3", + "vue-router": "^4" + }, + "peerDependenciesMeta": { + "@remix-run/react": { + "optional": true + }, + "@sveltejs/kit": { + "optional": true + }, + "next": { + "optional": true + }, + "react": { + "optional": true + }, + "svelte": { + "optional": true + }, + "vue": { + "optional": true + }, + "vue-router": { + "optional": true + } + } + }, + "node_modules/aria-hidden": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", + "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.22", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.22.tgz", + "integrity": "sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.27.0", + "caniuse-lite": "^1.0.30001754", + "fraction.js": "^5.3.4", + "normalize-range": "^0.1.2", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.8.30", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.30.tgz", + "integrity": "sha512-aTUKW4ptQhS64+v2d6IkPzymEzzhw+G0bA1g3uBRV3+ntkH+svttKseW5IOR4Ed6NUVKqnY7qT3dKvzQ7io4AA==", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/browserslist": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz", + "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "baseline-browser-mapping": "^2.8.25", + "caniuse-lite": "^1.0.30001754", + "electron-to-chromium": "^1.5.249", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.1.4" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001756", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001756.tgz", + "integrity": "sha512-4HnCNKbMLkLdhJz3TToeVWHSnfJvPaq6vu/eRP0Ahub/07n484XHhBF5AJoSGHdVrS8tKFauUQz8Bp9P7LVx7A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/class-variance-authority": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", + "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "dependencies": { + "clsx": "^2.1.1" + }, + "funding": { + "url": "https://polar.sh/cva" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/cmdk": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cmdk/-/cmdk-1.0.4.tgz", + "integrity": "sha512-AnsjfHyHpQ/EFeAnG216WY7A5LiYCoZzCSygiLvfXC3H3LFGCprErteUcszaVluGOhuOTbJS3jWHrSDYPBBygg==", + "dependencies": { + "@radix-ui/react-dialog": "^1.1.2", + "@radix-ui/react-id": "^1.1.0", + "@radix-ui/react-primitive": "^2.0.0", + "use-sync-external-store": "^1.2.2" + }, + "peerDependencies": { + "react": "^18 || ^19 || ^19.0.0-rc", + "react-dom": "^18 || ^19 || ^19.0.0-rc" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==" + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/date-fns": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", + "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, + "node_modules/date-fns-jalali": { + "version": "4.1.0-0", + "resolved": "https://registry.npmjs.org/date-fns-jalali/-/date-fns-jalali-4.1.0-0.tgz", + "integrity": "sha512-hTIP/z+t+qKwBDcmmsnmjWTduxCg+5KfdqWQvb2X/8C9+knYY6epN/pfxdDuyVlSVeFz0sM5eEfwIUQ70U4ckg==" + }, + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==" + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.259", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.259.tgz", + "integrity": "sha512-I+oLXgpEJzD6Cwuwt1gYjxsDmu/S/Kd41mmLA3O+/uH2pFRO/DvOjUyGozL8j3KeLV6WyZ7ssPwELMsXCcsJAQ==" + }, + "node_modules/embla-carousel": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.5.1.tgz", + "integrity": "sha512-JUb5+FOHobSiWQ2EJNaueCNT/cQU9L6XWBbWmorWPQT9bkbk+fhsuLr8wWrzXKagO3oWszBO7MSx+GfaRk4E6A==" + }, + "node_modules/embla-carousel-react": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/embla-carousel-react/-/embla-carousel-react-8.5.1.tgz", + "integrity": "sha512-z9Y0K84BJvhChXgqn2CFYbfEi6AwEr+FFVVKm/MqbTQ2zIzO1VQri6w67LcfpVF0AjbhwVMywDZqY4alYkjW5w==", + "dependencies": { + "embla-carousel": "8.5.1", + "embla-carousel-reactive-utils": "8.5.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/embla-carousel-reactive-utils": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/embla-carousel-reactive-utils/-/embla-carousel-reactive-utils-8.5.1.tgz", + "integrity": "sha512-n7VSoGIiiDIc4MfXF3ZRTO59KDp820QDuyBDGlt5/65+lumPHxX2JLz0EZ23hZ4eg4vZGUXwMkYv02fw2JVo/A==", + "peerDependencies": { + "embla-carousel": "8.5.1" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.18.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", + "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/fast-equals": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.3.3.tgz", + "integrity": "sha512-/boTcHZeIAQ2r/tL11voclBHDeP9WPxLt+tyAbVSyyXuUFyh0Tne7gJZTqGbxnvj79TjLdCXLOY7UIPhyG5MTw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/input-otp": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/input-otp/-/input-otp-1.4.1.tgz", + "integrity": "sha512-+yvpmKYKHi9jIGngxagY9oWiiblPB7+nEO75F2l2o4vs+6vpPZZmUl4tBNYuTCvQjhvEIbdNeJu70bhfYP2nbw==", + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "dev": true, + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/lightningcss": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz", + "integrity": "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==", + "dev": true, + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.30.2", + "lightningcss-darwin-arm64": "1.30.2", + "lightningcss-darwin-x64": "1.30.2", + "lightningcss-freebsd-x64": "1.30.2", + "lightningcss-linux-arm-gnueabihf": "1.30.2", + "lightningcss-linux-arm64-gnu": "1.30.2", + "lightningcss-linux-arm64-musl": "1.30.2", + "lightningcss-linux-x64-gnu": "1.30.2", + "lightningcss-linux-x64-musl": "1.30.2", + "lightningcss-win32-arm64-msvc": "1.30.2", + "lightningcss-win32-x64-msvc": "1.30.2" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz", + "integrity": "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz", + "integrity": "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz", + "integrity": "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz", + "integrity": "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz", + "integrity": "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz", + "integrity": "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz", + "integrity": "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz", + "integrity": "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz", + "integrity": "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz", + "integrity": "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz", + "integrity": "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lucide-react": { + "version": "0.454.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.454.0.tgz", + "integrity": "sha512-hw7zMDwykCLnEzgncEEjHeA6+45aeEzRYuKHuyRSOPkhko+J3ySGjGIzu+mmMfDFG1vazHepMaYFYHbTFAZAAQ==", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/next": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/next/-/next-16.0.3.tgz", + "integrity": "sha512-Ka0/iNBblPFcIubTA1Jjh6gvwqfjrGq1Y2MTI5lbjeLIAfmC+p5bQmojpRZqgHHVu5cG4+qdIiwXiBSm/8lZ3w==", + "dependencies": { + "@next/env": "16.0.3", + "@swc/helpers": "0.5.15", + "caniuse-lite": "^1.0.30001579", + "postcss": "8.4.31", + "styled-jsx": "5.1.6" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": ">=20.9.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "16.0.3", + "@next/swc-darwin-x64": "16.0.3", + "@next/swc-linux-arm64-gnu": "16.0.3", + "@next/swc-linux-arm64-musl": "16.0.3", + "@next/swc-linux-x64-gnu": "16.0.3", + "@next/swc-linux-x64-musl": "16.0.3", + "@next/swc-win32-arm64-msvc": "16.0.3", + "@next/swc-win32-x64-msvc": "16.0.3", + "sharp": "^0.34.4" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.51.1", + "babel-plugin-react-compiler": "*", + "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/next-themes": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.4.6.tgz", + "integrity": "sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==", + "peerDependencies": { + "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" + } + }, + "node_modules/next/node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==" + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react": { + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", + "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-day-picker": { + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/react-day-picker/-/react-day-picker-9.8.0.tgz", + "integrity": "sha512-E0yhhg7R+pdgbl/2toTb0xBhsEAtmAx1l7qjIWYfcxOy8w4rTSVfbtBoSzVVhPwKP/5E9iL38LivzoE3AQDhCQ==", + "dependencies": { + "@date-fns/tz": "1.2.0", + "date-fns": "4.1.0", + "date-fns-jalali": "4.1.0-0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/gpbl" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", + "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.0" + } + }, + "node_modules/react-hook-form": { + "version": "7.66.1", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.66.1.tgz", + "integrity": "sha512-2KnjpgG2Rhbi+CIiIBQQ9Df6sMGH5ExNyFl4Hw9qO7pIqMBR8Bvu9RQyjl3JM4vehzCh9soiNUM/xYMswb2EiA==", + "engines": { + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/react-hook-form" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18 || ^19" + } + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + }, + "node_modules/react-remove-scroll": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.1.tgz", + "integrity": "sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==", + "dependencies": { + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "dependencies": { + "react-style-singleton": "^2.2.2", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-resizable-panels": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/react-resizable-panels/-/react-resizable-panels-2.1.9.tgz", + "integrity": "sha512-z77+X08YDIrgAes4jl8xhnUu1LNIRp4+E7cv4xHmLOxxUPO/ML7PSrE813b90vj7xvQ1lcf7g2uA9GeMZonjhQ==", + "peerDependencies": { + "react": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/react-smooth": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-4.0.4.tgz", + "integrity": "sha512-gnGKTpYwqL0Iii09gHobNolvX4Kiq4PKx6eWBCYYix+8cdw+cGo3do906l1NBPKkSWx1DghC1dlWG9L2uGd61Q==", + "dependencies": { + "fast-equals": "^5.0.1", + "prop-types": "^15.8.1", + "react-transition-group": "^4.4.5" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "dependencies": { + "get-nonce": "^1.0.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/recharts": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.15.4.tgz", + "integrity": "sha512-UT/q6fwS3c1dHbXv2uFgYJ9BMFHu3fwnd7AYZaEQhXuYQ4hgsxLvsUXzGdKeZrW5xopzDCvuA2N41WJ88I7zIw==", + "dependencies": { + "clsx": "^2.0.0", + "eventemitter3": "^4.0.1", + "lodash": "^4.17.21", + "react-is": "^18.3.1", + "react-smooth": "^4.0.4", + "recharts-scale": "^0.4.4", + "tiny-invariant": "^1.3.1", + "victory-vendor": "^36.6.8" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/recharts-scale": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz", + "integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==", + "dependencies": { + "decimal.js-light": "^2.4.1" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==" + }, + "node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sharp": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", + "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "@img/colour": "^1.0.0", + "detect-libc": "^2.1.2", + "semver": "^7.7.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.34.5", + "@img/sharp-darwin-x64": "0.34.5", + "@img/sharp-libvips-darwin-arm64": "1.2.4", + "@img/sharp-libvips-darwin-x64": "1.2.4", + "@img/sharp-libvips-linux-arm": "1.2.4", + "@img/sharp-libvips-linux-arm64": "1.2.4", + "@img/sharp-libvips-linux-ppc64": "1.2.4", + "@img/sharp-libvips-linux-riscv64": "1.2.4", + "@img/sharp-libvips-linux-s390x": "1.2.4", + "@img/sharp-libvips-linux-x64": "1.2.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", + "@img/sharp-libvips-linuxmusl-x64": "1.2.4", + "@img/sharp-linux-arm": "0.34.5", + "@img/sharp-linux-arm64": "0.34.5", + "@img/sharp-linux-ppc64": "0.34.5", + "@img/sharp-linux-riscv64": "0.34.5", + "@img/sharp-linux-s390x": "0.34.5", + "@img/sharp-linux-x64": "0.34.5", + "@img/sharp-linuxmusl-arm64": "0.34.5", + "@img/sharp-linuxmusl-x64": "0.34.5", + "@img/sharp-wasm32": "0.34.5", + "@img/sharp-win32-arm64": "0.34.5", + "@img/sharp-win32-ia32": "0.34.5", + "@img/sharp-win32-x64": "0.34.5" + } + }, + "node_modules/sonner": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/sonner/-/sonner-1.7.4.tgz", + "integrity": "sha512-DIS8z4PfJRbIyfVFDVnK9rO3eYDtse4Omcm6bt0oEr5/jtLgysmjuBl1frJ9E/EQZrFmKx2A8m/s5s9CRXIzhw==", + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/styled-jsx": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", + "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/tailwind-merge": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.6.0.tgz", + "integrity": "sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.17.tgz", + "integrity": "sha512-j9Ee2YjuQqYT9bbRTfTZht9W/ytp5H+jJpZKiYdP/bpnXARAuELt9ofP0lPnmHjbga7SNQIxdTAXCmtKVYjN+Q==", + "dev": true + }, + "node_modules/tailwindcss-animate": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz", + "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==", + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders" + } + }, + "node_modules/tapable": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + }, + "node_modules/tw-animate-css": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tw-animate-css/-/tw-animate-css-1.3.3.tgz", + "integrity": "sha512-tXE2TRWrskc4TU3RDd7T8n8Np/wCfoeH9gz22c7PzYqNPQ9FBGFbWWzwL0JyHcFp+jHozmF76tbHfPAx22ua2Q==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/Wombosvideo" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true + }, + "node_modules/update-browserslist-db": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz", + "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/vaul": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/vaul/-/vaul-0.9.9.tgz", + "integrity": "sha512-7afKg48srluhZwIkaU+lgGtFCUsYBSGOl8vcc8N/M3YQlZFlynHD15AE+pwrYdc826o7nrIND4lL9Y6b9WWZZQ==", + "dependencies": { + "@radix-ui/react-dialog": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/victory-vendor": { + "version": "36.9.2", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.9.2.tgz", + "integrity": "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==", + "dependencies": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" + } + }, + "node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } +} diff --git a/usecase/solar-political-influence-analyzer/src/frontend/package.json b/usecase/solar-political-influence-analyzer/src/frontend/package.json new file mode 100644 index 0000000..6769391 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/package.json @@ -0,0 +1,73 @@ +{ + "name": "my-v0-project", + "version": "0.1.0", + "private": true, + "scripts": { + "build": "next build", + "dev": "next dev", + "lint": "eslint .", + "start": "next start" + }, + "dependencies": { + "@hookform/resolvers": "^3.10.0", + "@radix-ui/react-accordion": "1.2.2", + "@radix-ui/react-alert-dialog": "1.1.4", + "@radix-ui/react-aspect-ratio": "1.1.1", + "@radix-ui/react-avatar": "1.1.2", + "@radix-ui/react-checkbox": "1.1.3", + "@radix-ui/react-collapsible": "1.1.2", + "@radix-ui/react-context-menu": "2.2.4", + "@radix-ui/react-dialog": "1.1.4", + "@radix-ui/react-dropdown-menu": "2.1.4", + "@radix-ui/react-hover-card": "1.1.4", + "@radix-ui/react-label": "2.1.1", + "@radix-ui/react-menubar": "1.1.4", + "@radix-ui/react-navigation-menu": "1.2.3", + "@radix-ui/react-popover": "1.1.4", + "@radix-ui/react-progress": "1.1.1", + "@radix-ui/react-radio-group": "1.2.2", + "@radix-ui/react-scroll-area": "1.2.2", + "@radix-ui/react-select": "2.1.4", + "@radix-ui/react-separator": "1.1.1", + "@radix-ui/react-slider": "1.2.2", + "@radix-ui/react-slot": "latest", + "@radix-ui/react-switch": "1.1.2", + "@radix-ui/react-tabs": "1.1.2", + "@radix-ui/react-toast": "1.2.4", + "@radix-ui/react-toggle": "1.1.1", + "@radix-ui/react-toggle-group": "1.1.1", + "@radix-ui/react-tooltip": "latest", + "@vercel/analytics": "latest", + "autoprefixer": "^10.4.20", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "cmdk": "1.0.4", + "date-fns": "4.1.0", + "embla-carousel-react": "8.5.1", + "input-otp": "1.4.1", + "lucide-react": "^0.454.0", + "next": "16.0.3", + "next-themes": "latest", + "react": "19.2.0", + "react-day-picker": "9.8.0", + "react-dom": "19.2.0", + "react-hook-form": "^7.60.0", + "react-resizable-panels": "^2.1.7", + "recharts": "2.15.4", + "sonner": "^1.7.4", + "tailwind-merge": "^2.5.5", + "tailwindcss-animate": "^1.0.7", + "vaul": "^0.9.9", + "zod": "3.25.76" + }, + "devDependencies": { + "@tailwindcss/postcss": "^4.1.9", + "@types/node": "^22", + "@types/react": "^19", + "@types/react-dom": "^19", + "postcss": "^8.5", + "tailwindcss": "^4.1.9", + "tw-animate-css": "1.3.3", + "typescript": "^5" + } +} \ No newline at end of file diff --git a/usecase/solar-political-influence-analyzer/src/frontend/pnpm-lock.yaml b/usecase/solar-political-influence-analyzer/src/frontend/pnpm-lock.yaml new file mode 100644 index 0000000..40e281f --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/pnpm-lock.yaml @@ -0,0 +1,3539 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@hookform/resolvers': + specifier: ^3.10.0 + version: 3.10.0(react-hook-form@7.60.0(react@19.2.0)) + '@radix-ui/react-accordion': + specifier: 1.2.2 + version: 1.2.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-alert-dialog': + specifier: 1.1.4 + version: 1.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-aspect-ratio': + specifier: 1.1.1 + version: 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-avatar': + specifier: 1.1.2 + version: 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-checkbox': + specifier: 1.1.3 + version: 1.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-collapsible': + specifier: 1.1.2 + version: 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-context-menu': + specifier: 2.2.4 + version: 2.2.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-dialog': + specifier: 1.1.4 + version: 1.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-dropdown-menu': + specifier: 2.1.4 + version: 2.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-hover-card': + specifier: 1.1.4 + version: 1.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-label': + specifier: 2.1.1 + version: 2.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-menubar': + specifier: 1.1.4 + version: 1.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-navigation-menu': + specifier: 1.2.3 + version: 1.2.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-popover': + specifier: 1.1.4 + version: 1.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-progress': + specifier: 1.1.1 + version: 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-radio-group': + specifier: 1.2.2 + version: 1.2.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-scroll-area': + specifier: 1.2.2 + version: 1.2.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-select': + specifier: 2.1.4 + version: 2.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-separator': + specifier: 1.1.1 + version: 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-slider': + specifier: 1.2.2 + version: 1.2.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-slot': + specifier: latest + version: 1.2.4(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-switch': + specifier: 1.1.2 + version: 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-tabs': + specifier: 1.1.2 + version: 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-toast': + specifier: 1.2.4 + version: 1.2.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-toggle': + specifier: 1.1.1 + version: 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-toggle-group': + specifier: 1.1.1 + version: 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-tooltip': + specifier: latest + version: 1.2.8(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@vercel/analytics': + specifier: latest + version: 1.5.0(next@16.0.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0) + autoprefixer: + specifier: ^10.4.20 + version: 10.4.20(postcss@8.5.0) + class-variance-authority: + specifier: ^0.7.1 + version: 0.7.1 + clsx: + specifier: ^2.1.1 + version: 2.1.1 + cmdk: + specifier: 1.0.4 + version: 1.0.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + date-fns: + specifier: 4.1.0 + version: 4.1.0 + embla-carousel-react: + specifier: 8.5.1 + version: 8.5.1(react@19.2.0) + input-otp: + specifier: 1.4.1 + version: 1.4.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + lucide-react: + specifier: ^0.454.0 + version: 0.454.0(react@19.2.0) + next: + specifier: 16.0.3 + version: 16.0.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + next-themes: + specifier: latest + version: 0.4.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: + specifier: 19.2.0 + version: 19.2.0 + react-day-picker: + specifier: 9.8.0 + version: 9.8.0(react@19.2.0) + react-dom: + specifier: 19.2.0 + version: 19.2.0(react@19.2.0) + react-hook-form: + specifier: ^7.60.0 + version: 7.60.0(react@19.2.0) + react-resizable-panels: + specifier: ^2.1.7 + version: 2.1.7(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + recharts: + specifier: 2.15.4 + version: 2.15.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + sonner: + specifier: ^1.7.4 + version: 1.7.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + tailwind-merge: + specifier: ^2.5.5 + version: 2.5.5 + tailwindcss-animate: + specifier: ^1.0.7 + version: 1.0.7(tailwindcss@4.1.9) + vaul: + specifier: ^0.9.9 + version: 0.9.9(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + zod: + specifier: 3.25.76 + version: 3.25.76 + devDependencies: + '@tailwindcss/postcss': + specifier: ^4.1.9 + version: 4.1.9 + '@types/node': + specifier: ^22 + version: 22.0.0 + '@types/react': + specifier: ^19 + version: 19.0.0 + '@types/react-dom': + specifier: ^19 + version: 19.0.0 + postcss: + specifier: ^8.5 + version: 8.5.0 + tailwindcss: + specifier: ^4.1.9 + version: 4.1.9 + tw-animate-css: + specifier: 1.3.3 + version: 1.3.3 + typescript: + specifier: ^5 + version: 5.0.2 + +packages: + + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@babel/runtime@7.28.4': + resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} + engines: {node: '>=6.9.0'} + + '@date-fns/tz@1.2.0': + resolution: {integrity: sha512-LBrd7MiJZ9McsOgxqWX7AaxrDjcFVjWH/tIKJd7pnR7McaslGYOP1QmmiBXdJH/H/yLCT+rcQ7FaPBUxRGUtrg==} + + '@emnapi/runtime@1.7.1': + resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} + + '@floating-ui/core@1.7.3': + resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==} + + '@floating-ui/dom@1.7.4': + resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==} + + '@floating-ui/react-dom@2.1.6': + resolution: {integrity: sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.10': + resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} + + '@hookform/resolvers@3.10.0': + resolution: {integrity: sha512-79Dv+3mDF7i+2ajj7SkypSKHhl1cbln1OGavqrsF7p6mbUv11xpqpacPsGDCTRvCSjEEIez2ef1NveSVL3b0Ag==} + peerDependencies: + react-hook-form: ^7.0.0 + + '@img/colour@1.0.0': + resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} + engines: {node: '>=18'} + + '@img/sharp-darwin-arm64@0.34.5': + resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.34.5': + resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.2.4': + resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.2.4': + resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.2.4': + resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.2.4': + resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-ppc64@1.2.4': + resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} + cpu: [ppc64] + os: [linux] + + '@img/sharp-libvips-linux-riscv64@1.2.4': + resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} + cpu: [riscv64] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.2.4': + resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.2.4': + resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.34.5': + resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.34.5': + resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-ppc64@0.34.5': + resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ppc64] + os: [linux] + + '@img/sharp-linux-riscv64@0.34.5': + resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [riscv64] + os: [linux] + + '@img/sharp-linux-s390x@0.34.5': + resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.34.5': + resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.34.5': + resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.34.5': + resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.34.5': + resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-arm64@0.34.5': + resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [win32] + + '@img/sharp-win32-ia32@0.34.5': + resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.34.5': + resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@next/env@16.0.3': + resolution: {integrity: sha512-IqgtY5Vwsm14mm/nmQaRMmywCU+yyMIYfk3/MHZ2ZTJvwVbBn3usZnjMi1GacrMVzVcAxJShTCpZlPs26EdEjQ==} + + '@next/swc-darwin-arm64@16.0.3': + resolution: {integrity: sha512-MOnbd92+OByu0p6QBAzq1ahVWzF6nyfiH07dQDez4/Nku7G249NjxDVyEfVhz8WkLiOEU+KFVnqtgcsfP2nLXg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@next/swc-darwin-x64@16.0.3': + resolution: {integrity: sha512-i70C4O1VmbTivYdRlk+5lj9xRc2BlK3oUikt3yJeHT1unL4LsNtN7UiOhVanFdc7vDAgZn1tV/9mQwMkWOJvHg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@next/swc-linux-arm64-gnu@16.0.3': + resolution: {integrity: sha512-O88gCZ95sScwD00mn/AtalyCoykhhlokxH/wi1huFK+rmiP5LAYVs/i2ruk7xST6SuXN4NI5y4Xf5vepb2jf6A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-arm64-musl@16.0.3': + resolution: {integrity: sha512-CEErFt78S/zYXzFIiv18iQCbRbLgBluS8z1TNDQoyPi8/Jr5qhR3e8XHAIxVxPBjDbEMITprqELVc5KTfFj0gg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-x64-gnu@16.0.3': + resolution: {integrity: sha512-Tc3i+nwt6mQ+Dwzcri/WNDj56iWdycGVh5YwwklleClzPzz7UpfaMw1ci7bLl6GRYMXhWDBfe707EXNjKtiswQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-linux-x64-musl@16.0.3': + resolution: {integrity: sha512-zTh03Z/5PBBPdTurgEtr6nY0vI9KR9Ifp/jZCcHlODzwVOEKcKRBtQIGrkc7izFgOMuXDEJBmirwpGqdM/ZixA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-win32-arm64-msvc@16.0.3': + resolution: {integrity: sha512-Jc1EHxtZovcJcg5zU43X3tuqzl/sS+CmLgjRP28ZT4vk869Ncm2NoF8qSTaL99gh6uOzgM99Shct06pSO6kA6g==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@next/swc-win32-x64-msvc@16.0.3': + resolution: {integrity: sha512-N7EJ6zbxgIYpI/sWNzpVKRMbfEGgsWuOIvzkML7wxAAZhPk1Msxuo/JDu1PKjWGrAoOLaZcIX5s+/pF5LIbBBg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@radix-ui/number@1.1.0': + resolution: {integrity: sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==} + + '@radix-ui/primitive@1.1.1': + resolution: {integrity: sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==} + + '@radix-ui/primitive@1.1.3': + resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==} + + '@radix-ui/react-accordion@1.2.2': + resolution: {integrity: sha512-b1oh54x4DMCdGsB4/7ahiSrViXxaBwRPotiZNnYXjLha9vfuURSAZErki6qjDoSIV0eXx5v57XnTGVtGwnfp2g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-alert-dialog@1.1.4': + resolution: {integrity: sha512-A6Kh23qZDLy3PSU4bh2UJZznOrUdHImIXqF8YtUa6CN73f8EOO9XlXSCd9IHyPvIquTaa/kwaSWzZTtUvgXVGw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-arrow@1.1.1': + resolution: {integrity: sha512-NaVpZfmv8SKeZbn4ijN2V3jlHA9ngBG16VnIIm22nUR0Yk8KUALyBxT3KYEUnNuch9sTE8UTsS3whzBgKOL30w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-arrow@1.1.7': + resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-aspect-ratio@1.1.1': + resolution: {integrity: sha512-kNU4FIpcFMBLkOUcgeIteH06/8JLBcYY6Le1iKenDGCYNYFX3TQqCZjzkOsz37h7r94/99GTb7YhEr98ZBJibw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-avatar@1.1.2': + resolution: {integrity: sha512-GaC7bXQZ5VgZvVvsJ5mu/AEbjYLnhhkoidOboC50Z6FFlLA03wG2ianUoH+zgDQ31/9gCF59bE4+2bBgTyMiig==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-checkbox@1.1.3': + resolution: {integrity: sha512-HD7/ocp8f1B3e6OHygH0n7ZKjONkhciy1Nh0yuBgObqThc3oyx+vuMfFHKAknXRHHWVE9XvXStxJFyjUmB8PIw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-collapsible@1.1.2': + resolution: {integrity: sha512-PliMB63vxz7vggcyq0IxNYk8vGDrLXVWw4+W4B8YnwI1s18x7YZYqlG9PLX7XxAJUi0g2DxP4XKJMFHh/iVh9A==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-collection@1.1.1': + resolution: {integrity: sha512-LwT3pSho9Dljg+wY2KN2mrrh6y3qELfftINERIzBUO9e0N+t0oMTyn3k9iv+ZqgrwGkRnLpNJrsMv9BZlt2yuA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-compose-refs@1.1.1': + resolution: {integrity: sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-compose-refs@1.1.2': + resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context-menu@2.2.4': + resolution: {integrity: sha512-ap4wdGwK52rJxGkwukU1NrnEodsUFQIooANKu+ey7d6raQ2biTcEf8za1zr0mgFHieevRTB2nK4dJeN8pTAZGQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-context@1.1.1': + resolution: {integrity: sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context@1.1.2': + resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dialog@1.1.4': + resolution: {integrity: sha512-Ur7EV1IwQGCyaAuyDRiOLA5JIUZxELJljF+MbM/2NC0BYwfuRrbpS30BiQBJrVruscgUkieKkqXYDOoByaxIoA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-direction@1.1.0': + resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dismissable-layer@1.1.11': + resolution: {integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-dismissable-layer@1.1.3': + resolution: {integrity: sha512-onrWn/72lQoEucDmJnr8uczSNTujT0vJnA/X5+3AkChVPowr8n1yvIKIabhWyMQeMvvmdpsvcyDqx3X1LEXCPg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-dropdown-menu@2.1.4': + resolution: {integrity: sha512-iXU1Ab5ecM+yEepGAWK8ZhMyKX4ubFdCNtol4sT9D0OVErG9PNElfx3TQhjw7n7BC5nFVz68/5//clWy+8TXzA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-focus-guards@1.1.1': + resolution: {integrity: sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-focus-scope@1.1.1': + resolution: {integrity: sha512-01omzJAYRxXdG2/he/+xy+c8a8gCydoQ1yOxnWNcRhrrBW5W+RQJ22EK1SaO8tb3WoUsuEw7mJjBozPzihDFjA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-hover-card@1.1.4': + resolution: {integrity: sha512-QSUUnRA3PQ2UhvoCv3eYvMnCAgGQW+sTu86QPuNb+ZMi+ZENd6UWpiXbcWDQ4AEaKF9KKpCHBeaJz9Rw6lRlaQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-id@1.1.0': + resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-id@1.1.1': + resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-label@2.1.1': + resolution: {integrity: sha512-UUw5E4e/2+4kFMH7+YxORXGWggtY6sM8WIwh5RZchhLuUg2H1hc98Py+pr8HMz6rdaYrK2t296ZEjYLOCO5uUw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-menu@2.1.4': + resolution: {integrity: sha512-BnOgVoL6YYdHAG6DtXONaR29Eq4nvbi8rutrV/xlr3RQCMMb3yqP85Qiw/3NReozrSW+4dfLkK+rc1hb4wPU/A==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-menubar@1.1.4': + resolution: {integrity: sha512-+KMpi7VAZuB46+1LD7a30zb5IxyzLgC8m8j42gk3N4TUCcViNQdX8FhoH1HDvYiA8quuqcek4R4bYpPn/SY1GA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-navigation-menu@1.2.3': + resolution: {integrity: sha512-IQWAsQ7dsLIYDrn0WqPU+cdM7MONTv9nqrLVYoie3BPiabSfUVDe6Fr+oEt0Cofsr9ONDcDe9xhmJbL1Uq1yKg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popover@1.1.4': + resolution: {integrity: sha512-aUACAkXx8LaFymDma+HQVji7WhvEhpFJ7+qPz17Nf4lLZqtreGOFRiNQWQmhzp7kEWg9cOyyQJpdIMUMPc/CPw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popper@1.2.1': + resolution: {integrity: sha512-3kn5Me69L+jv82EKRuQCXdYyf1DqHwD2U/sxoNgBGCB7K9TRc3bQamQ+5EPM9EvyPdli0W41sROd+ZU1dTCztw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popper@1.2.8': + resolution: {integrity: sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-portal@1.1.3': + resolution: {integrity: sha512-NciRqhXnGojhT93RPyDaMPfLH3ZSl4jjIFbZQ1b/vxvZEdHsBZ49wP9w8L3HzUQwep01LcWtkUvm0OVB5JAHTw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-portal@1.1.9': + resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-presence@1.1.2': + resolution: {integrity: sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-presence@1.1.5': + resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@2.0.1': + resolution: {integrity: sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@2.1.3': + resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@2.1.4': + resolution: {integrity: sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-progress@1.1.1': + resolution: {integrity: sha512-6diOawA84f/eMxFHcWut0aE1C2kyE9dOyCTQOMRR2C/qPiXz/X0SaiA/RLbapQaXUCmy0/hLMf9meSccD1N0pA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-radio-group@1.2.2': + resolution: {integrity: sha512-E0MLLGfOP0l8P/NxgVzfXJ8w3Ch8cdO6UDzJfDChu4EJDy+/WdO5LqpdY8PYnCErkmZH3gZhDL1K7kQ41fAHuQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-roving-focus@1.1.1': + resolution: {integrity: sha512-QE1RoxPGJ/Nm8Qmk0PxP8ojmoaS67i0s7hVssS7KuI2FQoc/uzVlZsqKfQvxPE6D8hICCPHJ4D88zNhT3OOmkw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-scroll-area@1.2.2': + resolution: {integrity: sha512-EFI1N/S3YxZEW/lJ/H1jY3njlvTd8tBmgKEn4GHi51+aMm94i6NmAJstsm5cu3yJwYqYc93gpCPm21FeAbFk6g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-select@2.1.4': + resolution: {integrity: sha512-pOkb2u8KgO47j/h7AylCj7dJsm69BXcjkrvTqMptFqsE2i0p8lHkfgneXKjAgPzBMivnoMyt8o4KiV4wYzDdyQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-separator@1.1.1': + resolution: {integrity: sha512-RRiNRSrD8iUiXriq/Y5n4/3iE8HzqgLHsusUSg5jVpU2+3tqcUFPJXHDymwEypunc2sWxDUS3UC+rkZRlHedsw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slider@1.2.2': + resolution: {integrity: sha512-sNlU06ii1/ZcbHf8I9En54ZPW0Vil/yPVg4vQMcFNjrIx51jsHbFl1HYHQvCIWJSr1q0ZmA+iIs/ZTv8h7HHSA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slot@1.1.1': + resolution: {integrity: sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-slot@1.2.3': + resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-slot@1.2.4': + resolution: {integrity: sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-switch@1.1.2': + resolution: {integrity: sha512-zGukiWHjEdBCRyXvKR6iXAQG6qXm2esuAD6kDOi9Cn+1X6ev3ASo4+CsYaD6Fov9r/AQFekqnD/7+V0Cs6/98g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-tabs@1.1.2': + resolution: {integrity: sha512-9u/tQJMcC2aGq7KXpGivMm1mgq7oRJKXphDwdypPd/j21j/2znamPU8WkXgnhUaTrSFNIt8XhOyCAupg8/GbwQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-toast@1.2.4': + resolution: {integrity: sha512-Sch9idFJHJTMH9YNpxxESqABcAFweJG4tKv+0zo0m5XBvUSL8FM5xKcJLFLXononpePs8IclyX1KieL5SDUNgA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-toggle-group@1.1.1': + resolution: {integrity: sha512-OgDLZEA30Ylyz8YSXvnGqIHtERqnUt1KUYTKdw/y8u7Ci6zGiJfXc02jahmcSNK3YcErqioj/9flWC9S1ihfwg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-toggle@1.1.1': + resolution: {integrity: sha512-i77tcgObYr743IonC1hrsnnPmszDRn8p+EGUsUt+5a/JFn28fxaM88Py6V2mc8J5kELMWishI0rLnuGLFD/nnQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-tooltip@1.2.8': + resolution: {integrity: sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-use-callback-ref@1.1.0': + resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-callback-ref@1.1.1': + resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.1.0': + resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.2.2': + resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-effect-event@0.0.2': + resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.0': + resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.1': + resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.0': + resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.1': + resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-previous@1.1.0': + resolution: {integrity: sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.1.0': + resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.1.1': + resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.1.0': + resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.1.1': + resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-visually-hidden@1.1.1': + resolution: {integrity: sha512-vVfA2IZ9q/J+gEamvj761Oq1FpWgCDaNOOIfbPVp2MVPLEomUr5+Vf7kJGwQ24YxZSlQVar7Bes8kyTo5Dshpg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-visually-hidden@1.2.3': + resolution: {integrity: sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/rect@1.1.0': + resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} + + '@radix-ui/rect@1.1.1': + resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} + + '@swc/helpers@0.5.15': + resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + + '@tailwindcss/node@4.1.9': + resolution: {integrity: sha512-ZFsgw6lbtcZKYPWvf6zAuCVSuer7UQ2Z5P8BETHcpA4x/3NwOjAIXmRnYfG77F14f9bPeuR4GaNz3ji1JkQMeQ==} + + '@tailwindcss/oxide-android-arm64@4.1.9': + resolution: {integrity: sha512-X4mBUUJ3DPqODhtdT5Ju55feJwBN+hP855Z7c0t11Jzece9KRtdM41ljMrCcureKMh96mcOh2gxahkp1yE+BOQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.1.9': + resolution: {integrity: sha512-jnWnqz71ZLXUbJLW53m9dSQakLBfaWxAd9TAibimrNdQfZKyie+xGppdDCZExtYwUdflt3kOT9y1JUgYXVEQmw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.1.9': + resolution: {integrity: sha512-+Ui6LlvZ6aCPvSwv3l16nYb6gu1N6RamFz7hSu5aqaiPrDQqD1LPT/e8r2/laSVwFjRyOZxQQ/gvGxP3ihA2rw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.1.9': + resolution: {integrity: sha512-BWqCh0uoXMprwWfG7+oyPW53VCh6G08pxY0IIN/i5DQTpPnCJ4zm2W8neH9kW1v1f6RXP3b2qQjAzrAcnQ5e9w==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.9': + resolution: {integrity: sha512-U8itjQb5TVc80aV5Yo+JtKo+qS95CV4XLrKEtSLQFoTD/c9j3jk4WZipYT+9Jxqem29qCMRPxjEZ3s+wTT4XCw==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.9': + resolution: {integrity: sha512-dKlGraoNvyTrR7ovLw3Id9yTwc+l0NYg8bwOkYqk+zltvGns8bPvVr6PH5jATdc75kCGd6kDRmP4p1LwqCnPJQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-musl@4.1.9': + resolution: {integrity: sha512-qCZ4QTrZaBEgNM13pGjvakdmid1Kw3CUCEQzgVAn64Iud7zSxOGwK1usg+hrwrOfFH7vXZZr8OhzC8fJTRq5NA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-gnu@4.1.9': + resolution: {integrity: sha512-bmzkAWQjRlY9udmg/a1bOtZpV14ZCdrB74PZrd7Oz/wK62Rk+m9+UV3BsgGfOghyO5Qu5ZDciADzDMZbi9n1+g==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-musl@4.1.9': + resolution: {integrity: sha512-NpvPQsXj1raDHhd+g2SUvZQoTPWfYAsyYo9h4ZqV7EOmR+aj7LCAE5hnXNnrJ5Egy/NiO3Hs7BNpSbsPEOpORg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-wasm32-wasi@4.1.9': + resolution: {integrity: sha512-G93Yuf3xrpTxDUCSh685d1dvOkqOB0Gy+Bchv9Zy3k+lNw/9SEgsHit50xdvp1/p9yRH2TeDHJeDLUiV4mlTkA==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.9': + resolution: {integrity: sha512-Eq9FZzZe/NPkUiSMY+eY7r5l7msuFlm6wC6lnV11m8885z0vs9zx48AKTfw0UbVecTRV5wMxKb3Kmzx2LoUIWg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.1.9': + resolution: {integrity: sha512-oZ4zkthMXMJN2w/vu3jEfuqWTW7n8giGYDV/SfhBGRNehNMOBqh3YUAEv+8fv2YDJEzL4JpXTNTiSXW3UiUwBw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.1.9': + resolution: {integrity: sha512-oqjNxOBt1iNRAywjiH+VFsfovx/hVt4mxe0kOkRMAbbcCwbJg5e2AweFqyGN7gtmE1TJXnvnyX7RWTR1l72ciQ==} + engines: {node: '>= 10'} + + '@tailwindcss/postcss@4.1.9': + resolution: {integrity: sha512-v3DKzHibZO8ioVDmuVHCW1PR0XSM7nS40EjZFJEA1xPuvTuQPaR5flE1LyikU3hu2u1KNWBtEaSe8qsQjX3tyg==} + + '@types/d3-array@3.2.2': + resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} + + '@types/d3-color@3.1.3': + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} + + '@types/d3-ease@3.0.2': + resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} + + '@types/d3-interpolate@3.0.4': + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} + + '@types/d3-path@3.1.1': + resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==} + + '@types/d3-scale@4.0.9': + resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} + + '@types/d3-shape@3.1.7': + resolution: {integrity: sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==} + + '@types/d3-time@3.0.4': + resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} + + '@types/d3-timer@3.0.2': + resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} + + '@types/node@22.0.0': + resolution: {integrity: sha512-VT7KSYudcPOzP5Q0wfbowyNLaVR8QWUdw+088uFWwfvpY6uCWaXpqV6ieLAu9WBcnTa7H4Z5RLK8I5t2FuOcqw==} + + '@types/react-dom@19.0.0': + resolution: {integrity: sha512-1KfiQKsH1o00p9m5ag12axHQSb3FOU9H20UTrujVSkNhuCrRHiQWFqgEnTNK5ZNfnzZv8UWrnXVqCmCF9fgY3w==} + + '@types/react@19.0.0': + resolution: {integrity: sha512-MY3oPudxvMYyesqs/kW1Bh8y9VqSmf+tzqw3ae8a9DZW68pUe3zAdHeI1jc6iAysuRdACnVknHP8AhwD4/dxtg==} + + '@vercel/analytics@1.5.0': + resolution: {integrity: sha512-MYsBzfPki4gthY5HnYN7jgInhAZ7Ac1cYDoRWFomwGHWEX7odTEzbtg9kf/QSo7XEsEAqlQugA6gJ2WS2DEa3g==} + peerDependencies: + '@remix-run/react': ^2 + '@sveltejs/kit': ^1 || ^2 + next: '>= 13' + react: ^18 || ^19 || ^19.0.0-rc + svelte: '>= 4' + vue: ^3 + vue-router: ^4 + peerDependenciesMeta: + '@remix-run/react': + optional: true + '@sveltejs/kit': + optional: true + next: + optional: true + react: + optional: true + svelte: + optional: true + vue: + optional: true + vue-router: + optional: true + + aria-hidden@1.2.6: + resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} + engines: {node: '>=10'} + + autoprefixer@10.4.20: + resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + baseline-browser-mapping@2.8.30: + resolution: {integrity: sha512-aTUKW4ptQhS64+v2d6IkPzymEzzhw+G0bA1g3uBRV3+ntkH+svttKseW5IOR4Ed6NUVKqnY7qT3dKvzQ7io4AA==} + hasBin: true + + browserslist@4.28.0: + resolution: {integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + caniuse-lite@1.0.30001756: + resolution: {integrity: sha512-4HnCNKbMLkLdhJz3TToeVWHSnfJvPaq6vu/eRP0Ahub/07n484XHhBF5AJoSGHdVrS8tKFauUQz8Bp9P7LVx7A==} + + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + + class-variance-authority@0.7.1: + resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} + + client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + cmdk@1.0.4: + resolution: {integrity: sha512-AnsjfHyHpQ/EFeAnG216WY7A5LiYCoZzCSygiLvfXC3H3LFGCprErteUcszaVluGOhuOTbJS3jWHrSDYPBBygg==} + peerDependencies: + react: ^18 || ^19 || ^19.0.0-rc + react-dom: ^18 || ^19 || ^19.0.0-rc + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + + d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} + + d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + + d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + + d3-format@3.1.0: + resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} + engines: {node: '>=12'} + + d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + + d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} + + d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} + + d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} + + d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} + + d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} + + d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + + date-fns-jalali@4.1.0-0: + resolution: {integrity: sha512-hTIP/z+t+qKwBDcmmsnmjWTduxCg+5KfdqWQvb2X/8C9+knYY6epN/pfxdDuyVlSVeFz0sM5eEfwIUQ70U4ckg==} + + date-fns@4.1.0: + resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==} + + decimal.js-light@2.5.1: + resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==} + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + dom-helpers@5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + + electron-to-chromium@1.5.258: + resolution: {integrity: sha512-rHUggNV5jKQ0sSdWwlaRDkFc3/rRJIVnOSe9yR4zrR07m3ZxhP4N27Hlg8VeJGGYgFTxK5NqDmWI4DSH72vIJg==} + + embla-carousel-react@8.5.1: + resolution: {integrity: sha512-z9Y0K84BJvhChXgqn2CFYbfEi6AwEr+FFVVKm/MqbTQ2zIzO1VQri6w67LcfpVF0AjbhwVMywDZqY4alYkjW5w==} + peerDependencies: + react: ^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + + embla-carousel-reactive-utils@8.5.1: + resolution: {integrity: sha512-n7VSoGIiiDIc4MfXF3ZRTO59KDp820QDuyBDGlt5/65+lumPHxX2JLz0EZ23hZ4eg4vZGUXwMkYv02fw2JVo/A==} + peerDependencies: + embla-carousel: 8.5.1 + + embla-carousel@8.5.1: + resolution: {integrity: sha512-JUb5+FOHobSiWQ2EJNaueCNT/cQU9L6XWBbWmorWPQT9bkbk+fhsuLr8wWrzXKagO3oWszBO7MSx+GfaRk4E6A==} + + enhanced-resolve@5.18.3: + resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} + engines: {node: '>=10.13.0'} + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + fast-equals@5.3.3: + resolution: {integrity: sha512-/boTcHZeIAQ2r/tL11voclBHDeP9WPxLt+tyAbVSyyXuUFyh0Tne7gJZTqGbxnvj79TjLdCXLOY7UIPhyG5MTw==} + engines: {node: '>=6.0.0'} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + input-otp@1.4.1: + resolution: {integrity: sha512-+yvpmKYKHi9jIGngxagY9oWiiblPB7+nEO75F2l2o4vs+6vpPZZmUl4tBNYuTCvQjhvEIbdNeJu70bhfYP2nbw==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc + + internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} + hasBin: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + lightningcss-darwin-arm64@1.30.1: + resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.30.1: + resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.30.1: + resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.30.1: + resolution: {integrity: sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.30.1: + resolution: {integrity: sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.30.1: + resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.30.1: + resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.30.1: + resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.30.1: + resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.30.1: + resolution: {integrity: sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.30.1: + resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==} + engines: {node: '>= 12.0.0'} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lucide-react@0.454.0: + resolution: {integrity: sha512-hw7zMDwykCLnEzgncEEjHeA6+45aeEzRYuKHuyRSOPkhko+J3ySGjGIzu+mmMfDFG1vazHepMaYFYHbTFAZAAQ==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@3.1.0: + resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} + engines: {node: '>= 18'} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + next-themes@0.4.6: + resolution: {integrity: sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==} + peerDependencies: + react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc + react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc + + next@16.0.3: + resolution: {integrity: sha512-Ka0/iNBblPFcIubTA1Jjh6gvwqfjrGq1Y2MTI5lbjeLIAfmC+p5bQmojpRZqgHHVu5cG4+qdIiwXiBSm/8lZ3w==} + engines: {node: '>=20.9.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.51.1 + babel-plugin-react-compiler: '*' + react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + babel-plugin-react-compiler: + optional: true + sass: + optional: true + + node-releases@2.0.27: + resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + + postcss@8.5.0: + resolution: {integrity: sha512-27VKOqrYfPncKA2NrFOVhP5MGAfHKLYn/Q0mz9cNQyRAKYi3VNHwYU2qKKqPCqgBmeeJ0uAFB56NumXZ5ZReXg==} + engines: {node: ^10 || ^12 || >=14} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + react-day-picker@9.8.0: + resolution: {integrity: sha512-E0yhhg7R+pdgbl/2toTb0xBhsEAtmAx1l7qjIWYfcxOy8w4rTSVfbtBoSzVVhPwKP/5E9iL38LivzoE3AQDhCQ==} + engines: {node: '>=18'} + peerDependencies: + react: '>=16.8.0' + + react-dom@19.2.0: + resolution: {integrity: sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==} + peerDependencies: + react: ^19.2.0 + + react-hook-form@7.60.0: + resolution: {integrity: sha512-SBrYOvMbDB7cV8ZfNpaiLcgjH/a1c7aK0lK+aNigpf4xWLO8q+o4tcvVurv3c4EOyzn/3dCsYt4GKD42VvJ/+A==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^16.8.0 || ^17 || ^18 || ^19 + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + react-remove-scroll-bar@2.3.8: + resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.7.1: + resolution: {integrity: sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react-resizable-panels@2.1.7: + resolution: {integrity: sha512-JtT6gI+nURzhMYQYsx8DKkx6bSoOGFp7A3CwMrOb8y5jFHFyqwo9m68UhmXRw57fRVJksFn1TSlm3ywEQ9vMgA==} + peerDependencies: + react: ^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + react-dom: ^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + + react-smooth@4.0.4: + resolution: {integrity: sha512-gnGKTpYwqL0Iii09gHobNolvX4Kiq4PKx6eWBCYYix+8cdw+cGo3do906l1NBPKkSWx1DghC1dlWG9L2uGd61Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + react-style-singleton@2.2.3: + resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react-transition-group@4.4.5: + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' + + react@19.2.0: + resolution: {integrity: sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==} + engines: {node: '>=0.10.0'} + + recharts-scale@0.4.5: + resolution: {integrity: sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==} + + recharts@2.15.4: + resolution: {integrity: sha512-UT/q6fwS3c1dHbXv2uFgYJ9BMFHu3fwnd7AYZaEQhXuYQ4hgsxLvsUXzGdKeZrW5xopzDCvuA2N41WJ88I7zIw==} + engines: {node: '>=14'} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + + semver@7.7.3: + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} + engines: {node: '>=10'} + hasBin: true + + sharp@0.34.5: + resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + + sonner@1.7.4: + resolution: {integrity: sha512-DIS8z4PfJRbIyfVFDVnK9rO3eYDtse4Omcm6bt0oEr5/jtLgysmjuBl1frJ9E/EQZrFmKx2A8m/s5s9CRXIzhw==} + peerDependencies: + react: ^18.0.0 || ^19.0.0 || ^19.0.0-rc + react-dom: ^18.0.0 || ^19.0.0 || ^19.0.0-rc + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + styled-jsx@5.1.6: + resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + + tailwind-merge@2.5.5: + resolution: {integrity: sha512-0LXunzzAZzo0tEPxV3I297ffKZPlKDrjj7NXphC8V5ak9yHC5zRmxnOe2m/Rd/7ivsOMJe3JZ2JVocoDdQTRBA==} + + tailwindcss-animate@1.0.7: + resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + + tailwindcss@4.1.9: + resolution: {integrity: sha512-anBZRcvfNMsQdHB9XSGzAtIQWlhs49uK75jfkwrqjRUbjt4d7q9RE1wR1xWyfYZhLFnFX4ahWp88Au2lcEw5IQ==} + + tapable@2.3.0: + resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} + engines: {node: '>=6'} + + tar@7.5.2: + resolution: {integrity: sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==} + engines: {node: '>=18'} + + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tw-animate-css@1.3.3: + resolution: {integrity: sha512-tXE2TRWrskc4TU3RDd7T8n8Np/wCfoeH9gz22c7PzYqNPQ9FBGFbWWzwL0JyHcFp+jHozmF76tbHfPAx22ua2Q==} + + typescript@5.0.2: + resolution: {integrity: sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==} + engines: {node: '>=12.20'} + hasBin: true + + undici-types@6.11.1: + resolution: {integrity: sha512-mIDEX2ek50x0OlRgxryxsenE5XaQD4on5U2inY7RApK3SOJpofyw7uW2AyfMKkhAxXIceo2DeWGVGwyvng1GNQ==} + + update-browserslist-db@1.1.4: + resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + use-callback-ref@1.3.3: + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + use-sidecar@1.1.3: + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + use-sync-external-store@1.6.0: + resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + vaul@0.9.9: + resolution: {integrity: sha512-7afKg48srluhZwIkaU+lgGtFCUsYBSGOl8vcc8N/M3YQlZFlynHD15AE+pwrYdc826o7nrIND4lL9Y6b9WWZZQ==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + + victory-vendor@36.9.2: + resolution: {integrity: sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==} + + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + + zod@3.25.76: + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + +snapshots: + + '@alloc/quick-lru@5.2.0': {} + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@babel/runtime@7.28.4': {} + + '@date-fns/tz@1.2.0': {} + + '@emnapi/runtime@1.7.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@floating-ui/core@1.7.3': + dependencies: + '@floating-ui/utils': 0.2.10 + + '@floating-ui/dom@1.7.4': + dependencies: + '@floating-ui/core': 1.7.3 + '@floating-ui/utils': 0.2.10 + + '@floating-ui/react-dom@2.1.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@floating-ui/dom': 1.7.4 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + + '@floating-ui/utils@0.2.10': {} + + '@hookform/resolvers@3.10.0(react-hook-form@7.60.0(react@19.2.0))': + dependencies: + react-hook-form: 7.60.0(react@19.2.0) + + '@img/colour@1.0.0': + optional: true + + '@img/sharp-darwin-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.2.4 + optional: true + + '@img/sharp-darwin-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.2.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.2.4': + optional: true + + '@img/sharp-libvips-linux-ppc64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-riscv64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-s390x@1.2.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + optional: true + + '@img/sharp-linux-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.2.4 + optional: true + + '@img/sharp-linux-arm@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.2.4 + optional: true + + '@img/sharp-linux-ppc64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-ppc64': 1.2.4 + optional: true + + '@img/sharp-linux-riscv64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-riscv64': 1.2.4 + optional: true + + '@img/sharp-linux-s390x@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.2.4 + optional: true + + '@img/sharp-linux-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.2.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + optional: true + + '@img/sharp-wasm32@0.34.5': + dependencies: + '@emnapi/runtime': 1.7.1 + optional: true + + '@img/sharp-win32-arm64@0.34.5': + optional: true + + '@img/sharp-win32-ia32@0.34.5': + optional: true + + '@img/sharp-win32-x64@0.34.5': + optional: true + + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.2 + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@next/env@16.0.3': {} + + '@next/swc-darwin-arm64@16.0.3': + optional: true + + '@next/swc-darwin-x64@16.0.3': + optional: true + + '@next/swc-linux-arm64-gnu@16.0.3': + optional: true + + '@next/swc-linux-arm64-musl@16.0.3': + optional: true + + '@next/swc-linux-x64-gnu@16.0.3': + optional: true + + '@next/swc-linux-x64-musl@16.0.3': + optional: true + + '@next/swc-win32-arm64-msvc@16.0.3': + optional: true + + '@next/swc-win32-x64-msvc@16.0.3': + optional: true + + '@radix-ui/number@1.1.0': {} + + '@radix-ui/primitive@1.1.1': {} + + '@radix-ui/primitive@1.1.3': {} + + '@radix-ui/react-accordion@1.2.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-collapsible': 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-collection': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-direction': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-alert-dialog@1.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-dialog': 1.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-slot': 1.1.1(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-arrow@1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-aspect-ratio@1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-avatar@1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-checkbox@1.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-previous': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-size': 1.1.0(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-collapsible@1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-collection@1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-slot': 1.1.1(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-compose-refs@1.1.1(@types/react@19.0.0)(react@19.2.0)': + dependencies: + react: 19.2.0 + optionalDependencies: + '@types/react': 19.0.0 + + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.0.0)(react@19.2.0)': + dependencies: + react: 19.2.0 + optionalDependencies: + '@types/react': 19.0.0 + + '@radix-ui/react-context-menu@2.2.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-menu': 2.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-context@1.1.1(@types/react@19.0.0)(react@19.2.0)': + dependencies: + react: 19.2.0 + optionalDependencies: + '@types/react': 19.0.0 + + '@radix-ui/react-context@1.1.2(@types/react@19.0.0)(react@19.2.0)': + dependencies: + react: 19.2.0 + optionalDependencies: + '@types/react': 19.0.0 + + '@radix-ui/react-dialog@1.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-dismissable-layer': 1.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-focus-scope': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-portal': 1.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-slot': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.2.0) + aria-hidden: 1.2.6 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + react-remove-scroll: 2.7.1(@types/react@19.0.0)(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-direction@1.1.0(@types/react@19.0.0)(react@19.2.0)': + dependencies: + react: 19.2.0 + optionalDependencies: + '@types/react': 19.0.0 + + '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-dismissable-layer@1.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-dropdown-menu@2.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-menu': 2.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-focus-guards@1.1.1(@types/react@19.0.0)(react@19.2.0)': + dependencies: + react: 19.2.0 + optionalDependencies: + '@types/react': 19.0.0 + + '@radix-ui/react-focus-scope@1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-hover-card@1.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-dismissable-layer': 1.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-popper': 1.2.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-portal': 1.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-id@1.1.0(@types/react@19.0.0)(react@19.2.0)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + optionalDependencies: + '@types/react': 19.0.0 + + '@radix-ui/react-id@1.1.1(@types/react@19.0.0)(react@19.2.0)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + optionalDependencies: + '@types/react': 19.0.0 + + '@radix-ui/react-label@2.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-menu@2.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-collection': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-direction': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-dismissable-layer': 1.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-focus-scope': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-popper': 1.2.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-portal': 1.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-roving-focus': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-slot': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.0)(react@19.2.0) + aria-hidden: 1.2.6 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + react-remove-scroll: 2.7.1(@types/react@19.0.0)(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-menubar@1.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-collection': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-direction': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-menu': 2.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-roving-focus': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-navigation-menu@1.2.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-collection': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-direction': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-dismissable-layer': 1.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-previous': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-visually-hidden': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-popover@1.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-dismissable-layer': 1.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-focus-scope': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-popper': 1.2.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-portal': 1.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-slot': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.2.0) + aria-hidden: 1.2.6 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + react-remove-scroll: 2.7.1(@types/react@19.0.0)(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-popper@1.2.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@floating-ui/react-dom': 2.1.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-arrow': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-rect': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-size': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/rect': 1.1.0 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-popper@1.2.8(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@floating-ui/react-dom': 2.1.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-rect': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/rect': 1.1.1 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-portal@1.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-portal@1.1.9(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-presence@1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-presence@1.1.5(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-primitive@2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/react-slot': 1.1.1(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/react-slot': 1.2.3(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-primitive@2.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/react-slot': 1.2.4(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-progress@1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-radio-group@1.2.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-direction': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-roving-focus': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-previous': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-size': 1.1.0(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-roving-focus@1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-collection': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-direction': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-scroll-area@1.2.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/number': 1.1.0 + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-direction': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-select@2.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/number': 1.1.0 + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-collection': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-direction': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-dismissable-layer': 1.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-focus-scope': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-popper': 1.2.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-portal': 1.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-slot': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-previous': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-visually-hidden': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + aria-hidden: 1.2.6 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + react-remove-scroll: 2.7.1(@types/react@19.0.0)(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-separator@1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-slider@1.2.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/number': 1.1.0 + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-collection': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-direction': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-previous': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-size': 1.1.0(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-slot@1.1.1(@types/react@19.0.0)(react@19.2.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + optionalDependencies: + '@types/react': 19.0.0 + + '@radix-ui/react-slot@1.2.3(@types/react@19.0.0)(react@19.2.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + optionalDependencies: + '@types/react': 19.0.0 + + '@radix-ui/react-slot@1.2.4(@types/react@19.0.0)(react@19.2.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + optionalDependencies: + '@types/react': 19.0.0 + + '@radix-ui/react-switch@1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-previous': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-size': 1.1.0(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-tabs@1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-direction': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-roving-focus': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-toast@1.2.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-collection': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-dismissable-layer': 1.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-portal': 1.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-visually-hidden': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-toggle-group@1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-direction': 1.1.0(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-roving-focus': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-toggle': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-toggle@1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-tooltip@1.2.8(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-use-callback-ref@1.1.0(@types/react@19.0.0)(react@19.2.0)': + dependencies: + react: 19.2.0 + optionalDependencies: + '@types/react': 19.0.0 + + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.0.0)(react@19.2.0)': + dependencies: + react: 19.2.0 + optionalDependencies: + '@types/react': 19.0.0 + + '@radix-ui/react-use-controllable-state@1.1.0(@types/react@19.0.0)(react@19.2.0)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + optionalDependencies: + '@types/react': 19.0.0 + + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.0.0)(react@19.2.0)': + dependencies: + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + optionalDependencies: + '@types/react': 19.0.0 + + '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.0.0)(react@19.2.0)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + optionalDependencies: + '@types/react': 19.0.0 + + '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@19.0.0)(react@19.2.0)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + optionalDependencies: + '@types/react': 19.0.0 + + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.0.0)(react@19.2.0)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + optionalDependencies: + '@types/react': 19.0.0 + + '@radix-ui/react-use-layout-effect@1.1.0(@types/react@19.0.0)(react@19.2.0)': + dependencies: + react: 19.2.0 + optionalDependencies: + '@types/react': 19.0.0 + + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.0.0)(react@19.2.0)': + dependencies: + react: 19.2.0 + optionalDependencies: + '@types/react': 19.0.0 + + '@radix-ui/react-use-previous@1.1.0(@types/react@19.0.0)(react@19.2.0)': + dependencies: + react: 19.2.0 + optionalDependencies: + '@types/react': 19.0.0 + + '@radix-ui/react-use-rect@1.1.0(@types/react@19.0.0)(react@19.2.0)': + dependencies: + '@radix-ui/rect': 1.1.0 + react: 19.2.0 + optionalDependencies: + '@types/react': 19.0.0 + + '@radix-ui/react-use-rect@1.1.1(@types/react@19.0.0)(react@19.2.0)': + dependencies: + '@radix-ui/rect': 1.1.1 + react: 19.2.0 + optionalDependencies: + '@types/react': 19.0.0 + + '@radix-ui/react-use-size@1.1.0(@types/react@19.0.0)(react@19.2.0)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + optionalDependencies: + '@types/react': 19.0.0 + + '@radix-ui/react-use-size@1.1.1(@types/react@19.0.0)(react@19.2.0)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.0)(react@19.2.0) + react: 19.2.0 + optionalDependencies: + '@types/react': 19.0.0 + + '@radix-ui/react-visually-hidden@1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + '@types/react-dom': 19.0.0 + + '@radix-ui/rect@1.1.0': {} + + '@radix-ui/rect@1.1.1': {} + + '@swc/helpers@0.5.15': + dependencies: + tslib: 2.8.1 + + '@tailwindcss/node@4.1.9': + dependencies: + '@ampproject/remapping': 2.3.0 + enhanced-resolve: 5.18.3 + jiti: 2.6.1 + lightningcss: 1.30.1 + magic-string: 0.30.21 + source-map-js: 1.2.1 + tailwindcss: 4.1.9 + + '@tailwindcss/oxide-android-arm64@4.1.9': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.1.9': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.1.9': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.1.9': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.9': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.9': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.1.9': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.1.9': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.1.9': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.1.9': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.9': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.1.9': + optional: true + + '@tailwindcss/oxide@4.1.9': + dependencies: + detect-libc: 2.1.2 + tar: 7.5.2 + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.1.9 + '@tailwindcss/oxide-darwin-arm64': 4.1.9 + '@tailwindcss/oxide-darwin-x64': 4.1.9 + '@tailwindcss/oxide-freebsd-x64': 4.1.9 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.9 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.9 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.9 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.9 + '@tailwindcss/oxide-linux-x64-musl': 4.1.9 + '@tailwindcss/oxide-wasm32-wasi': 4.1.9 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.9 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.9 + + '@tailwindcss/postcss@4.1.9': + dependencies: + '@alloc/quick-lru': 5.2.0 + '@tailwindcss/node': 4.1.9 + '@tailwindcss/oxide': 4.1.9 + postcss: 8.5.0 + tailwindcss: 4.1.9 + + '@types/d3-array@3.2.2': {} + + '@types/d3-color@3.1.3': {} + + '@types/d3-ease@3.0.2': {} + + '@types/d3-interpolate@3.0.4': + dependencies: + '@types/d3-color': 3.1.3 + + '@types/d3-path@3.1.1': {} + + '@types/d3-scale@4.0.9': + dependencies: + '@types/d3-time': 3.0.4 + + '@types/d3-shape@3.1.7': + dependencies: + '@types/d3-path': 3.1.1 + + '@types/d3-time@3.0.4': {} + + '@types/d3-timer@3.0.2': {} + + '@types/node@22.0.0': + dependencies: + undici-types: 6.11.1 + + '@types/react-dom@19.0.0': + dependencies: + '@types/react': 19.0.0 + + '@types/react@19.0.0': + dependencies: + csstype: 3.2.3 + + '@vercel/analytics@1.5.0(next@16.0.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)': + optionalDependencies: + next: 16.0.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + + aria-hidden@1.2.6: + dependencies: + tslib: 2.8.1 + + autoprefixer@10.4.20(postcss@8.5.0): + dependencies: + browserslist: 4.28.0 + caniuse-lite: 1.0.30001756 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.1 + postcss: 8.5.0 + postcss-value-parser: 4.2.0 + + baseline-browser-mapping@2.8.30: {} + + browserslist@4.28.0: + dependencies: + baseline-browser-mapping: 2.8.30 + caniuse-lite: 1.0.30001756 + electron-to-chromium: 1.5.258 + node-releases: 2.0.27 + update-browserslist-db: 1.1.4(browserslist@4.28.0) + + caniuse-lite@1.0.30001756: {} + + chownr@3.0.0: {} + + class-variance-authority@0.7.1: + dependencies: + clsx: 2.1.1 + + client-only@0.0.1: {} + + clsx@2.1.1: {} + + cmdk@1.0.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + dependencies: + '@radix-ui/react-dialog': 1.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.0.0)(react@19.2.0) + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + use-sync-external-store: 1.6.0(react@19.2.0) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + + csstype@3.2.3: {} + + d3-array@3.2.4: + dependencies: + internmap: 2.0.3 + + d3-color@3.1.0: {} + + d3-ease@3.0.1: {} + + d3-format@3.1.0: {} + + d3-interpolate@3.0.1: + dependencies: + d3-color: 3.1.0 + + d3-path@3.1.0: {} + + d3-scale@4.0.2: + dependencies: + d3-array: 3.2.4 + d3-format: 3.1.0 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + + d3-shape@3.2.0: + dependencies: + d3-path: 3.1.0 + + d3-time-format@4.1.0: + dependencies: + d3-time: 3.1.0 + + d3-time@3.1.0: + dependencies: + d3-array: 3.2.4 + + d3-timer@3.0.1: {} + + date-fns-jalali@4.1.0-0: {} + + date-fns@4.1.0: {} + + decimal.js-light@2.5.1: {} + + detect-libc@2.1.2: {} + + detect-node-es@1.1.0: {} + + dom-helpers@5.2.1: + dependencies: + '@babel/runtime': 7.28.4 + csstype: 3.2.3 + + electron-to-chromium@1.5.258: {} + + embla-carousel-react@8.5.1(react@19.2.0): + dependencies: + embla-carousel: 8.5.1 + embla-carousel-reactive-utils: 8.5.1(embla-carousel@8.5.1) + react: 19.2.0 + + embla-carousel-reactive-utils@8.5.1(embla-carousel@8.5.1): + dependencies: + embla-carousel: 8.5.1 + + embla-carousel@8.5.1: {} + + enhanced-resolve@5.18.3: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.0 + + escalade@3.2.0: {} + + eventemitter3@4.0.7: {} + + fast-equals@5.3.3: {} + + fraction.js@4.3.7: {} + + get-nonce@1.0.1: {} + + graceful-fs@4.2.11: {} + + input-otp@1.4.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + dependencies: + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + + internmap@2.0.3: {} + + jiti@2.6.1: {} + + js-tokens@4.0.0: {} + + lightningcss-darwin-arm64@1.30.1: + optional: true + + lightningcss-darwin-x64@1.30.1: + optional: true + + lightningcss-freebsd-x64@1.30.1: + optional: true + + lightningcss-linux-arm-gnueabihf@1.30.1: + optional: true + + lightningcss-linux-arm64-gnu@1.30.1: + optional: true + + lightningcss-linux-arm64-musl@1.30.1: + optional: true + + lightningcss-linux-x64-gnu@1.30.1: + optional: true + + lightningcss-linux-x64-musl@1.30.1: + optional: true + + lightningcss-win32-arm64-msvc@1.30.1: + optional: true + + lightningcss-win32-x64-msvc@1.30.1: + optional: true + + lightningcss@1.30.1: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-darwin-arm64: 1.30.1 + lightningcss-darwin-x64: 1.30.1 + lightningcss-freebsd-x64: 1.30.1 + lightningcss-linux-arm-gnueabihf: 1.30.1 + lightningcss-linux-arm64-gnu: 1.30.1 + lightningcss-linux-arm64-musl: 1.30.1 + lightningcss-linux-x64-gnu: 1.30.1 + lightningcss-linux-x64-musl: 1.30.1 + lightningcss-win32-arm64-msvc: 1.30.1 + lightningcss-win32-x64-msvc: 1.30.1 + + lodash@4.17.21: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lucide-react@0.454.0(react@19.2.0): + dependencies: + react: 19.2.0 + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + minipass@7.1.2: {} + + minizlib@3.1.0: + dependencies: + minipass: 7.1.2 + + nanoid@3.3.11: {} + + next-themes@0.4.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + dependencies: + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + + next@16.0.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + dependencies: + '@next/env': 16.0.3 + '@swc/helpers': 0.5.15 + caniuse-lite: 1.0.30001756 + postcss: 8.4.31 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + styled-jsx: 5.1.6(react@19.2.0) + optionalDependencies: + '@next/swc-darwin-arm64': 16.0.3 + '@next/swc-darwin-x64': 16.0.3 + '@next/swc-linux-arm64-gnu': 16.0.3 + '@next/swc-linux-arm64-musl': 16.0.3 + '@next/swc-linux-x64-gnu': 16.0.3 + '@next/swc-linux-x64-musl': 16.0.3 + '@next/swc-win32-arm64-msvc': 16.0.3 + '@next/swc-win32-x64-msvc': 16.0.3 + sharp: 0.34.5 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + + node-releases@2.0.27: {} + + normalize-range@0.1.2: {} + + object-assign@4.1.1: {} + + picocolors@1.1.1: {} + + postcss-value-parser@4.2.0: {} + + postcss@8.4.31: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + postcss@8.5.0: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + react-day-picker@9.8.0(react@19.2.0): + dependencies: + '@date-fns/tz': 1.2.0 + date-fns: 4.1.0 + date-fns-jalali: 4.1.0-0 + react: 19.2.0 + + react-dom@19.2.0(react@19.2.0): + dependencies: + react: 19.2.0 + scheduler: 0.27.0 + + react-hook-form@7.60.0(react@19.2.0): + dependencies: + react: 19.2.0 + + react-is@16.13.1: {} + + react-is@18.3.1: {} + + react-remove-scroll-bar@2.3.8(@types/react@19.0.0)(react@19.2.0): + dependencies: + react: 19.2.0 + react-style-singleton: 2.2.3(@types/react@19.0.0)(react@19.2.0) + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.0.0 + + react-remove-scroll@2.7.1(@types/react@19.0.0)(react@19.2.0): + dependencies: + react: 19.2.0 + react-remove-scroll-bar: 2.3.8(@types/react@19.0.0)(react@19.2.0) + react-style-singleton: 2.2.3(@types/react@19.0.0)(react@19.2.0) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@19.0.0)(react@19.2.0) + use-sidecar: 1.1.3(@types/react@19.0.0)(react@19.2.0) + optionalDependencies: + '@types/react': 19.0.0 + + react-resizable-panels@2.1.7(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + dependencies: + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + + react-smooth@4.0.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + dependencies: + fast-equals: 5.3.3 + prop-types: 15.8.1 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + react-transition-group: 4.4.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + + react-style-singleton@2.2.3(@types/react@19.0.0)(react@19.2.0): + dependencies: + get-nonce: 1.0.1 + react: 19.2.0 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.0.0 + + react-transition-group@4.4.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + dependencies: + '@babel/runtime': 7.28.4 + dom-helpers: 5.2.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + + react@19.2.0: {} + + recharts-scale@0.4.5: + dependencies: + decimal.js-light: 2.5.1 + + recharts@2.15.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + dependencies: + clsx: 2.1.1 + eventemitter3: 4.0.7 + lodash: 4.17.21 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + react-is: 18.3.1 + react-smooth: 4.0.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + recharts-scale: 0.4.5 + tiny-invariant: 1.3.3 + victory-vendor: 36.9.2 + + scheduler@0.27.0: {} + + semver@7.7.3: + optional: true + + sharp@0.34.5: + dependencies: + '@img/colour': 1.0.0 + detect-libc: 2.1.2 + semver: 7.7.3 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.34.5 + '@img/sharp-darwin-x64': 0.34.5 + '@img/sharp-libvips-darwin-arm64': 1.2.4 + '@img/sharp-libvips-darwin-x64': 1.2.4 + '@img/sharp-libvips-linux-arm': 1.2.4 + '@img/sharp-libvips-linux-arm64': 1.2.4 + '@img/sharp-libvips-linux-ppc64': 1.2.4 + '@img/sharp-libvips-linux-riscv64': 1.2.4 + '@img/sharp-libvips-linux-s390x': 1.2.4 + '@img/sharp-libvips-linux-x64': 1.2.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + '@img/sharp-linux-arm': 0.34.5 + '@img/sharp-linux-arm64': 0.34.5 + '@img/sharp-linux-ppc64': 0.34.5 + '@img/sharp-linux-riscv64': 0.34.5 + '@img/sharp-linux-s390x': 0.34.5 + '@img/sharp-linux-x64': 0.34.5 + '@img/sharp-linuxmusl-arm64': 0.34.5 + '@img/sharp-linuxmusl-x64': 0.34.5 + '@img/sharp-wasm32': 0.34.5 + '@img/sharp-win32-arm64': 0.34.5 + '@img/sharp-win32-ia32': 0.34.5 + '@img/sharp-win32-x64': 0.34.5 + optional: true + + sonner@1.7.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + dependencies: + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + + source-map-js@1.2.1: {} + + styled-jsx@5.1.6(react@19.2.0): + dependencies: + client-only: 0.0.1 + react: 19.2.0 + + tailwind-merge@2.5.5: {} + + tailwindcss-animate@1.0.7(tailwindcss@4.1.9): + dependencies: + tailwindcss: 4.1.9 + + tailwindcss@4.1.9: {} + + tapable@2.3.0: {} + + tar@7.5.2: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.1.0 + yallist: 5.0.0 + + tiny-invariant@1.3.3: {} + + tslib@2.8.1: {} + + tw-animate-css@1.3.3: {} + + typescript@5.0.2: {} + + undici-types@6.11.1: {} + + update-browserslist-db@1.1.4(browserslist@4.28.0): + dependencies: + browserslist: 4.28.0 + escalade: 3.2.0 + picocolors: 1.1.1 + + use-callback-ref@1.3.3(@types/react@19.0.0)(react@19.2.0): + dependencies: + react: 19.2.0 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.0.0 + + use-sidecar@1.1.3(@types/react@19.0.0)(react@19.2.0): + dependencies: + detect-node-es: 1.1.0 + react: 19.2.0 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.0.0 + + use-sync-external-store@1.6.0(react@19.2.0): + dependencies: + react: 19.2.0 + + vaul@0.9.9(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + dependencies: + '@radix-ui/react-dialog': 1.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + + victory-vendor@36.9.2: + dependencies: + '@types/d3-array': 3.2.2 + '@types/d3-ease': 3.0.2 + '@types/d3-interpolate': 3.0.4 + '@types/d3-scale': 4.0.9 + '@types/d3-shape': 3.1.7 + '@types/d3-time': 3.0.4 + '@types/d3-timer': 3.0.2 + d3-array: 3.2.4 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-scale: 4.0.2 + d3-shape: 3.2.0 + d3-time: 3.1.0 + d3-timer: 3.0.1 + + yallist@5.0.0: {} + + zod@3.25.76: {} diff --git a/usecase/solar-political-influence-analyzer/src/frontend/postcss.config.mjs b/usecase/solar-political-influence-analyzer/src/frontend/postcss.config.mjs new file mode 100644 index 0000000..1916fef --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/postcss.config.mjs @@ -0,0 +1,8 @@ +/** @type {import('postcss-load-config').Config} */ +const config = { + plugins: { + '@tailwindcss/postcss': {}, + }, +} + +export default config diff --git a/usecase/solar-political-influence-analyzer/src/frontend/public/apple-icon.png b/usecase/solar-political-influence-analyzer/src/frontend/public/apple-icon.png new file mode 100644 index 0000000..f9418b4 Binary files /dev/null and b/usecase/solar-political-influence-analyzer/src/frontend/public/apple-icon.png differ diff --git a/usecase/solar-political-influence-analyzer/src/frontend/public/icon-dark-32x32.png b/usecase/solar-political-influence-analyzer/src/frontend/public/icon-dark-32x32.png new file mode 100644 index 0000000..12c825a Binary files /dev/null and b/usecase/solar-political-influence-analyzer/src/frontend/public/icon-dark-32x32.png differ diff --git a/usecase/solar-political-influence-analyzer/src/frontend/public/icon-dark-32x32.svg b/usecase/solar-political-influence-analyzer/src/frontend/public/icon-dark-32x32.svg new file mode 100644 index 0000000..69977dd --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/public/icon-dark-32x32.svg @@ -0,0 +1,4 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"> + <rect width="32" height="32" fill="#000000"/> + <text x="16" y="24" font-family="Arial, sans-serif" font-size="20" font-weight="bold" fill="#FFFFFF" text-anchor="middle">P</text> +</svg> diff --git a/usecase/solar-political-influence-analyzer/src/frontend/public/icon-light-32x32.png b/usecase/solar-political-influence-analyzer/src/frontend/public/icon-light-32x32.png new file mode 100644 index 0000000..a3462cc Binary files /dev/null and b/usecase/solar-political-influence-analyzer/src/frontend/public/icon-light-32x32.png differ diff --git a/usecase/solar-political-influence-analyzer/src/frontend/public/icon-light-32x32.svg b/usecase/solar-political-influence-analyzer/src/frontend/public/icon-light-32x32.svg new file mode 100644 index 0000000..69977dd --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/public/icon-light-32x32.svg @@ -0,0 +1,4 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"> + <rect width="32" height="32" fill="#000000"/> + <text x="16" y="24" font-family="Arial, sans-serif" font-size="20" font-weight="bold" fill="#FFFFFF" text-anchor="middle">P</text> +</svg> diff --git a/usecase/solar-political-influence-analyzer/src/frontend/public/icon.svg b/usecase/solar-political-influence-analyzer/src/frontend/public/icon.svg new file mode 100644 index 0000000..69977dd --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/public/icon.svg @@ -0,0 +1,4 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"> + <rect width="32" height="32" fill="#000000"/> + <text x="16" y="24" font-family="Arial, sans-serif" font-size="20" font-weight="bold" fill="#FFFFFF" text-anchor="middle">P</text> +</svg> diff --git a/usecase/solar-political-influence-analyzer/src/frontend/public/placeholder-logo.png b/usecase/solar-political-influence-analyzer/src/frontend/public/placeholder-logo.png new file mode 100644 index 0000000..8a792ac Binary files /dev/null and b/usecase/solar-political-influence-analyzer/src/frontend/public/placeholder-logo.png differ diff --git a/usecase/solar-political-influence-analyzer/src/frontend/public/placeholder-logo.svg b/usecase/solar-political-influence-analyzer/src/frontend/public/placeholder-logo.svg new file mode 100644 index 0000000..b1695aa --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/public/placeholder-logo.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="215" height="48" fill="none"><path fill="#000" d="M57.588 9.6h6L73.828 38h-5.2l-2.36-6.88h-11.36L52.548 38h-5.2l10.24-28.4Zm7.16 17.16-4.16-12.16-4.16 12.16h8.32Zm23.694-2.24c-.186-1.307-.706-2.32-1.56-3.04-.853-.72-1.866-1.08-3.04-1.08-1.68 0-2.986.613-3.92 1.84-.906 1.227-1.36 2.947-1.36 5.16s.454 3.933 1.36 5.16c.934 1.227 2.24 1.84 3.92 1.84 1.254 0 2.307-.373 3.16-1.12.854-.773 1.387-1.867 1.6-3.28l5.12.24c-.186 1.68-.733 3.147-1.64 4.4-.906 1.227-2.08 2.173-3.52 2.84-1.413.667-2.986 1-4.72 1-2.08 0-3.906-.453-5.48-1.36-1.546-.907-2.76-2.2-3.64-3.88-.853-1.68-1.28-3.627-1.28-5.84 0-2.24.427-4.187 1.28-5.84.88-1.68 2.094-2.973 3.64-3.88 1.574-.907 3.4-1.36 5.48-1.36 1.68 0 3.227.32 4.64.96 1.414.64 2.56 1.56 3.44 2.76.907 1.2 1.454 2.6 1.64 4.2l-5.12.28Zm11.486-7.72.12 3.4c.534-1.227 1.307-2.173 2.32-2.84 1.04-.693 2.267-1.04 3.68-1.04 1.494 0 2.76.387 3.8 1.16 1.067.747 1.827 1.813 2.28 3.2.507-1.44 1.294-2.52 2.36-3.24 1.094-.747 2.414-1.12 3.96-1.12 1.414 0 2.64.307 3.68.92s1.84 1.52 2.4 2.72c.56 1.2.84 2.667.84 4.4V38h-4.96V25.92c0-1.813-.293-3.187-.88-4.12-.56-.96-1.413-1.44-2.56-1.44-.906 0-1.68.213-2.32.64-.64.427-1.133 1.053-1.48 1.88-.32.827-.48 1.84-.48 3.04V38h-4.56V25.92c0-1.2-.133-2.213-.4-3.04-.24-.827-.626-1.453-1.16-1.88-.506-.427-1.133-.64-1.88-.64-.906 0-1.68.227-2.32.68-.64.427-1.133 1.053-1.48 1.88-.32.827-.48 1.827-.48 3V38h-4.96V16.8h4.48Zm26.723 10.6c0-2.24.427-4.187 1.28-5.84.854-1.68 2.067-2.973 3.64-3.88 1.574-.907 3.4-1.36 5.48-1.36 1.84 0 3.494.413 4.96 1.24 1.467.827 2.64 2.08 3.52 3.76.88 1.653 1.347 3.693 1.4 6.12v1.32h-15.08c.107 1.813.614 3.227 1.52 4.24.907.987 2.134 1.48 3.68 1.48.987 0 1.88-.253 2.68-.76a4.803 4.803 0 0 0 1.84-2.2l5.08.36c-.64 2.027-1.84 3.64-3.6 4.84-1.733 1.173-3.733 1.76-6 1.76-2.08 0-3.906-.453-5.48-1.36-1.573-.907-2.786-2.2-3.64-3.88-.853-1.68-1.28-3.627-1.28-5.84Zm15.16-2.04c-.213-1.733-.76-3.013-1.64-3.84-.853-.827-1.893-1.24-3.12-1.24-1.44 0-2.6.453-3.48 1.36-.88.88-1.44 2.12-1.68 3.72h9.92ZM163.139 9.6V38h-5.04V9.6h5.04Zm8.322 7.2.24 5.88-.64-.36c.32-2.053 1.094-3.56 2.32-4.52 1.254-.987 2.787-1.48 4.6-1.48 2.32 0 4.107.733 5.36 2.2 1.254 1.44 1.88 3.387 1.88 5.84V38h-4.96V25.92c0-1.253-.12-2.28-.36-3.08-.24-.8-.64-1.413-1.2-1.84-.533-.427-1.253-.64-2.16-.64-1.44 0-2.573.48-3.4 1.44-.8.933-1.2 2.307-1.2 4.12V38h-4.96V16.8h4.48Zm30.003 7.72c-.186-1.307-.706-2.32-1.56-3.04-.853-.72-1.866-1.08-3.04-1.08-1.68 0-2.986.613-3.92 1.84-.906 1.227-1.36 2.947-1.36 5.16s.454 3.933 1.36 5.16c.934 1.227 2.24 1.84 3.92 1.84 1.254 0 2.307-.373 3.16-1.12.854-.773 1.387-1.867 1.6-3.28l5.12.24c-.186 1.68-.733 3.147-1.64 4.4-.906 1.227-2.08 2.173-3.52 2.84-1.413.667-2.986 1-4.72 1-2.08 0-3.906-.453-5.48-1.36-1.546-.907-2.76-2.2-3.64-3.88-.853-1.68-1.28-3.627-1.28-5.84 0-2.24.427-4.187 1.28-5.84.88-1.68 2.094-2.973 3.64-3.88 1.574-.907 3.4-1.36 5.48-1.36 1.68 0 3.227.32 4.64.96 1.414.64 2.56 1.56 3.44 2.76.907 1.2 1.454 2.6 1.64 4.2l-5.12.28Zm11.443 8.16V38h-5.6v-5.32h5.6Z"/><path fill="#171717" fill-rule="evenodd" d="m7.839 40.783 16.03-28.054L20 6 0 40.783h7.839Zm8.214 0H40L27.99 19.894l-4.02 7.032 3.976 6.914H20.02l-3.967 6.943Z" clip-rule="evenodd"/></svg> \ No newline at end of file diff --git a/usecase/solar-political-influence-analyzer/src/frontend/public/placeholder-user.jpg b/usecase/solar-political-influence-analyzer/src/frontend/public/placeholder-user.jpg new file mode 100644 index 0000000..6fa7543 Binary files /dev/null and b/usecase/solar-political-influence-analyzer/src/frontend/public/placeholder-user.jpg differ diff --git a/usecase/solar-political-influence-analyzer/src/frontend/public/placeholder.jpg b/usecase/solar-political-influence-analyzer/src/frontend/public/placeholder.jpg new file mode 100644 index 0000000..6bfe963 Binary files /dev/null and b/usecase/solar-political-influence-analyzer/src/frontend/public/placeholder.jpg differ diff --git a/usecase/solar-political-influence-analyzer/src/frontend/public/placeholder.svg b/usecase/solar-political-influence-analyzer/src/frontend/public/placeholder.svg new file mode 100644 index 0000000..e763910 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/public/placeholder.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="1200" fill="none"><rect width="1200" height="1200" fill="#EAEAEA" rx="3"/><g opacity=".5"><g opacity=".5"><path fill="#FAFAFA" d="M600.709 736.5c-75.454 0-136.621-61.167-136.621-136.62 0-75.454 61.167-136.621 136.621-136.621 75.453 0 136.62 61.167 136.62 136.621 0 75.453-61.167 136.62-136.62 136.62Z"/><path stroke="#C9C9C9" stroke-width="2.418" d="M600.709 736.5c-75.454 0-136.621-61.167-136.621-136.62 0-75.454 61.167-136.621 136.621-136.621 75.453 0 136.62 61.167 136.62 136.621 0 75.453-61.167 136.62-136.62 136.62Z"/></g><path stroke="url(#a)" stroke-width="2.418" d="M0-1.209h553.581" transform="scale(1 -1) rotate(45 1163.11 91.165)"/><path stroke="url(#b)" stroke-width="2.418" d="M404.846 598.671h391.726"/><path stroke="url(#c)" stroke-width="2.418" d="M599.5 795.742V404.017"/><path stroke="url(#d)" stroke-width="2.418" d="m795.717 796.597-391.441-391.44"/><path fill="#fff" d="M600.709 656.704c-31.384 0-56.825-25.441-56.825-56.824 0-31.384 25.441-56.825 56.825-56.825 31.383 0 56.824 25.441 56.824 56.825 0 31.383-25.441 56.824-56.824 56.824Z"/><g clip-path="url(#e)"><path fill="#666" fill-rule="evenodd" d="M616.426 586.58h-31.434v16.176l3.553-3.554.531-.531h9.068l.074-.074 8.463-8.463h2.565l7.18 7.181V586.58Zm-15.715 14.654 3.698 3.699 1.283 1.282-2.565 2.565-1.282-1.283-5.2-5.199h-6.066l-5.514 5.514-.073.073v2.876a2.418 2.418 0 0 0 2.418 2.418h26.598a2.418 2.418 0 0 0 2.418-2.418v-8.317l-8.463-8.463-7.181 7.181-.071.072Zm-19.347 5.442v4.085a6.045 6.045 0 0 0 6.046 6.045h26.598a6.044 6.044 0 0 0 6.045-6.045v-7.108l1.356-1.355-1.282-1.283-.074-.073v-17.989h-38.689v23.43l-.146.146.146.147Z" clip-rule="evenodd"/></g><path stroke="#C9C9C9" stroke-width="2.418" d="M600.709 656.704c-31.384 0-56.825-25.441-56.825-56.824 0-31.384 25.441-56.825 56.825-56.825 31.383 0 56.824 25.441 56.824 56.825 0 31.383-25.441 56.824-56.824 56.824Z"/></g><defs><linearGradient id="a" x1="554.061" x2="-.48" y1=".083" y2=".087" gradientUnits="userSpaceOnUse"><stop stop-color="#C9C9C9" stop-opacity="0"/><stop offset=".208" stop-color="#C9C9C9"/><stop offset=".792" stop-color="#C9C9C9"/><stop offset="1" stop-color="#C9C9C9" stop-opacity="0"/></linearGradient><linearGradient id="b" x1="796.912" x2="404.507" y1="599.963" y2="599.965" gradientUnits="userSpaceOnUse"><stop stop-color="#C9C9C9" stop-opacity="0"/><stop offset=".208" stop-color="#C9C9C9"/><stop offset=".792" stop-color="#C9C9C9"/><stop offset="1" stop-color="#C9C9C9" stop-opacity="0"/></linearGradient><linearGradient id="c" x1="600.792" x2="600.794" y1="403.677" y2="796.082" gradientUnits="userSpaceOnUse"><stop stop-color="#C9C9C9" stop-opacity="0"/><stop offset=".208" stop-color="#C9C9C9"/><stop offset=".792" stop-color="#C9C9C9"/><stop offset="1" stop-color="#C9C9C9" stop-opacity="0"/></linearGradient><linearGradient id="d" x1="404.85" x2="796.972" y1="403.903" y2="796.02" gradientUnits="userSpaceOnUse"><stop stop-color="#C9C9C9" stop-opacity="0"/><stop offset=".208" stop-color="#C9C9C9"/><stop offset=".792" stop-color="#C9C9C9"/><stop offset="1" stop-color="#C9C9C9" stop-opacity="0"/></linearGradient><clipPath id="e"><path fill="#fff" d="M581.364 580.535h38.689v38.689h-38.689z"/></clipPath></defs></svg> \ No newline at end of file diff --git a/usecase/solar-political-influence-analyzer/src/frontend/scripts/main.py b/usecase/solar-political-influence-analyzer/src/frontend/scripts/main.py new file mode 100644 index 0000000..2821d0d --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/scripts/main.py @@ -0,0 +1,228 @@ +from fastapi import FastAPI, HTTPException +from fastapi.staticfiles import StaticFiles +from fastapi.responses import FileResponse +from fastapi.middleware.cors import CORSMiddleware +import os +import httpx +from pydantic import BaseModel +import requests +from bs4 import BeautifulSoup +import re +import asyncio +import time +from typing import Optional + +app = FastAPI() + +app.add_middleware( + CORSMiddleware, + allow_origins=["http://localhost:3000", "http://127.0.0.1:3000"], + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], +) + +def get_first_spt_con_text(query: str) -> Optional[str]: + """네이버에서 주가 정보를 크롤링합니다.""" + print(f"[DEBUG] Fetching stock data for: {query}") + url = "https://search.naver.com/search.naver" + params = { + "where": "nexearch", + "sm": "tab_hty.top", + "ssc": "tab.nx.all", + "query": f"{query} 주가", + } + headers = { + "User-Agent": ( + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " + "AppleWebKit/537.36 (KHTML, like Gecko) " + "Chrome/120.0.0.0 Safari/537.36" + ) + } + + try: + res = requests.get(url, params=params, headers=headers, timeout=10) + res.raise_for_status() + print(f"[DEBUG] Request successful for: {query}") + + soup = BeautifulSoup(res.text, "html.parser") + + # .spt_con.dw 또는 .spt_con.up 중 첫 번째 + block = soup.select_one(".spt_con.dw, .spt_con.up") + if not block: + print(f"[DEBUG] No stock block found for: {query}") + return None + + text = " ".join(block.stripped_strings) + print(f"[DEBUG] Stock data found: {text}") + return text + except Exception as e: + print(f"[ERROR] Error fetching stock data for {query}: {e}") + return None + +def parse_stock_data(text: str) -> dict: + """ + 주가 텍스트를 파싱합니다. + 예: "지수 476 전일대비 상승 1 (+0.21%)" + 예: "KRX 장마감 지수 310,500 전일대비 하락 11,000 (-3.42%) 2025.11.21." + """ + if not text: + return {"error": "데이터를 찾지 못했습니다."} + + print(f"[DEBUG] Parsing stock data: {text}") + + try: + # "지수" 다음의 숫자 추출 (쉼표 포함 가능) + price_match = re.search(r'지수\s+([\d,]+)', text) + if not price_match: + print("[DEBUG] Price pattern not found") + return {"error": "데이터를 찾지 못했습니다."} + + price = price_match.group(1).replace(',', '') + + # 상승/하락 판단 + is_up = '상승' in text + is_down = '하락' in text + + if not (is_up or is_down): + print("[DEBUG] Direction (상승/하락) not found") + return {"error": "데이터를 찾지 못했습니다."} + + direction = "상승" if is_up else "하락" + + # 변동 금액 추출 + change_match = re.search(r'(상승|하락)\s+([\d,]+)', text) + change = change_match.group(2).replace(',', '') if change_match else "0" + + # 변동률 추출 + percent_match = re.search(r'$$([+-]?[\d.]+)%$$', text) + change_percent = percent_match.group(1) if percent_match else "0" + + result = { + "price": price, + "direction": direction, + "change": change, + "change_percent": change_percent, + "raw_text": text + } + print(f"[DEBUG] Parsed result: {result}") + return result + except Exception as e: + print(f"[ERROR] Error parsing stock data: {e}") + return {"error": "데이터를 찾지 못했습니다."} + +last_request_time = 0 +REQUEST_INTERVAL = 1.0 # 1초 간격 + +# 1. API 라우트들을 먼저 정의합니다. +@app.get("/api/health") +def health_check(): + return {"status": "ok"} + +class QueryRequest(BaseModel): + query: str + +class StockPriceRequest(BaseModel): + company: str + +@app.post("/api/stock-price") +async def get_stock_price(request: StockPriceRequest): + """특정 기업의 주가 정보를 가져옵니다.""" + global last_request_time + + current_time = time.time() + time_since_last_request = current_time - last_request_time + if time_since_last_request < REQUEST_INTERVAL: + wait_time = REQUEST_INTERVAL - time_since_last_request + print(f"[DEBUG] Rate limiting: waiting {wait_time:.2f}s before request") + await asyncio.sleep(wait_time) + + last_request_time = time.time() + + try: + print(f"[DEBUG] Stock price request received for: {request.company}") + + # 회사 이름에서 괄호 안의 내용 제거 (예: "KEPCO (한국전력)" -> "KEPCO") + company_name = re.sub(r'\s*$$[^)]*$$', '', request.company).strip() + print(f"[DEBUG] Cleaned company name: {company_name}") + + # 주가 정보 크롤링 + stock_text = get_first_spt_con_text(company_name) + + if stock_text is None: + print(f"[DEBUG] No stock data found for: {company_name}") + return {"error": "데이터를 찾지 못했습니다."} + + # 텍스트 파싱 + parsed_data = parse_stock_data(stock_text) + print(f"[DEBUG] Returning parsed data: {parsed_data}") + + return parsed_data + except Exception as e: + print(f"[ERROR] Error in stock price endpoint: {e}") + return {"error": "검색도중 에러가 났습니다."} + +@app.post("/api/generate") +async def proxy_generate(request: QueryRequest): + async with httpx.AsyncClient() as client: + try: + # Forward the request to the deep research service running on port 8000 + response = await client.post( + "http://127.0.0.1:8000/generate", + json={"query": request.query}, + timeout=600.0 # Increased timeout for deep research + ) + response.raise_for_status() + return response.json() + except httpx.RequestError as exc: + raise HTTPException(status_code=500, detail=f"Error communicating with deep research service: {exc}") + except httpx.HTTPStatusError as exc: + raise HTTPException(status_code=exc.response.status_code, detail=f"Deep research service error: {exc.response.text}") + +# ... 여기에 기존 백엔드 로직 추가 ... + +# 2. Next.js 빌드 결과물('out' 폴더)이 있는지 확인 +# 주의: 실제 실행 전 'npm run build'를 통해 out 폴더가 생성되어 있어야 합니다. +build_dir = os.path.join(os.getcwd(), "out") + +if os.path.exists(build_dir): + # 3. 정적 파일 마운트 (_next 폴더 등) + # Next.js의 정적 자산들은 주로 _next 경로 아래에 있습니다. + app.mount("/_next", StaticFiles(directory=os.path.join(build_dir, "_next")), name="next") + + # 4. 루트 경로 및 기타 정적 파일 서빙 + # SPA(Single Page Application)처럼 동작하게 하려면 404 발생 시 index.html을 반환하거나 + # 특정 경로에 맞는 html을 반환해야 합니다. + + @app.get("/{full_path:path}") + async def serve_frontend(full_path: str): + # 요청된 파일이 실제로 존재하면 그 파일을 반환 (예: favicon.ico, robots.txt) + file_path = os.path.join(build_dir, full_path) + if os.path.exists(file_path) and os.path.isfile(file_path): + return FileResponse(file_path) + + # Try appending .html + html_path = os.path.join(build_dir, full_path + ".html") + if os.path.exists(html_path) and os.path.isfile(html_path): + return FileResponse(html_path) + + if full_path == "" or full_path == "/": + index_path = os.path.join(build_dir, "index.html") + if os.path.exists(index_path): + return FileResponse(index_path) + + # 존재하지 않는 경로라면 index.html 반환 (Client-side Routing 지원) + # 혹은 특정 페이지(analysis.html 등)로 매핑 로직 추가 가능 + index_path = os.path.join(build_dir, "index.html") + if os.path.exists(index_path): + return FileResponse(index_path) + + return HTTPException(status_code=404, detail="File not found and index.html not available") + +else: + print("Warning: 'out' directory not found. Run 'npm run build' first.") + +if __name__ == "__main__": + import uvicorn + print("Server running at: http://localhost:8001") + uvicorn.run(app, host="127.0.0.1", port=8001) diff --git a/usecase/solar-political-influence-analyzer/src/frontend/scripts/mock_server.py b/usecase/solar-political-influence-analyzer/src/frontend/scripts/mock_server.py new file mode 100644 index 0000000..9150283 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/scripts/mock_server.py @@ -0,0 +1,104 @@ +from fastapi import FastAPI +from pydantic import BaseModel + +app = FastAPI() + +# 반환할 JSON 데이터 그대로 변수로 저장 +mock_result = { + "report_title": "Lee Jae-myung의 정치·경제·기업 연결성 분석", + "time_range": "2018–2025", + "influence_chains": [ + { + "politician": "Lee Jae-myung", + "policy": "None directly linked", + "industry_or_sector": "Energy/Steel", + "companies": ["Korea Electric Power Corporation (KEPCO)", "POSCO"], + "impact_description": "Lee Jae-myung's spouse holds stocks in KEPCO and POSCO, indicating indirect financial ties to the energy and steel sectors.", + "evidence": [ + { + "source_title": "Lee Jae-myung 2023 Financial Disclosure Report", + "url": "https://www.ethics.go.kr/disclosure/2023/lee_jae_myung.pdf" + } + ] + }, + { + "politician": "Lee Jae-myung", + "policy": "Regional development projects", + "industry_or_sector": "Construction", + "companies": ["Seongnam Development Co."], + "impact_description": "Lee Jae-myung's brother owns a construction company that received Gyeonggi Province contracts, though no wrongdoing was proven.", + "evidence": [ + { + "source_title": "Gyeonggi Province Property Registry Database", + "url": "https://www.gg.go.kr/property/lee_family_registrations" + }, + { + "source_title": "KFTC Investigation Summary: Seongnam Development Co.", + "url": "https://www.ftc.go.kr/case/2020/sd_co_dismissal.pdf" + } + ] + }, + { + "politician": "Lee Jae-myung", + "policy": "Biotech R&D subsidies", + "industry_or_sector": "Biopharmaceuticals", + "companies": ["Celltrion Healthcare"], + "impact_description": "Lee Jae-myung's campaign had indirect ties to a lobbyist linked to Celltrion, coinciding with biotech stock surges after his R&D subsidy advocacy.", + "evidence": [ + { + "source_title": "Newstapa: Lee Jae-myung’s Bio-Pharma Ties", + "url": "https://www.newstapa.org/article/lee-celltrion" + } + ] + }, + { + "politician": "Lee Jae-myung", + "policy": "Regional development projects", + "industry_or_sector": "Construction/Consulting", + "companies": ["SK Group"], + "impact_description": "Lee Jae-myung's former aide founded a consulting firm that advised SK Group on Gyeonggi Province projects.", + "evidence": [ + { + "source_title": "KBS Special Report: PolicyLink and SK Group", + "url": "https://news.kbs.co.kr/politics/policylink_2023" + } + ] + }, + { + "politician": "Lee Jae-myung", + "policy": "Universal Basic Income (UBI) pilot", + "industry_or_sector": "Retail/SMEs", + "companies": ["Local SMEs/Retail"], + "impact_description": "Lee Jae-myung's UBI pilot in Gyeonggi Province increased local consumption and retail sales.", + "evidence": [ + { + "source_title": "(사진추가) 이재명 “기본소득은 최소한의 사회적안전망…코로나 위기로...", + "url": "https://gnews.gg.go.kr/briefing/brief_gongbo_view.do?BS_CODE=S017&number=45701" + } + ] + }, + { + "politician": "Lee Jae-myung", + "policy": "Regional development projects", + "industry_or_sector": "Construction", + "companies": ["동신건설 (025950)"], + "impact_description": "Lee Jae-myung's regional development policies were linked to stock price increases in 동신건설, a construction firm.", + "evidence": [ + { + "source_title": "이재명 관련주, 이재명 테마주 한 장으로 알아보기", + "url": "https://jjeongddol.tistory.com/54" + } + ] + } + ], + "notes": "Some connections are indirect or speculative (e.g., Celltrion stock surge timing). No direct evidence of policy quid pro quo. Financial disclosures and news investigations provide partial insights but lack comprehensive corporate filings or government procurement records." +} + +# 8000 POST 엔드포인트 +class QueryRequest(BaseModel): + query: str + +@app.post("/generate") +async def generate(req: QueryRequest): + # query 값은 무시하고 항상 mock_result 반환 + return mock_result diff --git a/usecase/solar-political-influence-analyzer/src/frontend/scripts/query-request.py b/usecase/solar-political-influence-analyzer/src/frontend/scripts/query-request.py new file mode 100644 index 0000000..bf0cbed --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/scripts/query-request.py @@ -0,0 +1,49 @@ +import os +import json +import asyncio +import uuid +from fastapi import FastAPI, Request +from dotenv import load_dotenv +from langgraph.checkpoint.memory import InMemorySaver +from langchain_core.messages import HumanMessage +from deep_research.research_agent_full import deep_researcher_builder +from pydantic import BaseModel +from fastapi import HTTPException + +load_dotenv() + +app = FastAPI(title="Deep Research Server") + +class QueryRequest(BaseModel): + query: str + +checkpointer = InMemorySaver() +full_agent = deep_researcher_builder.compile(checkpointer=checkpointer) + +async def run_agent(query: str): + """에이전트를 실행하고 결과(JSON) 반환""" + thread = {"configurable": {"thread_id": str(uuid.uuid4()), "recursion_limit": 10}} + result = await full_agent.ainvoke( + {"messages": [HumanMessage(content=query)]}, + config=thread + ) + data = result.get("final_report", {}) + json_str = json.dumps(data, ensure_ascii=False, indent=2) + return json_str + + +@app.post("/generate") +async def generate_report(request: QueryRequest): + """POST /generate { "query": "도널드 트럼프" }""" + query = request.query + + if not query: + raise HTTPException(400, "query field is required") + + result = await run_agent(query) + return json.loads(result) + + +if __name__ == "__main__": + import uvicorn + uvicorn.run("query-request:app", host="127.0.0.1", port=8000, reload=True) diff --git a/usecase/solar-political-influence-analyzer/src/frontend/tsconfig.json b/usecase/solar-political-influence-analyzer/src/frontend/tsconfig.json new file mode 100644 index 0000000..48d6d82 --- /dev/null +++ b/usecase/solar-political-influence-analyzer/src/frontend/tsconfig.json @@ -0,0 +1,41 @@ +{ + "compilerOptions": { + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "target": "ES6", + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "react-jsx", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": [ + "./*" + ] + } + }, + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts", + ".next/dev/types/**/*.ts" + ], + "exclude": [ + "node_modules" + ] +}