From 3ea3c0520d2d0a943d8db265c63568f73818bd3f Mon Sep 17 00:00:00 2001 From: UncleCode Date: Mon, 10 Mar 2025 18:57:14 +0800 Subject: [PATCH] Add all 5 deployments solution for testing --- deploy/aws/Dockerfile | 137 +++ deploy/aws/deploy-config.yml | 3 + deploy/aws/deploy.py | 729 +++++++++++ deploy/aws/docker/.dockerignore | 31 + deploy/aws/docker/.llm.env.example | 8 + deploy/aws/docker/README.md | 847 +++++++++++++ deploy/aws/docker/api.py | 442 +++++++ deploy/aws/docker/auth.py | 46 + deploy/aws/docker/config.yml | 71 ++ deploy/aws/docker/requirements.txt | 10 + deploy/aws/docker/server.py | 181 +++ deploy/aws/docker/supervisord.conf | 12 + deploy/aws/docker/utils.py | 66 + deploy/aws/howto.md | 77 ++ deploy/aws/nginx/Dockerfile | 2 + deploy/aws/nginx/nginx.conf | 55 + deploy/aws/version.txt | 1 + deploy/gcloud-function/Dockerfile | 63 + deploy/gcloud-function/config.yml | 8 + deploy/gcloud-function/deploy.py | 187 +++ deploy/gcloud-function/guide.md | 204 ++++ deploy/gcloud-function/main.py | 158 +++ deploy/gcloud-function/requirements.txt | 5 + .../resources/chrome/fonts.conf | 10 + .../chrome/fonts/Open_Sans/OpenSans-Bold.ttf | Bin 0 -> 147264 bytes .../fonts/Open_Sans/OpenSans-Italic.ttf | Bin 0 -> 153256 bytes .../chrome/fonts/Open_Sans/OpenSans-Light.ttf | Bin 0 -> 143788 bytes .../fonts/Open_Sans/OpenSans-Regular.ttf | Bin 0 -> 147528 bytes .../resources/chrome/libvulkan.so.1 | Bin 0 -> 702144 bytes .../resources/chrome/vk_swiftshader_icd.json | 1 + deploy/lambda/Dockerfile | 104 ++ deploy/lambda/deploy.py | 1081 +++++++++++++++++ deploy/lambda/guide.md | 345 ++++++ deploy/lambda/lambda_function.py | 107 ++ deploy/modal/crawl4ai_api_service.py | 543 +++++++++ deploy/modal/entry.py | 127 ++ deploy/modal/guide.md | 453 +++++++ deploy/modal/test_modal.py | 317 +++++ 38 files changed, 6431 insertions(+) create mode 100644 deploy/aws/Dockerfile create mode 100755 deploy/aws/deploy-config.yml create mode 100755 deploy/aws/deploy.py create mode 100644 deploy/aws/docker/.dockerignore create mode 100644 deploy/aws/docker/.llm.env.example create mode 100644 deploy/aws/docker/README.md create mode 100644 deploy/aws/docker/api.py create mode 100644 deploy/aws/docker/auth.py create mode 100644 deploy/aws/docker/config.yml create mode 100644 deploy/aws/docker/requirements.txt create mode 100644 deploy/aws/docker/server.py create mode 100644 deploy/aws/docker/supervisord.conf create mode 100644 deploy/aws/docker/utils.py create mode 100644 deploy/aws/howto.md create mode 100644 deploy/aws/nginx/Dockerfile create mode 100644 deploy/aws/nginx/nginx.conf create mode 100644 deploy/aws/version.txt create mode 100644 deploy/gcloud-function/Dockerfile create mode 100644 deploy/gcloud-function/config.yml create mode 100644 deploy/gcloud-function/deploy.py create mode 100644 deploy/gcloud-function/guide.md create mode 100644 deploy/gcloud-function/main.py create mode 100644 deploy/gcloud-function/requirements.txt create mode 100755 deploy/gcloud-function/resources/chrome/fonts.conf create mode 100755 deploy/gcloud-function/resources/chrome/fonts/Open_Sans/OpenSans-Bold.ttf create mode 100755 deploy/gcloud-function/resources/chrome/fonts/Open_Sans/OpenSans-Italic.ttf create mode 100755 deploy/gcloud-function/resources/chrome/fonts/Open_Sans/OpenSans-Light.ttf create mode 100755 deploy/gcloud-function/resources/chrome/fonts/Open_Sans/OpenSans-Regular.ttf create mode 100755 deploy/gcloud-function/resources/chrome/libvulkan.so.1 create mode 100644 deploy/gcloud-function/resources/chrome/vk_swiftshader_icd.json create mode 100644 deploy/lambda/Dockerfile create mode 100644 deploy/lambda/deploy.py create mode 100644 deploy/lambda/guide.md create mode 100644 deploy/lambda/lambda_function.py create mode 100644 deploy/modal/crawl4ai_api_service.py create mode 100644 deploy/modal/entry.py create mode 100644 deploy/modal/guide.md create mode 100644 deploy/modal/test_modal.py diff --git a/deploy/aws/Dockerfile b/deploy/aws/Dockerfile new file mode 100644 index 00000000..3043bd57 --- /dev/null +++ b/deploy/aws/Dockerfile @@ -0,0 +1,137 @@ +FROM python:3.10-slim + +# Set build arguments +ARG APP_HOME=/app +ARG GITHUB_REPO=https://github.com/unclecode/crawl4ai.git +ARG GITHUB_BRANCH=next +ARG USE_LOCAL=False +ARG CONFIG_PATH="" + +ENV PYTHONFAULTHANDLER=1 \ + PYTHONHASHSEED=random \ + PYTHONUNBUFFERED=1 \ + PIP_NO_CACHE_DIR=1 \ + PYTHONDONTWRITEBYTECODE=1 \ + PIP_DISABLE_PIP_VERSION_CHECK=1 \ + PIP_DEFAULT_TIMEOUT=100 \ + DEBIAN_FRONTEND=noninteractive \ + REDIS_HOST=localhost \ + REDIS_PORT=6379 + +ARG PYTHON_VERSION=3.10 +ARG INSTALL_TYPE=default +ARG ENABLE_GPU=false +ARG TARGETARCH + +LABEL maintainer="unclecode" +LABEL description="🔥🕷️ Crawl4AI: Open-source LLM Friendly Web Crawler & scraper" +LABEL version="1.0" + +RUN apt-get update && apt-get install -y --no-install-recommends \ + build-essential \ + curl \ + wget \ + gnupg \ + git \ + cmake \ + pkg-config \ + python3-dev \ + libjpeg-dev \ + redis-server \ + supervisor \ + && rm -rf /var/lib/apt/lists/* + +RUN apt-get update && apt-get install -y --no-install-recommends \ + libglib2.0-0 \ + libnss3 \ + libnspr4 \ + libatk1.0-0 \ + libatk-bridge2.0-0 \ + libcups2 \ + libdrm2 \ + libdbus-1-3 \ + libxcb1 \ + libxkbcommon0 \ + libx11-6 \ + libxcomposite1 \ + libxdamage1 \ + libxext6 \ + libxfixes3 \ + libxrandr2 \ + libgbm1 \ + libpango-1.0-0 \ + libcairo2 \ + libasound2 \ + libatspi2.0-0 \ + && rm -rf /var/lib/apt/lists/* + +RUN if [ "$ENABLE_GPU" = "true" ] && [ "$TARGETARCH" = "amd64" ] ; then \ + apt-get update && apt-get install -y --no-install-recommends \ + nvidia-cuda-toolkit \ + && rm -rf /var/lib/apt/lists/* ; \ +else \ + echo "Skipping NVIDIA CUDA Toolkit installation (unsupported platform or GPU disabled)"; \ +fi + +RUN if [ "$TARGETARCH" = "arm64" ]; then \ + echo "🦾 Installing ARM-specific optimizations"; \ + apt-get update && apt-get install -y --no-install-recommends \ + libopenblas-dev \ + && rm -rf /var/lib/apt/lists/*; \ +elif [ "$TARGETARCH" = "amd64" ]; then \ + echo "🖥️ Installing AMD64-specific optimizations"; \ + apt-get update && apt-get install -y --no-install-recommends \ + libomp-dev \ + && rm -rf /var/lib/apt/lists/*; \ +else \ + echo "Skipping platform-specific optimizations (unsupported platform)"; \ +fi + +WORKDIR ${APP_HOME} + +RUN git clone --branch ${GITHUB_BRANCH} ${GITHUB_REPO} /tmp/crawl4ai + +COPY docker/supervisord.conf . +COPY docker/requirements.txt . + +RUN pip install --no-cache-dir -r requirements.txt + +RUN if [ "$INSTALL_TYPE" = "all" ] ; then \ + pip install "/tmp/crawl4ai/[all]" && \ + python -m nltk.downloader punkt stopwords && \ + python -m crawl4ai.model_loader ; \ + elif [ "$INSTALL_TYPE" = "torch" ] ; then \ + pip install "/tmp/crawl4ai/[torch]" ; \ + elif [ "$INSTALL_TYPE" = "transformer" ] ; then \ + pip install "/tmp/crawl4ai/[transformer]" && \ + python -m crawl4ai.model_loader ; \ + else \ + pip install "/tmp/crawl4ai" ; \ + fi + +RUN pip install --no-cache-dir --upgrade pip && \ + python -c "import crawl4ai; print('✅ crawl4ai is ready to rock!')" && \ + python -c "from playwright.sync_api import sync_playwright; print('✅ Playwright is feeling dramatic!')" + +RUN playwright install --with-deps chromium + +COPY docker/* ${APP_HOME}/ +RUN if [ -n "$CONFIG_PATH" ] && [ -f "$CONFIG_PATH" ]; then \ + echo "Using custom config from $CONFIG_PATH" && \ + cp $CONFIG_PATH /app/config.yml; \ +fi + +HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ + CMD bash -c '\ + MEM=$(free -m | awk "/^Mem:/{print \$2}"); \ + if [ $MEM -lt 2048 ]; then \ + echo "⚠️ Warning: Less than 2GB RAM available! Your container might need a memory boost! 🚀"; \ + exit 1; \ + fi && \ + redis-cli ping > /dev/null && \ + curl -f http://localhost:8000/health || exit 1' + +# EXPOSE 6379 + +CMD ["supervisord", "-c", "supervisord.conf"] + diff --git a/deploy/aws/deploy-config.yml b/deploy/aws/deploy-config.yml new file mode 100755 index 00000000..aa10a50c --- /dev/null +++ b/deploy/aws/deploy-config.yml @@ -0,0 +1,3 @@ +project_name: PROJECT_NAME +domain_name: DOMAIN_NAME +aws_region: AWS_REGION \ No newline at end of file diff --git a/deploy/aws/deploy.py b/deploy/aws/deploy.py new file mode 100755 index 00000000..9ddc7662 --- /dev/null +++ b/deploy/aws/deploy.py @@ -0,0 +1,729 @@ +#!/usr/bin/env python3 +import argparse +import subprocess +import sys +import time +import json +import yaml +import requests +import os + +# Steps for deployment +STEPS = [ + "refresh_aws_auth", + "fetch_or_create_vpc_and_subnets", + "create_ecr_repositories", + "create_iam_role", + "create_security_groups", + "request_acm_certificate", + "build_and_push_docker", + "create_task_definition", + "setup_alb", + "deploy_ecs_service", + "configure_custom_domain", + "test_endpoints" +] + +# Utility function to prompt user for confirmation +def confirm_step(step_name): + while True: + response = input(f"Proceed with {step_name}? (yes/no): ").strip().lower() + if response in ["yes", "no"]: + return response == "yes" + print("Please enter 'yes' or 'no'.") + +# Utility function to run AWS CLI or shell commands and handle errors +def run_command(command, error_message, additional_diagnostics=None, cwd="."): + try: + result = subprocess.run(command, capture_output=True, text=True, check=True, cwd=cwd) + return result + except subprocess.CalledProcessError as e: + with open("error_context.md", "w") as f: + f.write(f"{error_message}:\n") + f.write(f"Command: {' '.join(command)}\n") + f.write(f"Exit Code: {e.returncode}\n") + f.write(f"Stdout: {e.stdout}\n") + f.write(f"Stderr: {e.stderr}\n") + if additional_diagnostics: + for diag_cmd in additional_diagnostics: + diag_result = subprocess.run(diag_cmd, capture_output=True, text=True) + f.write(f"\nDiagnostic command: {' '.join(diag_cmd)}\n") + f.write(f"Stdout: {diag_result.stdout}\n") + f.write(f"Stderr: {diag_result.stderr}\n") + raise Exception(f"{error_message}: {e.stderr}") + +# Utility function to load or initialize state +def load_state(project_name): + state_file = f"{project_name}-state.json" + if os.path.exists(state_file): + with open(state_file, "r") as f: + return json.load(f) + return {"last_step": -1} + +# Utility function to save state +def save_state(project_name, state): + state_file = f"{project_name}-state.json" + with open(state_file, "w") as f: + json.dump(state, f, indent=4) + +# DNS Check Function +def check_dns_propagation(domain, alb_dns): + try: + result = subprocess.run(["dig", "+short", domain], capture_output=True, text=True) + if alb_dns in result.stdout: + return True + return False + except Exception as e: + print(f"Failed to check DNS: {e}") + return False + +# Step Functions +def refresh_aws_auth(project_name, state, config): + if state["last_step"] >= 0: + print("Skipping refresh_aws_auth (already completed)") + return + if not confirm_step("Refresh AWS authentication"): + sys.exit("User aborted.") + run_command( + ["aws", "sts", "get-caller-identity"], + "Failed to verify AWS credentials" + ) + print("AWS authentication verified.") + state["last_step"] = 0 + save_state(project_name, state) + +def fetch_or_create_vpc_and_subnets(project_name, state, config): + if state["last_step"] >= 1: + print("Skipping fetch_or_create_vpc_and_subnets (already completed)") + return state["vpc_id"], state["public_subnets"] + if not confirm_step("Fetch or Create VPC and Subnets"): + sys.exit("User aborted.") + + # Fetch AWS account ID + result = run_command( + ["aws", "sts", "get-caller-identity"], + "Failed to get AWS account ID" + ) + account_id = json.loads(result.stdout)["Account"] + + # Fetch default VPC + result = run_command( + ["aws", "ec2", "describe-vpcs", "--filters", "Name=isDefault,Values=true", "--region", config["aws_region"]], + "Failed to describe VPCs" + ) + vpcs = json.loads(result.stdout).get("Vpcs", []) + if not vpcs: + result = run_command( + ["aws", "ec2", "create-vpc", "--cidr-block", "10.0.0.0/16", "--region", config["aws_region"]], + "Failed to create VPC" + ) + vpc_id = json.loads(result.stdout)["Vpc"]["VpcId"] + run_command( + ["aws", "ec2", "modify-vpc-attribute", "--vpc-id", vpc_id, "--enable-dns-hostnames", "--region", config["aws_region"]], + "Failed to enable DNS hostnames" + ) + else: + vpc_id = vpcs[0]["VpcId"] + + # Fetch or create subnets + result = run_command( + ["aws", "ec2", "describe-subnets", "--filters", f"Name=vpc-id,Values={vpc_id}", "--region", config["aws_region"]], + "Failed to describe subnets" + ) + subnets = json.loads(result.stdout).get("Subnets", []) + if len(subnets) < 2: + azs = json.loads(run_command( + ["aws", "ec2", "describe-availability-zones", "--region", config["aws_region"]], + "Failed to describe availability zones" + ).stdout)["AvailabilityZones"][:2] + subnet_ids = [] + for i, az in enumerate(azs): + az_name = az["ZoneName"] + result = run_command( + ["aws", "ec2", "create-subnet", "--vpc-id", vpc_id, "--cidr-block", f"10.0.{i}.0/24", "--availability-zone", az_name, "--region", config["aws_region"]], + f"Failed to create subnet in {az_name}" + ) + subnet_id = json.loads(result.stdout)["Subnet"]["SubnetId"] + subnet_ids.append(subnet_id) + run_command( + ["aws", "ec2", "modify-subnet-attribute", "--subnet-id", subnet_id, "--map-public-ip-on-launch", "--region", config["aws_region"]], + f"Failed to make subnet {subnet_id} public" + ) + else: + subnet_ids = [s["SubnetId"] for s in subnets[:2]] + + # Ensure internet gateway + result = run_command( + ["aws", "ec2", "describe-internet-gateways", "--filters", f"Name=attachment.vpc-id,Values={vpc_id}", "--region", config["aws_region"]], + "Failed to describe internet gateways" + ) + igws = json.loads(result.stdout).get("InternetGateways", []) + if not igws: + result = run_command( + ["aws", "ec2", "create-internet-gateway", "--region", config["aws_region"]], + "Failed to create internet gateway" + ) + igw_id = json.loads(result.stdout)["InternetGateway"]["InternetGatewayId"] + run_command( + ["aws", "ec2", "attach-internet-gateway", "--vpc-id", vpc_id, "--internet-gateway-id", igw_id, "--region", config["aws_region"]], + "Failed to attach internet gateway" + ) + + state["vpc_id"] = vpc_id + state["public_subnets"] = subnet_ids + state["last_step"] = 1 + save_state(project_name, state) + print(f"VPC ID: {vpc_id}, Subnets: {subnet_ids}") + return vpc_id, subnet_ids + +def create_ecr_repositories(project_name, state, config): + if state["last_step"] >= 2: + print("Skipping create_ecr_repositories (already completed)") + return + if not confirm_step("Create ECR Repositories"): + sys.exit("User aborted.") + + account_id = json.loads(run_command( + ["aws", "sts", "get-caller-identity"], + "Failed to get AWS account ID" + ).stdout)["Account"] + repos = [project_name, f"{project_name}-nginx"] + for repo in repos: + result = subprocess.run( + ["aws", "ecr", "describe-repositories", "--repository-names", repo, "--region", config["aws_region"]], + capture_output=True, text=True + ) + if result.returncode != 0: + run_command( + ["aws", "ecr", "create-repository", "--repository-name", repo, "--region", config["aws_region"]], + f"Failed to create ECR repository {repo}" + ) + print(f"ECR repository {repo} is ready.") + state["last_step"] = 2 + save_state(project_name, state) + +def create_iam_role(project_name, state, config): + if state["last_step"] >= 3: + print("Skipping create_iam_role (already completed)") + return + if not confirm_step("Create IAM Role"): + sys.exit("User aborted.") + + account_id = json.loads(run_command( + ["aws", "sts", "get-caller-identity"], + "Failed to get AWS account ID" + ).stdout)["Account"] + role_name = "ecsTaskExecutionRole" + trust_policy = { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": {"Service": "ecs-tasks.amazonaws.com"}, + "Action": "sts:AssumeRole" + } + ] + } + with open("trust_policy.json", "w") as f: + json.dump(trust_policy, f) + + result = subprocess.run( + ["aws", "iam", "get-role", "--role-name", role_name], + capture_output=True, text=True + ) + if result.returncode != 0: + run_command( + ["aws", "iam", "create-role", "--role-name", role_name, "--assume-role-policy-document", "file://trust_policy.json"], + f"Failed to create IAM role {role_name}" + ) + run_command( + ["aws", "iam", "attach-role-policy", "--role-name", role_name, "--policy-arn", "arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy"], + "Failed to attach ECS task execution policy" + ) + os.remove("trust_policy.json") + state["execution_role_arn"] = f"arn:aws:iam::{account_id}:role/{role_name}" + state["last_step"] = 3 + save_state(project_name, state) + print(f"IAM role {role_name} configured.") + +def create_security_groups(project_name, state, config): + if state["last_step"] >= 4: + print("Skipping create_security_groups (already completed)") + return state["alb_sg_id"], state["ecs_sg_id"] + if not confirm_step("Create Security Groups"): + sys.exit("User aborted.") + + vpc_id = state["vpc_id"] + alb_sg_name = f"{project_name}-alb-sg" + result = run_command( + ["aws", "ec2", "describe-security-groups", "--filters", f"Name=vpc-id,Values={vpc_id}", f"Name=group-name,Values={alb_sg_name}", "--region", config["aws_region"]], + "Failed to describe ALB security group" + ) + if not json.loads(result.stdout).get("SecurityGroups"): + result = run_command( + ["aws", "ec2", "create-security-group", "--group-name", alb_sg_name, "--description", "Security group for ALB", "--vpc-id", vpc_id, "--region", config["aws_region"]], + "Failed to create ALB security group" + ) + alb_sg_id = json.loads(result.stdout)["GroupId"] + run_command( + ["aws", "ec2", "authorize-security-group-ingress", "--group-id", alb_sg_id, "--protocol", "tcp", "--port", "80", "--cidr", "0.0.0.0/0", "--region", config["aws_region"]], + "Failed to authorize HTTP ingress" + ) + run_command( + ["aws", "ec2", "authorize-security-group-ingress", "--group-id", alb_sg_id, "--protocol", "tcp", "--port", "443", "--cidr", "0.0.0.0/0", "--region", config["aws_region"]], + "Failed to authorize HTTPS ingress" + ) + else: + alb_sg_id = json.loads(result.stdout)["SecurityGroups"][0]["GroupId"] + + ecs_sg_name = f"{project_name}-ecs-sg" + result = run_command( + ["aws", "ec2", "describe-security-groups", "--filters", f"Name=vpc-id,Values={vpc_id}", f"Name=group-name,Values={ecs_sg_name}", "--region", config["aws_region"]], + "Failed to describe ECS security group" + ) + if not json.loads(result.stdout).get("SecurityGroups"): + result = run_command( + ["aws", "ec2", "create-security-group", "--group-name", ecs_sg_name, "--description", "Security group for ECS tasks", "--vpc-id", vpc_id, "--region", config["aws_region"]], + "Failed to create ECS security group" + ) + ecs_sg_id = json.loads(result.stdout)["GroupId"] + run_command( + ["aws", "ec2", "authorize-security-group-ingress", "--group-id", ecs_sg_id, "--protocol", "tcp", "--port", "80", "--source-group", alb_sg_id, "--region", config["aws_region"]], + "Failed to authorize ECS ingress" + ) + else: + ecs_sg_id = json.loads(result.stdout)["SecurityGroups"][0]["GroupId"] + + state["alb_sg_id"] = alb_sg_id + state["ecs_sg_id"] = ecs_sg_id + state["last_step"] = 4 + save_state(project_name, state) + print("Security groups configured.") + return alb_sg_id, ecs_sg_id + +def request_acm_certificate(project_name, state, config): + if state["last_step"] >= 5: + print("Skipping request_acm_certificate (already completed)") + return state["cert_arn"] + if not confirm_step("Request ACM Certificate"): + sys.exit("User aborted.") + + domain_name = config["domain_name"] + result = run_command( + ["aws", "acm", "describe-certificates", "--certificate-statuses", "ISSUED", "--region", config["aws_region"]], + "Failed to describe certificates" + ) + certificates = json.loads(result.stdout).get("CertificateSummaryList", []) + cert_arn = next((c["CertificateArn"] for c in certificates if c["DomainName"] == domain_name), None) + + if not cert_arn: + result = run_command( + ["aws", "acm", "request-certificate", "--domain-name", domain_name, "--validation-method", "DNS", "--region", config["aws_region"]], + "Failed to request ACM certificate" + ) + cert_arn = json.loads(result.stdout)["CertificateArn"] + + time.sleep(10) + result = run_command( + ["aws", "acm", "describe-certificate", "--certificate-arn", cert_arn, "--region", config["aws_region"]], + "Failed to describe certificate" + ) + cert_details = json.loads(result.stdout)["Certificate"] + dns_validations = cert_details.get("DomainValidationOptions", []) + for validation in dns_validations: + if validation["ValidationMethod"] == "DNS" and "ResourceRecord" in validation: + record = validation["ResourceRecord"] + print(f"Please add this DNS record to validate the certificate for {domain_name}:") + print(f"Name: {record['Name']}") + print(f"Type: {record['Type']}") + print(f"Value: {record['Value']}") + print("Press Enter after adding the DNS record...") + input() + + while True: + result = run_command( + ["aws", "acm", "describe-certificate", "--certificate-arn", cert_arn, "--region", config["aws_region"]], + "Failed to check certificate status" + ) + status = json.loads(result.stdout)["Certificate"]["Status"] + if status == "ISSUED": + break + elif status in ["FAILED", "REVOKED", "INACTIVE"]: + print("Certificate issuance failed.") + sys.exit(1) + time.sleep(10) + + state["cert_arn"] = cert_arn + state["last_step"] = 5 + save_state(project_name, state) + print(f"Certificate ARN: {cert_arn}") + return cert_arn + +def build_and_push_docker(project_name, state, config): + if state["last_step"] >= 6: + print("Skipping build_and_push_docker (already completed)") + return state["fastapi_image"], state["nginx_image"] + if not confirm_step("Build and Push Docker Images"): + sys.exit("User aborted.") + + with open("./version.txt", "r") as f: + version = f.read().strip() + + account_id = json.loads(run_command( + ["aws", "sts", "get-caller-identity"], + "Failed to get AWS account ID" + ).stdout)["Account"] + region = config["aws_region"] + + login_password = run_command( + ["aws", "ecr", "get-login-password", "--region", region], + "Failed to get ECR login password" + ).stdout.strip() + run_command( + ["docker", "login", "--username", "AWS", "--password", login_password, f"{account_id}.dkr.ecr.{region}.amazonaws.com"], + "Failed to authenticate Docker to ECR" + ) + + fastapi_image = f"{account_id}.dkr.ecr.{region}.amazonaws.com/{project_name}:{version}" + run_command( + ["docker", "build", "-f", "Dockerfile", "-t", fastapi_image, "."], + "Failed to build FastAPI Docker image" + ) + run_command( + ["docker", "push", fastapi_image], + "Failed to push FastAPI image" + ) + + nginx_image = f"{account_id}.dkr.ecr.{region}.amazonaws.com/{project_name}-nginx:{version}" + run_command( + ["docker", "build", "-f", "Dockerfile", "-t", nginx_image, "."], + "Failed to build Nginx Docker image", + cwd="./nginx" + ) + run_command( + ["docker", "push", nginx_image], + "Failed to push Nginx image" + ) + + state["fastapi_image"] = fastapi_image + state["nginx_image"] = nginx_image + state["last_step"] = 6 + save_state(project_name, state) + print("Docker images built and pushed.") + return fastapi_image, nginx_image + +def create_task_definition(project_name, state, config): + if state["last_step"] >= 7: + print("Skipping create_task_definition (already completed)") + return state["task_def_arn"] + if not confirm_step("Create Task Definition"): + sys.exit("User aborted.") + + log_group = f"/ecs/{project_name}-logs" + result = run_command( + ["aws", "logs", "describe-log-groups", "--log-group-name-prefix", log_group, "--region", config["aws_region"]], + "Failed to describe log groups" + ) + if not any(lg["logGroupName"] == log_group for lg in json.loads(result.stdout).get("logGroups", [])): + run_command( + ["aws", "logs", "create-log-group", "--log-group-name", log_group, "--region", config["aws_region"]], + f"Failed to create log group {log_group}" + ) + + task_definition = { + "family": f"{project_name}-taskdef", + "networkMode": "awsvpc", + "requiresCompatibilities": ["FARGATE"], + "cpu": "512", + "memory": "2048", + "executionRoleArn": state["execution_role_arn"], + "containerDefinitions": [ + { + "name": "fastapi", + "image": state["fastapi_image"], + "portMappings": [{"containerPort": 8000, "hostPort": 8000, "protocol": "tcp"}], + "logConfiguration": { + "logDriver": "awslogs", + "options": { + "awslogs-group": log_group, + "awslogs-region": config["aws_region"], + "awslogs-stream-prefix": "fastapi" + } + } + }, + { + "name": "nginx", + "image": state["nginx_image"], + "portMappings": [{"containerPort": 80, "hostPort": 80, "protocol": "tcp"}], + "logConfiguration": { + "logDriver": "awslogs", + "options": { + "awslogs-group": log_group, + "awslogs-region": config["aws_region"], + "awslogs-stream-prefix": "nginx" + } + } + } + ] + } + + with open("task_def.json", "w") as f: + json.dump(task_definition, f) + result = run_command( + ["aws", "ecs", "register-task-definition", "--cli-input-json", "file://task_def.json", "--region", config["aws_region"]], + "Failed to register task definition" + ) + task_def_arn = json.loads(result.stdout)["taskDefinition"]["taskDefinitionArn"] + os.remove("task_def.json") + + state["task_def_arn"] = task_def_arn + state["last_step"] = 7 + save_state(project_name, state) + print("Task definition created.") + return task_def_arn + +def setup_alb(project_name, state, config): + if state["last_step"] >= 8: + print("Skipping setup_alb (already completed)") + return state["alb_arn"], state["tg_arn"], state["alb_dns"] + if not confirm_step("Set Up ALB"): + sys.exit("User aborted.") + + vpc_id = state["vpc_id"] + public_subnets = state["public_subnets"] + alb_name = f"{project_name}-alb" + + result = subprocess.run( + ["aws", "elbv2", "describe-load-balancers", "--names", alb_name, "--region", config["aws_region"]], + capture_output=True, text=True + ) + if result.returncode != 0: + run_command( + ["aws", "elbv2", "create-load-balancer", "--name", alb_name, "--subnets"] + public_subnets + ["--security-groups", state["alb_sg_id"], "--region", config["aws_region"]], + "Failed to create ALB" + ) + alb_arn = json.loads(run_command( + ["aws", "elbv2", "describe-load-balancers", "--names", alb_name, "--region", config["aws_region"]], + "Failed to describe ALB" + ).stdout)["LoadBalancers"][0]["LoadBalancerArn"] + alb_dns = json.loads(run_command( + ["aws", "elbv2", "describe-load-balancers", "--names", alb_name, "--region", config["aws_region"]], + "Failed to get ALB DNS name" + ).stdout)["LoadBalancers"][0]["DNSName"] + + tg_name = f"{project_name}-tg" + result = subprocess.run( + ["aws", "elbv2", "describe-target-groups", "--names", tg_name, "--region", config["aws_region"]], + capture_output=True, text=True + ) + if result.returncode != 0: + run_command( + ["aws", "elbv2", "create-target-group", "--name", tg_name, "--protocol", "HTTP", "--port", "80", "--vpc-id", vpc_id, "--region", config["aws_region"]], + "Failed to create target group" + ) + tg_arn = json.loads(run_command( + ["aws", "elbv2", "describe-target-groups", "--names", tg_name, "--region", config["aws_region"]], + "Failed to describe target group" + ).stdout)["TargetGroups"][0]["TargetGroupArn"] + + result = run_command( + ["aws", "elbv2", "describe-listeners", "--load-balancer-arn", alb_arn, "--region", config["aws_region"]], + "Failed to describe listeners" + ) + listeners = json.loads(result.stdout).get("Listeners", []) + if not any(l["Port"] == 80 for l in listeners): + run_command( + ["aws", "elbv2", "create-listener", "--load-balancer-arn", alb_arn, "--protocol", "HTTP", "--port", "80", "--default-actions", "Type=redirect,RedirectConfig={Protocol=HTTPS,Port=443,StatusCode=HTTP_301}", "--region", config["aws_region"]], + "Failed to create HTTP listener" + ) + if not any(l["Port"] == 443 for l in listeners): + run_command( + ["aws", "elbv2", "create-listener", "--load-balancer-arn", alb_arn, "--protocol", "HTTPS", "--port", "443", "--certificates", f"CertificateArn={state['cert_arn']}", "--default-actions", f"Type=forward,TargetGroupArn={tg_arn}", "--region", config["aws_region"]], + "Failed to create HTTPS listener" + ) + + state["alb_arn"] = alb_arn + state["tg_arn"] = tg_arn + state["alb_dns"] = alb_dns + state["last_step"] = 8 + save_state(project_name, state) + print("ALB configured.") + return alb_arn, tg_arn, alb_dns + +def deploy_ecs_service(project_name, state, config): + if state["last_step"] >= 9: + print("Skipping deploy_ecs_service (already completed)") + return + if not confirm_step("Deploy ECS Service"): + sys.exit("User aborted.") + + cluster_name = f"{project_name}-cluster" + result = run_command( + ["aws", "ecs", "describe-clusters", "--clusters", cluster_name, "--region", config["aws_region"]], + "Failed to describe clusters" + ) + if not json.loads(result.stdout).get("clusters"): + run_command( + ["aws", "ecs", "create-cluster", "--cluster-name", cluster_name, "--region", config["aws_region"]], + "Failed to create ECS cluster" + ) + + service_name = f"{project_name}-service" + result = run_command( + ["aws", "ecs", "describe-services", "--cluster", cluster_name, "--services", service_name, "--region", config["aws_region"]], + "Failed to describe services", + additional_diagnostics=[["aws", "ecs", "list-tasks", "--cluster", cluster_name, "--service-name", service_name, "--region", config["aws_region"]]] + ) + services = json.loads(result.stdout).get("services", []) + if not services or services[0]["status"] == "INACTIVE": + run_command( + ["aws", "ecs", "create-service", "--cluster", cluster_name, "--service-name", service_name, "--task-definition", state["task_def_arn"], "--desired-count", "1", "--launch-type", "FARGATE", "--network-configuration", f"awsvpcConfiguration={{subnets={json.dumps(state['public_subnets'])},securityGroups=[{state['ecs_sg_id']}],assignPublicIp=ENABLED}}", "--load-balancers", f"targetGroupArn={state['tg_arn']},containerName=nginx,containerPort=80", "--region", config["aws_region"]], + "Failed to create ECS service" + ) + else: + run_command( + ["aws", "ecs", "update-service", "--cluster", cluster_name, "--service", service_name, "--task-definition", state["task_def_arn"], "--region", config["aws_region"]], + "Failed to update ECS service" + ) + + state["last_step"] = 9 + save_state(project_name, state) + print("ECS service deployed.") + +def configure_custom_domain(project_name, state, config): + if state["last_step"] >= 10: + print("Skipping configure_custom_domain (already completed)") + return + if not confirm_step("Configure Custom Domain"): + sys.exit("User aborted.") + + domain_name = config["domain_name"] + alb_dns = state["alb_dns"] + print(f"Please add a CNAME record for {domain_name} pointing to {alb_dns} in your DNS provider.") + print("Press Enter after updating the DNS record...") + input() + + while not check_dns_propagation(domain_name, alb_dns): + print("DNS propagation not complete. Waiting 30 seconds before retrying...") + time.sleep(30) + print("DNS propagation confirmed.") + + state["last_step"] = 10 + save_state(project_name, state) + print("Custom domain configured.") + +def test_endpoints(project_name, state, config): + if state["last_step"] >= 11: + print("Skipping test_endpoints (already completed)") + return + if not confirm_step("Test Endpoints"): + sys.exit("User aborted.") + + domain = config["domain_name"] + time.sleep(30) # Wait for service to stabilize + + response = requests.get(f"https://{domain}/health", verify=False) + if response.status_code != 200: + with open("error_context.md", "w") as f: + f.write("Health endpoint test failed:\n") + f.write(f"Status Code: {response.status_code}\n") + f.write(f"Response: {response.text}\n") + sys.exit(1) + print("Health endpoint test passed.") + + payload = { + "urls": ["https://example.com"], + "browser_config": {"headless": True}, + "crawler_config": {"stream": False} + } + response = requests.post(f"https://{domain}/crawl", json=payload, verify=False) + if response.status_code != 200: + with open("error_context.md", "w") as f: + f.write("Crawl endpoint test failed:\n") + f.write(f"Status Code: {response.status_code}\n") + f.write(f"Response: {response.text}\n") + sys.exit(1) + print("Crawl endpoint test passed.") + + state["last_step"] = 11 + save_state(project_name, state) + print("Endpoints tested successfully.") + +# Main Deployment Function +def deploy(project_name, force=False): + config_file = f"{project_name}-config.yml" + if not os.path.exists(config_file): + print(f"Configuration file {config_file} not found. Run 'init' first.") + sys.exit(1) + + with open(config_file, "r") as f: + config = yaml.safe_load(f) + + state = load_state(project_name) + if force: + state = {"last_step": -1} + + last_step = state.get("last_step", -1) + + for step_idx, step_name in enumerate(STEPS): + if step_idx <= last_step: + print(f"Skipping {step_name} (already completed)") + continue + print(f"Executing step: {step_name}") + func = globals()[step_name] + if step_name == "fetch_or_create_vpc_and_subnets": + vpc_id, public_subnets = func(project_name, state, config) + elif step_name == "create_security_groups": + alb_sg_id, ecs_sg_id = func(project_name, state, config) + elif step_name == "request_acm_certificate": + cert_arn = func(project_name, state, config) + elif step_name == "build_and_push_docker": + fastapi_image, nginx_image = func(project_name, state, config) + elif step_name == "create_task_definition": + task_def_arn = func(project_name, state, config) + elif step_name == "setup_alb": + alb_arn, tg_arn, alb_dns = func(project_name, state, config) + elif step_name == "deploy_ecs_service": + func(project_name, state, config) + elif step_name == "configure_custom_domain": + func(project_name, state, config) + elif step_name == "test_endpoints": + func(project_name, state, config) + else: + func(project_name, state, config) + +# Init Command +def init(project_name, domain_name, aws_region): + config = { + "project_name": project_name, + "domain_name": domain_name, + "aws_region": aws_region + } + config_file = f"{project_name}-config.yml" + with open(config_file, "w") as f: + yaml.dump(config, f) + print(f"Configuration file {config_file} created.") + +# Argument Parser +parser = argparse.ArgumentParser(description="Crawl4AI Deployment Script") +subparsers = parser.add_subparsers(dest="command") + +# Init Parser +init_parser = subparsers.add_parser("init", help="Initialize configuration") +init_parser.add_argument("--project", required=True, help="Project name") +init_parser.add_argument("--domain", required=True, help="Domain name") +init_parser.add_argument("--region", required=True, help="AWS region") + +# Deploy Parser +deploy_parser = subparsers.add_parser("deploy", help="Deploy the project") +deploy_parser.add_argument("--project", required=True, help="Project name") +deploy_parser.add_argument("--force", action="store_true", help="Force redeployment from start") + +args = parser.parse_args() + +if args.command == "init": + init(args.project, args.domain, args.region) +elif args.command == "deploy": + deploy(args.project, args.force) +else: + parser.print_help() \ No newline at end of file diff --git a/deploy/aws/docker/.dockerignore b/deploy/aws/docker/.dockerignore new file mode 100644 index 00000000..6f126444 --- /dev/null +++ b/deploy/aws/docker/.dockerignore @@ -0,0 +1,31 @@ +# .dockerignore +* + +# Allow specific files and directories when using local installation +!crawl4ai/ +!docs/ +!deploy/docker/ +!setup.py +!pyproject.toml +!README.md +!LICENSE +!MANIFEST.in +!setup.cfg +!mkdocs.yml + +.git/ +__pycache__/ +*.pyc +*.pyo +*.pyd +.DS_Store +.env +.venv +venv/ +tests/ +coverage.xml +*.log +*.swp +*.egg-info/ +dist/ +build/ \ No newline at end of file diff --git a/deploy/aws/docker/.llm.env.example b/deploy/aws/docker/.llm.env.example new file mode 100644 index 00000000..5fee4a93 --- /dev/null +++ b/deploy/aws/docker/.llm.env.example @@ -0,0 +1,8 @@ +# LLM Provider Keys +OPENAI_API_KEY=your_openai_key_here +DEEPSEEK_API_KEY=your_deepseek_key_here +ANTHROPIC_API_KEY=your_anthropic_key_here +GROQ_API_KEY=your_groq_key_here +TOGETHER_API_KEY=your_together_key_here +MISTRAL_API_KEY=your_mistral_key_here +GEMINI_API_TOKEN=your_gemini_key_here \ No newline at end of file diff --git a/deploy/aws/docker/README.md b/deploy/aws/docker/README.md new file mode 100644 index 00000000..f62e58c4 --- /dev/null +++ b/deploy/aws/docker/README.md @@ -0,0 +1,847 @@ +# Crawl4AI Docker Guide 🐳 + +## Table of Contents +- [Prerequisites](#prerequisites) +- [Installation](#installation) + - [Local Build](#local-build) + - [Docker Hub](#docker-hub) +- [Dockerfile Parameters](#dockerfile-parameters) +- [Using the API](#using-the-api) + - [Understanding Request Schema](#understanding-request-schema) + - [REST API Examples](#rest-api-examples) + - [Python SDK](#python-sdk) +- [Metrics & Monitoring](#metrics--monitoring) +- [Deployment Scenarios](#deployment-scenarios) +- [Complete Examples](#complete-examples) +- [Getting Help](#getting-help) + +## Prerequisites + +Before we dive in, make sure you have: +- Docker installed and running (version 20.10.0 or higher) +- At least 4GB of RAM available for the container +- Python 3.10+ (if using the Python SDK) +- Node.js 16+ (if using the Node.js examples) + +> 💡 **Pro tip**: Run `docker info` to check your Docker installation and available resources. + +## Installation + +### Local Build + +Let's get your local environment set up step by step! + +#### 1. Building the Image + +First, clone the repository and build the Docker image: + +```bash +# Clone the repository +git clone https://github.com/unclecode/crawl4ai.git +cd crawl4ai/deploy + +# Build the Docker image +docker build --platform=linux/amd64 --no-cache -t crawl4ai . + +# Or build for arm64 +docker build --platform=linux/arm64 --no-cache -t crawl4ai . +``` + +#### 2. Environment Setup + +If you plan to use LLMs (Language Models), you'll need to set up your API keys. Create a `.llm.env` file: + +```env +# OpenAI +OPENAI_API_KEY=sk-your-key + +# Anthropic +ANTHROPIC_API_KEY=your-anthropic-key + +# DeepSeek +DEEPSEEK_API_KEY=your-deepseek-key + +# Check out https://docs.litellm.ai/docs/providers for more providers! +``` + +> 🔑 **Note**: Keep your API keys secure! Never commit them to version control. + +#### 3. Running the Container + +You have several options for running the container: + +Basic run (no LLM support): +```bash +docker run -d -p 8000:8000 --name crawl4ai crawl4ai +``` + +With LLM support: +```bash +docker run -d -p 8000:8000 \ + --env-file .llm.env \ + --name crawl4ai \ + crawl4ai +``` + +Using host environment variables (Not a good practice, but works for local testing): +```bash +docker run -d -p 8000:8000 \ + --env-file .llm.env \ + --env "$(env)" \ + --name crawl4ai \ + crawl4ai +``` + +#### Multi-Platform Build +For distributing your image across different architectures, use `buildx`: + +```bash +# Set up buildx builder +docker buildx create --use + +# Build for multiple platforms +docker buildx build \ + --platform linux/amd64,linux/arm64 \ + -t crawl4ai \ + --push \ + . +``` + +> 💡 **Note**: Multi-platform builds require Docker Buildx and need to be pushed to a registry. + +#### Development Build +For development, you might want to enable all features: + +```bash +docker build -t crawl4ai + --build-arg INSTALL_TYPE=all \ + --build-arg PYTHON_VERSION=3.10 \ + --build-arg ENABLE_GPU=true \ + . +``` + +#### GPU-Enabled Build +If you plan to use GPU acceleration: + +```bash +docker build -t crawl4ai + --build-arg ENABLE_GPU=true \ + deploy/docker/ +``` + +### Build Arguments Explained + +| Argument | Description | Default | Options | +|----------|-------------|---------|----------| +| PYTHON_VERSION | Python version | 3.10 | 3.8, 3.9, 3.10 | +| INSTALL_TYPE | Feature set | default | default, all, torch, transformer | +| ENABLE_GPU | GPU support | false | true, false | +| APP_HOME | Install path | /app | any valid path | + +### Build Best Practices + +1. **Choose the Right Install Type** + - `default`: Basic installation, smallest image, to be honest, I use this most of the time. + - `all`: Full features, larger image (include transformer, and nltk, make sure you really need them) + +2. **Platform Considerations** + - Let Docker auto-detect platform unless you need cross-compilation + - Use --platform for specific architecture requirements + - Consider buildx for multi-architecture distribution + +3. **Performance Optimization** + - The image automatically includes platform-specific optimizations + - AMD64 gets OpenMP optimizations + - ARM64 gets OpenBLAS optimizations + +### Docker Hub + +> 🚧 Coming soon! The image will be available at `crawl4ai`. Stay tuned! + +## Using the API + +In the following sections, we discuss two ways to communicate with the Docker server. One option is to use the client SDK that I developed for Python, and I will soon develop one for Node.js. I highly recommend this approach to avoid mistakes. Alternatively, you can take a more technical route by using the JSON structure and passing it to all the URLs, which I will explain in detail. + +### Python SDK + +The SDK makes things easier! Here's how to use it: + +```python +from crawl4ai.docker_client import Crawl4aiDockerClient +from crawl4ai import BrowserConfig, CrawlerRunConfig + +async def main(): + async with Crawl4aiDockerClient(base_url="http://localhost:8000", verbose=True) as client: + # If JWT is enabled, you can authenticate like this: (more on this later) + # await client.authenticate("test@example.com") + + # Non-streaming crawl + results = await client.crawl( + ["https://example.com", "https://python.org"], + browser_config=BrowserConfig(headless=True), + crawler_config=CrawlerRunConfig() + ) + print(f"Non-streaming results: {results}") + + # Streaming crawl + crawler_config = CrawlerRunConfig(stream=True) + async for result in await client.crawl( + ["https://example.com", "https://python.org"], + browser_config=BrowserConfig(headless=True), + crawler_config=crawler_config + ): + print(f"Streamed result: {result}") + + # Get schema + schema = await client.get_schema() + print(f"Schema: {schema}") + +if __name__ == "__main__": + asyncio.run(main()) +``` + +`Crawl4aiDockerClient` is an async context manager that handles the connection for you. You can pass in optional parameters for more control: + +- `base_url` (str): Base URL of the Crawl4AI Docker server +- `timeout` (float): Default timeout for requests in seconds +- `verify_ssl` (bool): Whether to verify SSL certificates +- `verbose` (bool): Whether to show logging output +- `log_file` (str, optional): Path to log file if file logging is desired + +This client SDK generates a properly structured JSON request for the server's HTTP API. + +## Second Approach: Direct API Calls + +This is super important! The API expects a specific structure that matches our Python classes. Let me show you how it works. + +### Understanding Configuration Structure + +Let's dive deep into how configurations work in Crawl4AI. Every configuration object follows a consistent pattern of `type` and `params`. This structure enables complex, nested configurations while maintaining clarity. + +#### The Basic Pattern + +Try this in Python to understand the structure: +```python +from crawl4ai import BrowserConfig + +# Create a config and see its structure +config = BrowserConfig(headless=True) +print(config.dump()) +``` + +This outputs: +```json +{ + "type": "BrowserConfig", + "params": { + "headless": true + } +} +``` + +#### Simple vs Complex Values + +The structure follows these rules: +- Simple values (strings, numbers, booleans, lists) are passed directly +- Complex values (classes, dictionaries) use the type-params pattern + +For example, with dictionaries: +```json +{ + "browser_config": { + "type": "BrowserConfig", + "params": { + "headless": true, // Simple boolean - direct value + "viewport": { // Complex dictionary - needs type-params + "type": "dict", + "value": { + "width": 1200, + "height": 800 + } + } + } + } +} +``` + +#### Strategy Pattern and Nesting + +Strategies (like chunking or content filtering) demonstrate why we need this structure. Consider this chunking configuration: + +```json +{ + "crawler_config": { + "type": "CrawlerRunConfig", + "params": { + "chunking_strategy": { + "type": "RegexChunking", // Strategy implementation + "params": { + "patterns": ["\n\n", "\\.\\s+"] + } + } + } + } +} +``` + +Here, `chunking_strategy` accepts any chunking implementation. The `type` field tells the system which strategy to use, and `params` configures that specific strategy. + +#### Complex Nested Example + +Let's look at a more complex example with content filtering: + +```json +{ + "crawler_config": { + "type": "CrawlerRunConfig", + "params": { + "markdown_generator": { + "type": "DefaultMarkdownGenerator", + "params": { + "content_filter": { + "type": "PruningContentFilter", + "params": { + "threshold": 0.48, + "threshold_type": "fixed" + } + } + } + } + } + } +} +``` + +This shows how deeply configurations can nest while maintaining a consistent structure. + +#### Quick Grammar Overview +``` +config := { + "type": string, + "params": { + key: simple_value | complex_value + } +} + +simple_value := string | number | boolean | [simple_value] +complex_value := config | dict_value + +dict_value := { + "type": "dict", + "value": object +} +``` + +#### Important Rules 🚨 + +- Always use the type-params pattern for class instances +- Use direct values for primitives (numbers, strings, booleans) +- Wrap dictionaries with {"type": "dict", "value": {...}} +- Arrays/lists are passed directly without type-params +- All parameters are optional unless specifically required + +#### Pro Tip 💡 + +The easiest way to get the correct structure is to: +1. Create configuration objects in Python +2. Use the `dump()` method to see their JSON representation +3. Use that JSON in your API calls + +Example: +```python +from crawl4ai import CrawlerRunConfig, PruningContentFilter + +config = CrawlerRunConfig( + content_filter=PruningContentFilter(threshold=0.48) +) +print(config.dump()) # Use this JSON in your API calls +``` + + +#### More Examples + +**Advanced Crawler Configuration** + +```json +{ + "urls": ["https://example.com"], + "crawler_config": { + "type": "CrawlerRunConfig", + "params": { + "cache_mode": "bypass", + "markdown_generator": { + "type": "DefaultMarkdownGenerator", + "params": { + "content_filter": { + "type": "PruningContentFilter", + "params": { + "threshold": 0.48, + "threshold_type": "fixed", + "min_word_threshold": 0 + } + } + } + } + } + } +} +``` + +**Extraction Strategy**: + +```json +{ + "crawler_config": { + "type": "CrawlerRunConfig", + "params": { + "extraction_strategy": { + "type": "JsonCssExtractionStrategy", + "params": { + "schema": { + "baseSelector": "article.post", + "fields": [ + {"name": "title", "selector": "h1", "type": "text"}, + {"name": "content", "selector": ".content", "type": "html"} + ] + } + } + } + } + } +} +``` + +**LLM Extraction Strategy** + +```json +{ + "crawler_config": { + "type": "CrawlerRunConfig", + "params": { + "extraction_strategy": { + "type": "LLMExtractionStrategy", + "params": { + "instruction": "Extract article title, author, publication date and main content", + "provider": "openai/gpt-4", + "api_token": "your-api-token", + "schema": { + "type": "dict", + "value": { + "title": "Article Schema", + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "The article's headline" + }, + "author": { + "type": "string", + "description": "The author's name" + }, + "published_date": { + "type": "string", + "format": "date-time", + "description": "Publication date and time" + }, + "content": { + "type": "string", + "description": "The main article content" + } + }, + "required": ["title", "content"] + } + } + } + } + } + } +} +``` + +**Deep Crawler Example** + +```json +{ + "crawler_config": { + "type": "CrawlerRunConfig", + "params": { + "deep_crawl_strategy": { + "type": "BFSDeepCrawlStrategy", + "params": { + "max_depth": 3, + "max_pages": 100, + "filter_chain": { + "type": "FastFilterChain", + "params": { + "filters": [ + { + "type": "FastContentTypeFilter", + "params": { + "allowed_types": ["text/html", "application/xhtml+xml"] + } + }, + { + "type": "FastDomainFilter", + "params": { + "allowed_domains": ["blog.*", "docs.*"], + "blocked_domains": ["ads.*", "analytics.*"] + } + }, + { + "type": "FastURLPatternFilter", + "params": { + "allowed_patterns": ["^/blog/", "^/docs/"], + "blocked_patterns": [".*/ads/", ".*/sponsored/"] + } + } + ] + } + }, + "url_scorer": { + "type": "FastCompositeScorer", + "params": { + "scorers": [ + { + "type": "FastKeywordRelevanceScorer", + "params": { + "keywords": ["tutorial", "guide", "documentation"], + "weight": 1.0 + } + }, + { + "type": "FastPathDepthScorer", + "params": { + "weight": 0.5, + "preferred_depth": 2 + } + }, + { + "type": "FastFreshnessScorer", + "params": { + "weight": 0.8, + "max_age_days": 365 + } + } + ] + } + } + } + } + } + } +} +``` + +### REST API Examples + +Let's look at some practical examples: + +#### Simple Crawl + +```python +import requests + +crawl_payload = { + "urls": ["https://example.com"], + "browser_config": {"headless": True}, + "crawler_config": {"stream": False} +} +response = requests.post( + "http://localhost:8000/crawl", + # headers={"Authorization": f"Bearer {token}"}, # If JWT is enabled, more on this later + json=crawl_payload +) +print(response.json()) # Print the response for debugging +``` + +#### Streaming Results + +```python +async def test_stream_crawl(session, token: str): + """Test the /crawl/stream endpoint with multiple URLs.""" + url = "http://localhost:8000/crawl/stream" + payload = { + "urls": [ + "https://example.com", + "https://example.com/page1", + "https://example.com/page2", + "https://example.com/page3", + ], + "browser_config": {"headless": True, "viewport": {"width": 1200}}, + "crawler_config": {"stream": True, "cache_mode": "aggressive"} + } + + # headers = {"Authorization": f"Bearer {token}"} # If JWT is enabled, more on this later + + try: + async with session.post(url, json=payload, headers=headers) as response: + status = response.status + print(f"Status: {status} (Expected: 200)") + assert status == 200, f"Expected 200, got {status}" + + # Read streaming response line-by-line (NDJSON) + async for line in response.content: + if line: + data = json.loads(line.decode('utf-8').strip()) + print(f"Streamed Result: {json.dumps(data, indent=2)}") + except Exception as e: + print(f"Error in streaming crawl test: {str(e)}") +``` + +## Metrics & Monitoring + +Keep an eye on your crawler with these endpoints: + +- `/health` - Quick health check +- `/metrics` - Detailed Prometheus metrics +- `/schema` - Full API schema + +Example health check: +```bash +curl http://localhost:8000/health +``` + +## Deployment Scenarios + +> 🚧 Coming soon! We'll cover: +> - Kubernetes deployment +> - Cloud provider setups (AWS, GCP, Azure) +> - High-availability configurations +> - Load balancing strategies + +## Complete Examples + +Check out the `examples` folder in our repository for full working examples! Here are two to get you started: +[Using Client SDK](https://github.com/unclecode/crawl4ai/blob/main/docs/examples/docker_python_sdk_example.py) +[Using REST API](https://github.com/unclecode/crawl4ai/blob/main/docs/examples/docker_python_rest_api_example.py) + +## Server Configuration + +The server's behavior can be customized through the `config.yml` file. Let's explore how to configure your Crawl4AI server for optimal performance and security. + +### Understanding config.yml + +The configuration file is located at `deploy/docker/config.yml`. You can either modify this file before building the image or mount a custom configuration when running the container. + +Here's a detailed breakdown of the configuration options: + +```yaml +# Application Configuration +app: + title: "Crawl4AI API" # Server title in OpenAPI docs + version: "1.0.0" # API version + host: "0.0.0.0" # Listen on all interfaces + port: 8000 # Server port + reload: True # Enable hot reloading (development only) + timeout_keep_alive: 300 # Keep-alive timeout in seconds + +# Rate Limiting Configuration +rate_limiting: + enabled: True # Enable/disable rate limiting + default_limit: "100/minute" # Rate limit format: "number/timeunit" + trusted_proxies: [] # List of trusted proxy IPs + storage_uri: "memory://" # Use "redis://localhost:6379" for production + +# Security Configuration +security: + enabled: false # Master toggle for security features + jwt_enabled: true # Enable JWT authentication + https_redirect: True # Force HTTPS + trusted_hosts: ["*"] # Allowed hosts (use specific domains in production) + headers: # Security headers + x_content_type_options: "nosniff" + x_frame_options: "DENY" + content_security_policy: "default-src 'self'" + strict_transport_security: "max-age=63072000; includeSubDomains" + +# Crawler Configuration +crawler: + memory_threshold_percent: 95.0 # Memory usage threshold + rate_limiter: + base_delay: [1.0, 2.0] # Min and max delay between requests + timeouts: + stream_init: 30.0 # Stream initialization timeout + batch_process: 300.0 # Batch processing timeout + +# Logging Configuration +logging: + level: "INFO" # Log level (DEBUG, INFO, WARNING, ERROR) + format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s" + +# Observability Configuration +observability: + prometheus: + enabled: True # Enable Prometheus metrics + endpoint: "/metrics" # Metrics endpoint + health_check: + endpoint: "/health" # Health check endpoint +``` + +### JWT Authentication + +When `security.jwt_enabled` is set to `true` in your config.yml, all endpoints require JWT authentication via bearer tokens. Here's how it works: + +#### Getting a Token +```python +POST /token +Content-Type: application/json + +{ + "email": "user@example.com" +} +``` + +The endpoint returns: +```json +{ + "email": "user@example.com", + "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOi...", + "token_type": "bearer" +} +``` + +#### Using the Token +Add the token to your requests: +```bash +curl -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGci..." http://localhost:8000/crawl +``` + +Using the Python SDK: +```python +from crawl4ai.docker_client import Crawl4aiDockerClient + +async with Crawl4aiDockerClient() as client: + # Authenticate first + await client.authenticate("user@example.com") + + # Now all requests will include the token automatically + result = await client.crawl(urls=["https://example.com"]) +``` + +#### Production Considerations 💡 +The default implementation uses a simple email verification. For production use, consider: +- Email verification via OTP/magic links +- OAuth2 integration +- Rate limiting token generation +- Token expiration and refresh mechanisms +- IP-based restrictions + +### Configuration Tips and Best Practices + +1. **Production Settings** 🏭 + + ```yaml + app: + reload: False # Disable reload in production + timeout_keep_alive: 120 # Lower timeout for better resource management + + rate_limiting: + storage_uri: "redis://redis:6379" # Use Redis for distributed rate limiting + default_limit: "50/minute" # More conservative rate limit + + security: + enabled: true # Enable all security features + trusted_hosts: ["your-domain.com"] # Restrict to your domain + ``` + +2. **Development Settings** 🛠️ + + ```yaml + app: + reload: True # Enable hot reloading + timeout_keep_alive: 300 # Longer timeout for debugging + + logging: + level: "DEBUG" # More verbose logging + ``` + +3. **High-Traffic Settings** 🚦 + + ```yaml + crawler: + memory_threshold_percent: 85.0 # More conservative memory limit + rate_limiter: + base_delay: [2.0, 4.0] # More aggressive rate limiting + ``` + +### Customizing Your Configuration + +#### Method 1: Pre-build Configuration + +```bash +# Copy and modify config before building +cd crawl4ai/deploy +vim custom-config.yml # Or use any editor + +# Build with custom config +docker build --platform=linux/amd64 --no-cache -t crawl4ai:latest . +``` + +#### Method 2: Build-time Configuration + +Use a custom config during build: + +```bash +# Build with custom config +docker build --platform=linux/amd64 --no-cache \ + --build-arg CONFIG_PATH=/path/to/custom-config.yml \ + -t crawl4ai:latest . +``` + +#### Method 3: Runtime Configuration +```bash +# Mount custom config at runtime +docker run -d -p 8000:8000 \ + -v $(pwd)/custom-config.yml:/app/config.yml \ + crawl4ai-server:prod +``` + +> 💡 Note: When using Method 2, `/path/to/custom-config.yml` is relative to deploy directory. +> 💡 Note: When using Method 3, ensure your custom config file has all required fields as the container will use this instead of the built-in config. + +### Configuration Recommendations + +1. **Security First** 🔒 + - Always enable security in production + - Use specific trusted_hosts instead of wildcards + - Set up proper rate limiting to protect your server + - Consider your environment before enabling HTTPS redirect + +2. **Resource Management** 💻 + - Adjust memory_threshold_percent based on available RAM + - Set timeouts according to your content size and network conditions + - Use Redis for rate limiting in multi-container setups + +3. **Monitoring** 📊 + - Enable Prometheus if you need metrics + - Set DEBUG logging in development, INFO in production + - Regular health check monitoring is crucial + +4. **Performance Tuning** ⚡ + - Start with conservative rate limiter delays + - Increase batch_process timeout for large content + - Adjust stream_init timeout based on initial response times + +## Getting Help + +We're here to help you succeed with Crawl4AI! Here's how to get support: + +- 📖 Check our [full documentation](https://docs.crawl4ai.com) +- 🐛 Found a bug? [Open an issue](https://github.com/unclecode/crawl4ai/issues) +- 💬 Join our [Discord community](https://discord.gg/crawl4ai) +- ⭐ Star us on GitHub to show support! + +## Summary + +In this guide, we've covered everything you need to get started with Crawl4AI's Docker deployment: +- Building and running the Docker container +- Configuring the environment +- Making API requests with proper typing +- Using the Python SDK +- Monitoring your deployment + +Remember, the examples in the `examples` folder are your friends - they show real-world usage patterns that you can adapt for your needs. + +Keep exploring, and don't hesitate to reach out if you need help! We're building something amazing together. 🚀 + +Happy crawling! 🕷️ \ No newline at end of file diff --git a/deploy/aws/docker/api.py b/deploy/aws/docker/api.py new file mode 100644 index 00000000..df3d5c49 --- /dev/null +++ b/deploy/aws/docker/api.py @@ -0,0 +1,442 @@ +import os +import json +import asyncio +from typing import List, Tuple + +import logging +from typing import Optional, AsyncGenerator +from urllib.parse import unquote +from fastapi import HTTPException, Request, status +from fastapi.background import BackgroundTasks +from fastapi.responses import JSONResponse +from redis import asyncio as aioredis + +from crawl4ai import ( + AsyncWebCrawler, + CrawlerRunConfig, + LLMExtractionStrategy, + CacheMode, + BrowserConfig, + MemoryAdaptiveDispatcher, + RateLimiter +) +from crawl4ai.utils import perform_completion_with_backoff +from crawl4ai.content_filter_strategy import ( + PruningContentFilter, + BM25ContentFilter, + LLMContentFilter +) +from crawl4ai.markdown_generation_strategy import DefaultMarkdownGenerator +from crawl4ai.content_scraping_strategy import LXMLWebScrapingStrategy + +from utils import ( + TaskStatus, + FilterType, + get_base_url, + is_task_id, + should_cleanup_task, + decode_redis_hash +) + +logger = logging.getLogger(__name__) + +async def handle_llm_qa( + url: str, + query: str, + config: dict +) -> str: + """Process QA using LLM with crawled content as context.""" + try: + # Extract base URL by finding last '?q=' occurrence + last_q_index = url.rfind('?q=') + if last_q_index != -1: + url = url[:last_q_index] + + # Get markdown content + async with AsyncWebCrawler() as crawler: + result = await crawler.arun(url) + if not result.success: + raise HTTPException( + status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, + detail=result.error_message + ) + content = result.markdown_v2.fit_markdown + + # Create prompt and get LLM response + prompt = f"""Use the following content as context to answer the question. + Content: + {content} + + Question: {query} + + Answer:""" + + response = perform_completion_with_backoff( + provider=config["llm"]["provider"], + prompt_with_variables=prompt, + api_token=os.environ.get(config["llm"].get("api_key_env", "")) + ) + + return response.choices[0].message.content + except Exception as e: + logger.error(f"QA processing error: {str(e)}", exc_info=True) + raise HTTPException( + status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, + detail=str(e) + ) + +async def process_llm_extraction( + redis: aioredis.Redis, + config: dict, + task_id: str, + url: str, + instruction: str, + schema: Optional[str] = None, + cache: str = "0" +) -> None: + """Process LLM extraction in background.""" + try: + # If config['llm'] has api_key then ignore the api_key_env + api_key = "" + if "api_key" in config["llm"]: + api_key = config["llm"]["api_key"] + else: + api_key = os.environ.get(config["llm"].get("api_key_env", None), "") + llm_strategy = LLMExtractionStrategy( + provider=config["llm"]["provider"], + api_token=api_key, + instruction=instruction, + schema=json.loads(schema) if schema else None, + ) + + cache_mode = CacheMode.ENABLED if cache == "1" else CacheMode.WRITE_ONLY + + async with AsyncWebCrawler() as crawler: + result = await crawler.arun( + url=url, + config=CrawlerRunConfig( + extraction_strategy=llm_strategy, + scraping_strategy=LXMLWebScrapingStrategy(), + cache_mode=cache_mode + ) + ) + + if not result.success: + await redis.hset(f"task:{task_id}", mapping={ + "status": TaskStatus.FAILED, + "error": result.error_message + }) + return + + try: + content = json.loads(result.extracted_content) + except json.JSONDecodeError: + content = result.extracted_content + await redis.hset(f"task:{task_id}", mapping={ + "status": TaskStatus.COMPLETED, + "result": json.dumps(content) + }) + + except Exception as e: + logger.error(f"LLM extraction error: {str(e)}", exc_info=True) + await redis.hset(f"task:{task_id}", mapping={ + "status": TaskStatus.FAILED, + "error": str(e) + }) + +async def handle_markdown_request( + url: str, + filter_type: FilterType, + query: Optional[str] = None, + cache: str = "0", + config: Optional[dict] = None +) -> str: + """Handle markdown generation requests.""" + try: + decoded_url = unquote(url) + if not decoded_url.startswith(('http://', 'https://')): + decoded_url = 'https://' + decoded_url + + if filter_type == FilterType.RAW: + md_generator = DefaultMarkdownGenerator() + else: + content_filter = { + FilterType.FIT: PruningContentFilter(), + FilterType.BM25: BM25ContentFilter(user_query=query or ""), + FilterType.LLM: LLMContentFilter( + provider=config["llm"]["provider"], + api_token=os.environ.get(config["llm"].get("api_key_env", None), ""), + instruction=query or "Extract main content" + ) + }[filter_type] + md_generator = DefaultMarkdownGenerator(content_filter=content_filter) + + cache_mode = CacheMode.ENABLED if cache == "1" else CacheMode.WRITE_ONLY + + async with AsyncWebCrawler() as crawler: + result = await crawler.arun( + url=decoded_url, + config=CrawlerRunConfig( + markdown_generator=md_generator, + scraping_strategy=LXMLWebScrapingStrategy(), + cache_mode=cache_mode + ) + ) + + if not result.success: + raise HTTPException( + status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, + detail=result.error_message + ) + + return (result.markdown_v2.raw_markdown + if filter_type == FilterType.RAW + else result.markdown_v2.fit_markdown) + + except Exception as e: + logger.error(f"Markdown error: {str(e)}", exc_info=True) + raise HTTPException( + status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, + detail=str(e) + ) + +async def handle_llm_request( + redis: aioredis.Redis, + background_tasks: BackgroundTasks, + request: Request, + input_path: str, + query: Optional[str] = None, + schema: Optional[str] = None, + cache: str = "0", + config: Optional[dict] = None +) -> JSONResponse: + """Handle LLM extraction requests.""" + base_url = get_base_url(request) + + try: + if is_task_id(input_path): + return await handle_task_status( + redis, input_path, base_url + ) + + if not query: + return JSONResponse({ + "message": "Please provide an instruction", + "_links": { + "example": { + "href": f"{base_url}/llm/{input_path}?q=Extract+main+content", + "title": "Try this example" + } + } + }) + + return await create_new_task( + redis, + background_tasks, + input_path, + query, + schema, + cache, + base_url, + config + ) + + except Exception as e: + logger.error(f"LLM endpoint error: {str(e)}", exc_info=True) + return JSONResponse({ + "error": str(e), + "_links": { + "retry": {"href": str(request.url)} + } + }, status_code=status.HTTP_500_INTERNAL_SERVER_ERROR) + +async def handle_task_status( + redis: aioredis.Redis, + task_id: str, + base_url: str +) -> JSONResponse: + """Handle task status check requests.""" + task = await redis.hgetall(f"task:{task_id}") + if not task: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail="Task not found" + ) + + task = decode_redis_hash(task) + response = create_task_response(task, task_id, base_url) + + if task["status"] in [TaskStatus.COMPLETED, TaskStatus.FAILED]: + if should_cleanup_task(task["created_at"]): + await redis.delete(f"task:{task_id}") + + return JSONResponse(response) + +async def create_new_task( + redis: aioredis.Redis, + background_tasks: BackgroundTasks, + input_path: str, + query: str, + schema: Optional[str], + cache: str, + base_url: str, + config: dict +) -> JSONResponse: + """Create and initialize a new task.""" + decoded_url = unquote(input_path) + if not decoded_url.startswith(('http://', 'https://')): + decoded_url = 'https://' + decoded_url + + from datetime import datetime + task_id = f"llm_{int(datetime.now().timestamp())}_{id(background_tasks)}" + + await redis.hset(f"task:{task_id}", mapping={ + "status": TaskStatus.PROCESSING, + "created_at": datetime.now().isoformat(), + "url": decoded_url + }) + + background_tasks.add_task( + process_llm_extraction, + redis, + config, + task_id, + decoded_url, + query, + schema, + cache + ) + + return JSONResponse({ + "task_id": task_id, + "status": TaskStatus.PROCESSING, + "url": decoded_url, + "_links": { + "self": {"href": f"{base_url}/llm/{task_id}"}, + "status": {"href": f"{base_url}/llm/{task_id}"} + } + }) + +def create_task_response(task: dict, task_id: str, base_url: str) -> dict: + """Create response for task status check.""" + response = { + "task_id": task_id, + "status": task["status"], + "created_at": task["created_at"], + "url": task["url"], + "_links": { + "self": {"href": f"{base_url}/llm/{task_id}"}, + "refresh": {"href": f"{base_url}/llm/{task_id}"} + } + } + + if task["status"] == TaskStatus.COMPLETED: + response["result"] = json.loads(task["result"]) + elif task["status"] == TaskStatus.FAILED: + response["error"] = task["error"] + + return response + +async def stream_results(crawler: AsyncWebCrawler, results_gen: AsyncGenerator) -> AsyncGenerator[bytes, None]: + """Stream results with heartbeats and completion markers.""" + import json + from utils import datetime_handler + + try: + async for result in results_gen: + try: + result_dict = result.model_dump() + logger.info(f"Streaming result for {result_dict.get('url', 'unknown')}") + data = json.dumps(result_dict, default=datetime_handler) + "\n" + yield data.encode('utf-8') + except Exception as e: + logger.error(f"Serialization error: {e}") + error_response = {"error": str(e), "url": getattr(result, 'url', 'unknown')} + yield (json.dumps(error_response) + "\n").encode('utf-8') + + yield json.dumps({"status": "completed"}).encode('utf-8') + + except asyncio.CancelledError: + logger.warning("Client disconnected during streaming") + finally: + try: + await crawler.close() + except Exception as e: + logger.error(f"Crawler cleanup error: {e}") + +async def handle_crawl_request( + urls: List[str], + browser_config: dict, + crawler_config: dict, + config: dict +) -> dict: + """Handle non-streaming crawl requests.""" + try: + browser_config = BrowserConfig.load(browser_config) + crawler_config = CrawlerRunConfig.load(crawler_config) + + dispatcher = MemoryAdaptiveDispatcher( + memory_threshold_percent=config["crawler"]["memory_threshold_percent"], + rate_limiter=RateLimiter( + base_delay=tuple(config["crawler"]["rate_limiter"]["base_delay"]) + ) + ) + + async with AsyncWebCrawler(config=browser_config) as crawler: + results = await crawler.arun_many( + urls=urls, + config=crawler_config, + dispatcher=dispatcher + ) + + return { + "success": True, + "results": [result.model_dump() for result in results] + } + + except Exception as e: + logger.error(f"Crawl error: {str(e)}", exc_info=True) + raise HTTPException( + status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, + detail=str(e) + ) + +async def handle_stream_crawl_request( + urls: List[str], + browser_config: dict, + crawler_config: dict, + config: dict +) -> Tuple[AsyncWebCrawler, AsyncGenerator]: + """Handle streaming crawl requests.""" + try: + browser_config = BrowserConfig.load(browser_config) + browser_config.verbose = True + crawler_config = CrawlerRunConfig.load(crawler_config) + crawler_config.scraping_strategy = LXMLWebScrapingStrategy() + + dispatcher = MemoryAdaptiveDispatcher( + memory_threshold_percent=config["crawler"]["memory_threshold_percent"], + rate_limiter=RateLimiter( + base_delay=tuple(config["crawler"]["rate_limiter"]["base_delay"]) + ) + ) + + crawler = AsyncWebCrawler(config=browser_config) + await crawler.start() + + results_gen = await crawler.arun_many( + urls=urls, + config=crawler_config, + dispatcher=dispatcher + ) + + return crawler, results_gen + + except Exception as e: + if 'crawler' in locals(): + await crawler.close() + logger.error(f"Stream crawl error: {str(e)}", exc_info=True) + raise HTTPException( + status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, + detail=str(e) + ) \ No newline at end of file diff --git a/deploy/aws/docker/auth.py b/deploy/aws/docker/auth.py new file mode 100644 index 00000000..8851bd36 --- /dev/null +++ b/deploy/aws/docker/auth.py @@ -0,0 +1,46 @@ +import os +from datetime import datetime, timedelta, timezone +from typing import Dict, Optional +from jwt import JWT, jwk_from_dict +from jwt.utils import get_int_from_datetime +from fastapi import Depends, HTTPException +from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials +from pydantic import EmailStr +from pydantic.main import BaseModel +import base64 + +instance = JWT() +security = HTTPBearer() +SECRET_KEY = os.environ.get("SECRET_KEY", "mysecret") +ACCESS_TOKEN_EXPIRE_MINUTES = 60 + +def get_jwk_from_secret(secret: str): + """Convert a secret string into a JWK object.""" + secret_bytes = secret.encode('utf-8') + b64_secret = base64.urlsafe_b64encode(secret_bytes).rstrip(b'=').decode('utf-8') + return jwk_from_dict({"kty": "oct", "k": b64_secret}) + +def create_access_token(data: dict, expires_delta: Optional[timedelta] = None) -> str: + """Create a JWT access token with an expiration.""" + to_encode = data.copy() + expire = datetime.now(timezone.utc) + (expires_delta or timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES)) + to_encode.update({"exp": get_int_from_datetime(expire)}) + signing_key = get_jwk_from_secret(SECRET_KEY) + return instance.encode(to_encode, signing_key, alg='HS256') + +def verify_token(credentials: HTTPAuthorizationCredentials = Depends(security)) -> Dict: + """Verify the JWT token from the Authorization header.""" + token = credentials.credentials + verifying_key = get_jwk_from_secret(SECRET_KEY) + try: + payload = instance.decode(token, verifying_key, do_time_check=True, algorithms='HS256') + return payload + except Exception: + raise HTTPException(status_code=401, detail="Invalid or expired token") + +def get_token_dependency(config: Dict): + """Return the token dependency if JWT is enabled, else None.""" + return verify_token if config.get("security", {}).get("jwt_enabled", False) else None + +class TokenRequest(BaseModel): + email: EmailStr \ No newline at end of file diff --git a/deploy/aws/docker/config.yml b/deploy/aws/docker/config.yml new file mode 100644 index 00000000..fc118bf4 --- /dev/null +++ b/deploy/aws/docker/config.yml @@ -0,0 +1,71 @@ +# Application Configuration +app: + title: "Crawl4AI API" + version: "1.0.0" + host: "0.0.0.0" + port: 8000 + reload: True + timeout_keep_alive: 300 + +# Default LLM Configuration +llm: + provider: "openai/gpt-4o-mini" + api_key_env: "OPENAI_API_KEY" + # api_key: sk-... # If you pass the API key directly then api_key_env will be ignored + +# Redis Configuration +redis: + host: "localhost" + port: 6379 + db: 0 + password: "" + ssl: False + ssl_cert_reqs: None + ssl_ca_certs: None + ssl_certfile: None + ssl_keyfile: None + ssl_cert_reqs: None + ssl_ca_certs: None + ssl_certfile: None + ssl_keyfile: None + +# Rate Limiting Configuration +rate_limiting: + enabled: True + default_limit: "1000/minute" + trusted_proxies: [] + storage_uri: "memory://" # Use "redis://localhost:6379" for production + +# Security Configuration +security: + enabled: true + jwt_enabled: true + https_redirect: false + trusted_hosts: ["*"] + headers: + x_content_type_options: "nosniff" + x_frame_options: "DENY" + content_security_policy: "default-src 'self'" + strict_transport_security: "max-age=63072000; includeSubDomains" + +# Crawler Configuration +crawler: + memory_threshold_percent: 95.0 + rate_limiter: + base_delay: [1.0, 2.0] + timeouts: + stream_init: 30.0 # Timeout for stream initialization + batch_process: 300.0 # Timeout for batch processing + +# Logging Configuration +logging: + level: "INFO" + format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s" + +# Observability Configuration +observability: + prometheus: + enabled: True + endpoint: "/metrics" + health_check: + endpoint: "/health" \ No newline at end of file diff --git a/deploy/aws/docker/requirements.txt b/deploy/aws/docker/requirements.txt new file mode 100644 index 00000000..b7e6d8ad --- /dev/null +++ b/deploy/aws/docker/requirements.txt @@ -0,0 +1,10 @@ +crawl4ai +fastapi +uvicorn +gunicorn>=23.0.0 +slowapi>=0.1.9 +prometheus-fastapi-instrumentator>=7.0.2 +redis>=5.2.1 +jwt>=1.3.1 +dnspython>=2.7.0 +email-validator>=2.2.0 \ No newline at end of file diff --git a/deploy/aws/docker/server.py b/deploy/aws/docker/server.py new file mode 100644 index 00000000..edb55130 --- /dev/null +++ b/deploy/aws/docker/server.py @@ -0,0 +1,181 @@ +import os +import sys +import time +from typing import List, Optional, Dict +from fastapi import FastAPI, HTTPException, Request, Query, Path, Depends +from fastapi.responses import StreamingResponse, RedirectResponse, PlainTextResponse, JSONResponse +from fastapi.middleware.httpsredirect import HTTPSRedirectMiddleware +from fastapi.middleware.trustedhost import TrustedHostMiddleware +from pydantic import BaseModel, Field +from slowapi import Limiter +from slowapi.util import get_remote_address +from prometheus_fastapi_instrumentator import Instrumentator +from redis import asyncio as aioredis + +sys.path.append(os.path.dirname(os.path.realpath(__file__))) +from utils import FilterType, load_config, setup_logging, verify_email_domain +from api import ( + handle_markdown_request, + handle_llm_qa, + handle_stream_crawl_request, + handle_crawl_request, + stream_results +) +from auth import create_access_token, get_token_dependency, TokenRequest # Import from auth.py + +__version__ = "0.2.6" + +class CrawlRequest(BaseModel): + urls: List[str] = Field(min_length=1, max_length=100) + browser_config: Optional[Dict] = Field(default_factory=dict) + crawler_config: Optional[Dict] = Field(default_factory=dict) + +# Load configuration and setup +config = load_config() +setup_logging(config) + +# Initialize Redis +redis = aioredis.from_url(config["redis"].get("uri", "redis://localhost")) + +# Initialize rate limiter +limiter = Limiter( + key_func=get_remote_address, + default_limits=[config["rate_limiting"]["default_limit"]], + storage_uri=config["rate_limiting"]["storage_uri"] +) + +app = FastAPI( + title=config["app"]["title"], + version=config["app"]["version"] +) + +# Configure middleware +def setup_security_middleware(app, config): + sec_config = config.get("security", {}) + if sec_config.get("enabled", False): + if sec_config.get("https_redirect", False): + app.add_middleware(HTTPSRedirectMiddleware) + if sec_config.get("trusted_hosts", []) != ["*"]: + app.add_middleware(TrustedHostMiddleware, allowed_hosts=sec_config["trusted_hosts"]) + +setup_security_middleware(app, config) + +# Prometheus instrumentation +if config["observability"]["prometheus"]["enabled"]: + Instrumentator().instrument(app).expose(app) + +# Get token dependency based on config +token_dependency = get_token_dependency(config) + +# Middleware for security headers +@app.middleware("http") +async def add_security_headers(request: Request, call_next): + response = await call_next(request) + if config["security"]["enabled"]: + response.headers.update(config["security"]["headers"]) + return response + +# Token endpoint (always available, but usage depends on config) +@app.post("/token") +async def get_token(request_data: TokenRequest): + if not verify_email_domain(request_data.email): + raise HTTPException(status_code=400, detail="Invalid email domain") + token = create_access_token({"sub": request_data.email}) + return {"email": request_data.email, "access_token": token, "token_type": "bearer"} + +# Endpoints with conditional auth +@app.get("/md/{url:path}") +@limiter.limit(config["rate_limiting"]["default_limit"]) +async def get_markdown( + request: Request, + url: str, + f: FilterType = FilterType.FIT, + q: Optional[str] = None, + c: Optional[str] = "0", + token_data: Optional[Dict] = Depends(token_dependency) +): + result = await handle_markdown_request(url, f, q, c, config) + return PlainTextResponse(result) + +@app.get("/llm/{url:path}", description="URL should be without http/https prefix") +async def llm_endpoint( + request: Request, + url: str = Path(...), + q: Optional[str] = Query(None), + token_data: Optional[Dict] = Depends(token_dependency) +): + if not q: + raise HTTPException(status_code=400, detail="Query parameter 'q' is required") + if not url.startswith(('http://', 'https://')): + url = 'https://' + url + try: + answer = await handle_llm_qa(url, q, config) + return JSONResponse({"answer": answer}) + except Exception as e: + raise HTTPException(status_code=500, detail=str(e)) + +@app.get("/schema") +async def get_schema(): + from crawl4ai import BrowserConfig, CrawlerRunConfig + return {"browser": BrowserConfig().dump(), "crawler": CrawlerRunConfig().dump()} + +@app.get(config["observability"]["health_check"]["endpoint"]) +async def health(): + return {"status": "ok", "timestamp": time.time(), "version": __version__} + +@app.get(config["observability"]["prometheus"]["endpoint"]) +async def metrics(): + return RedirectResponse(url=config["observability"]["prometheus"]["endpoint"]) + +@app.post("/crawl") +@limiter.limit(config["rate_limiting"]["default_limit"]) +async def crawl( + request: Request, + crawl_request: CrawlRequest, + token_data: Optional[Dict] = Depends(token_dependency) +): + if not crawl_request.urls: + raise HTTPException(status_code=400, detail="At least one URL required") + + results = await handle_crawl_request( + urls=crawl_request.urls, + browser_config=crawl_request.browser_config, + crawler_config=crawl_request.crawler_config, + config=config + ) + + return JSONResponse(results) + + +@app.post("/crawl/stream") +@limiter.limit(config["rate_limiting"]["default_limit"]) +async def crawl_stream( + request: Request, + crawl_request: CrawlRequest, + token_data: Optional[Dict] = Depends(token_dependency) +): + if not crawl_request.urls: + raise HTTPException(status_code=400, detail="At least one URL required") + + crawler, results_gen = await handle_stream_crawl_request( + urls=crawl_request.urls, + browser_config=crawl_request.browser_config, + crawler_config=crawl_request.crawler_config, + config=config + ) + + return StreamingResponse( + stream_results(crawler, results_gen), + media_type='application/x-ndjson', + headers={'Cache-Control': 'no-cache', 'Connection': 'keep-alive', 'X-Stream-Status': 'active'} + ) + +if __name__ == "__main__": + import uvicorn + uvicorn.run( + "server:app", + host=config["app"]["host"], + port=config["app"]["port"], + reload=config["app"]["reload"], + timeout_keep_alive=config["app"]["timeout_keep_alive"] + ) \ No newline at end of file diff --git a/deploy/aws/docker/supervisord.conf b/deploy/aws/docker/supervisord.conf new file mode 100644 index 00000000..1274f2c3 --- /dev/null +++ b/deploy/aws/docker/supervisord.conf @@ -0,0 +1,12 @@ +[supervisord] +nodaemon=true + +[program:redis] +command=redis-server +autorestart=true +priority=10 + +[program:gunicorn] +command=gunicorn --bind 0.0.0.0:8000 --workers 4 --threads 2 --timeout 300 --graceful-timeout 60 --keep-alive 65 --log-level debug --worker-class uvicorn.workers.UvicornWorker --max-requests 1000 --max-requests-jitter 50 server:app +autorestart=true +priority=20 \ No newline at end of file diff --git a/deploy/aws/docker/utils.py b/deploy/aws/docker/utils.py new file mode 100644 index 00000000..ff0aa2df --- /dev/null +++ b/deploy/aws/docker/utils.py @@ -0,0 +1,66 @@ +import dns.resolver +import logging +import yaml +from datetime import datetime +from enum import Enum +from pathlib import Path +from fastapi import Request +from typing import Dict, Optional + +class TaskStatus(str, Enum): + PROCESSING = "processing" + FAILED = "failed" + COMPLETED = "completed" + +class FilterType(str, Enum): + RAW = "raw" + FIT = "fit" + BM25 = "bm25" + LLM = "llm" + +def load_config() -> Dict: + """Load and return application configuration.""" + config_path = Path(__file__).parent / "config.yml" + with open(config_path, "r") as config_file: + return yaml.safe_load(config_file) + +def setup_logging(config: Dict) -> None: + """Configure application logging.""" + logging.basicConfig( + level=config["logging"]["level"], + format=config["logging"]["format"] + ) + +def get_base_url(request: Request) -> str: + """Get base URL including scheme and host.""" + return f"{request.url.scheme}://{request.url.netloc}" + +def is_task_id(value: str) -> bool: + """Check if the value matches task ID pattern.""" + return value.startswith("llm_") and "_" in value + +def datetime_handler(obj: any) -> Optional[str]: + """Handle datetime serialization for JSON.""" + if hasattr(obj, 'isoformat'): + return obj.isoformat() + raise TypeError(f"Object of type {type(obj)} is not JSON serializable") + +def should_cleanup_task(created_at: str) -> bool: + """Check if task should be cleaned up based on creation time.""" + created = datetime.fromisoformat(created_at) + return (datetime.now() - created).total_seconds() > 3600 + +def decode_redis_hash(hash_data: Dict[bytes, bytes]) -> Dict[str, str]: + """Decode Redis hash data from bytes to strings.""" + return {k.decode('utf-8'): v.decode('utf-8') for k, v in hash_data.items()} + + + +def verify_email_domain(email: str) -> bool: + try: + domain = email.split('@')[1] + # Try to resolve MX records for the domain. + records = dns.resolver.resolve(domain, 'MX') + return True if records else False + except Exception as e: + return False \ No newline at end of file diff --git a/deploy/aws/howto.md b/deploy/aws/howto.md new file mode 100644 index 00000000..b8912b12 --- /dev/null +++ b/deploy/aws/howto.md @@ -0,0 +1,77 @@ +# Crawl4AI API Quickstart + +This document shows how to generate an API token and use it to call the `/crawl` and `/md` endpoints. + +--- + +## 1. Crawl Example + +Send a POST request to `/crawl` with the following JSON payload: + +```json +{ + "urls": ["https://example.com"], + "browser_config": { "headless": true, "verbose": true }, + "crawler_config": { "stream": false, "cache_mode": "enabled" } +} +``` + +**cURL Command:** + +```bash +curl -X POST "https://api.crawl4ai.com/crawl" \ + -H "Authorization: Bearer YOUR_API_TOKEN" \ + -H "Content-Type: application/json" \ + -d '{ + "urls": ["https://example.com"], + "browser_config": {"headless": true, "verbose": true}, + "crawler_config": {"stream": false, "cache_mode": "enabled"} + }' +``` + +--- + +## 2. Markdown Retrieval Example + +To retrieve markdown from a given URL (e.g., `https://example.com`), use: + +```bash +curl -X GET "https://api.crawl4ai.com/md/example.com" \ + -H "Authorization: Bearer YOUR_API_TOKEN" +``` + +--- + +## 3. Python Code Example (Using `requests`) + +Below is a sample Python script that demonstrates using the `requests` library to call the API endpoints: + +```python +import requests + +BASE_URL = "https://api.crawl4ai.com" +TOKEN = "YOUR_API_TOKEN" # Replace with your actual token + +headers = { + "Authorization": f"Bearer {TOKEN}", + "Content-Type": "application/json" +} + +# Crawl endpoint example +crawl_payload = { + "urls": ["https://example.com"], + "browser_config": {"headless": True, "verbose": True}, + "crawler_config": {"stream": False, "cache_mode": "enabled"} +} + +crawl_response = requests.post(f"{BASE_URL}/crawl", json=crawl_payload, headers=headers) +print("Crawl Response:", crawl_response.json()) + +# /md endpoint example +md_response = requests.get(f"{BASE_URL}/md/example.com", headers=headers) +print("Markdown Content:", md_response.text) +``` + +--- + +Happy crawling! diff --git a/deploy/aws/nginx/Dockerfile b/deploy/aws/nginx/Dockerfile new file mode 100644 index 00000000..67fb0773 --- /dev/null +++ b/deploy/aws/nginx/Dockerfile @@ -0,0 +1,2 @@ +FROM nginx:alpine +COPY nginx.conf /etc/nginx/conf.d/default.conf diff --git a/deploy/aws/nginx/nginx.conf b/deploy/aws/nginx/nginx.conf new file mode 100644 index 00000000..73f24f17 --- /dev/null +++ b/deploy/aws/nginx/nginx.conf @@ -0,0 +1,55 @@ +server { + listen 80; + server_name api.crawl4ai.com; + + # Main logging settings + error_log /var/log/nginx/error.log debug; + access_log /var/log/nginx/access.log combined buffer=512k flush=1m; + + # Timeout and buffering settings + proxy_connect_timeout 300; + proxy_send_timeout 300; + proxy_read_timeout 300; + send_timeout 300; + proxy_buffer_size 128k; + proxy_buffers 4 256k; + proxy_busy_buffers_size 256k; + + # Health check location + location /health { + proxy_pass http://127.0.0.1:8000/health; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } + + # Main proxy for application endpoints + location / { + proxy_pass http://127.0.0.1:8000; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + add_header X-Debug-Info $request_uri; + proxy_request_buffering off; + proxy_http_version 1.1; + proxy_set_header Connection ""; + proxy_buffering off; + } + + # New endpoint: serve Nginx error log + location /nginx/error { + # Using "alias" to serve the error log file + alias /var/log/nginx/error.log; + # Optionally, you might restrict access with "allow" and "deny" directives. + } + + # New endpoint: serve Nginx access log + location /nginx/access { + alias /var/log/nginx/access.log; + } + + client_max_body_size 10M; + client_body_buffer_size 128k; +} diff --git a/deploy/aws/version.txt b/deploy/aws/version.txt new file mode 100644 index 00000000..9ff151c5 --- /dev/null +++ b/deploy/aws/version.txt @@ -0,0 +1 @@ +v0.1.0 \ No newline at end of file diff --git a/deploy/gcloud-function/Dockerfile b/deploy/gcloud-function/Dockerfile new file mode 100644 index 00000000..36e28df8 --- /dev/null +++ b/deploy/gcloud-function/Dockerfile @@ -0,0 +1,63 @@ +FROM --platform=linux/amd64 python:3.10-slim + +# Install system dependencies required for Chromium and Git +RUN apt-get update && apt-get install -y \ + python3-dev \ + pkg-config \ + libjpeg-dev \ + gcc \ + build-essential \ + libnss3 \ + libnspr4 \ + libatk1.0-0 \ + libatk-bridge2.0-0 \ + libcups2 \ + libdrm2 \ + libxkbcommon0 \ + libxcomposite1 \ + libxdamage1 \ + libxfixes3 \ + libxrandr2 \ + libgbm1 \ + libasound2 \ + libpango-1.0-0 \ + libcairo2 \ + procps \ + git \ + socat \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /app + +# Make a directory for crawl4ai call it crawl4ai_repo +# RUN mkdir crawl4ai_repo + +# # Clone Crawl4ai from the next branch and install it +# RUN git clone --branch next https://github.com/unclecode/crawl4ai.git ./crawl4ai_repo \ +# && cd crawl4ai_repo \ +# && pip install . \ +# && cd .. \ +# && rm -rf crawl4ai_repo + +RUN python3 -m venv /app/venv +ENV PATH="/app/venv/bin:$PATH" +# RUN pip install git+https://github.com/unclecode/crawl4ai.git@next + +# Copy requirements and install remaining dependencies +COPY requirements.txt . +RUN pip install -r requirements.txt + +# Copy application files +COPY resources /app/resources +COPY main.py . +COPY start.sh . + +# Set permissions for Chrome binary and start script +RUN chmod +x /app/resources/chrome/headless_shell && \ + chmod -R 755 /app/resources/chrome && \ + chmod +x start.sh + +ENV FUNCTION_TARGET=crawl +EXPOSE 8080 9223 + +CMD ["/app/start.sh"] \ No newline at end of file diff --git a/deploy/gcloud-function/config.yml b/deploy/gcloud-function/config.yml new file mode 100644 index 00000000..3c49d386 --- /dev/null +++ b/deploy/gcloud-function/config.yml @@ -0,0 +1,8 @@ +project_id: PROJECT_ID +region: REGION_NAME +artifact_repo: ARTIFACT_REPO_NAME +function_name: FUNCTION_NAME +memory: "2048MB" +timeout: "540s" +local_image: "gcr.io/ARTIFACT_REPO_NAME/crawl4ai:latest" +test_query_url: "https://example.com" diff --git a/deploy/gcloud-function/deploy.py b/deploy/gcloud-function/deploy.py new file mode 100644 index 00000000..4cd6e5b0 --- /dev/null +++ b/deploy/gcloud-function/deploy.py @@ -0,0 +1,187 @@ +#!/usr/bin/env python3 +import argparse +import subprocess +import sys +import yaml +import requests + +def run_command(cmd, explanation, require_confirm=True, allow_already_exists=False): + print("\n=== {} ===".format(explanation)) + if require_confirm: + input("Press Enter to run: [{}]\n".format(cmd)) + print("Running: {}".format(cmd)) + result = subprocess.run(cmd, shell=True, capture_output=True, text=True) + if result.returncode != 0: + if allow_already_exists and "ALREADY_EXISTS" in result.stderr: + print("Repository already exists, skipping creation.") + return "" + print("Error:\n{}".format(result.stderr)) + sys.exit(1) + out = result.stdout.strip() + if out: + print("Output:\n{}".format(out)) + return out + +def load_config(): + try: + with open("config.yml", "r") as f: + config = yaml.safe_load(f) + except Exception as e: + print("Failed to load config.yml: {}".format(e)) + sys.exit(1) + required = ["project_id", "region", "artifact_repo", "function_name", "local_image"] + for key in required: + if key not in config or not config[key]: + print("Missing required config parameter: {}".format(key)) + sys.exit(1) + return config + +def deploy_function(config): + project_id = config["project_id"] + region = config["region"] + artifact_repo = config["artifact_repo"] + function_name = config["function_name"] + memory = config.get("memory", "2048MB") + timeout = config.get("timeout", "540s") + local_image = config["local_image"] + test_query_url = config.get("test_query_url", "https://example.com") + + # Repository image format: "-docker.pkg.dev///:latest" + repo_image = f"{region}-docker.pkg.dev/{project_id}/{artifact_repo}/{function_name}:latest" + + # 1. Create Artifact Registry repository (skip if exists) + cmd = f"gcloud artifacts repositories create {artifact_repo} --repository-format=docker --location={region} --project={project_id}" + run_command(cmd, "Creating Artifact Registry repository (if it doesn't exist)", allow_already_exists=True) + + # 2. Tag the local Docker image with the repository image name + cmd = f"docker tag {local_image} {repo_image}" + run_command(cmd, "Tagging Docker image for Artifact Registry") + + # 3. Authenticate Docker to Artifact Registry + cmd = f"gcloud auth configure-docker {region}-docker.pkg.dev" + run_command(cmd, "Authenticating Docker to Artifact Registry") + + # 4. Push the tagged Docker image to Artifact Registry + cmd = f"docker push {repo_image}" + run_command(cmd, "Pushing Docker image to Artifact Registry") + + # 5. Deploy the Cloud Function using the custom container + cmd = ( + f"gcloud beta functions deploy {function_name} " + f"--gen2 " + f"--runtime=python310 " + f"--entry-point=crawl " + f"--region={region} " + f"--docker-repository={region}-docker.pkg.dev/{project_id}/{artifact_repo} " + f"--trigger-http " + f"--memory={memory} " + f"--timeout={timeout} " + f"--project={project_id}" + ) + run_command(cmd, "Deploying Cloud Function using custom container") + + # 6. Set the Cloud Function to allow public (unauthenticated) invocations + cmd = ( + f"gcloud functions add-iam-policy-binding {function_name} " + f"--region={region} " + f"--member='allUsers' " + f"--role='roles/cloudfunctions.invoker' " + f"--project={project_id}" + f"--quiet" + ) + run_command(cmd, "Setting Cloud Function IAM to allow public invocations") + + # 7. Retrieve the deployed Cloud Function URL + cmd = ( + f"gcloud functions describe {function_name} " + f"--region={region} " + f"--project={project_id} " + f"--format='value(serviceConfig.uri)'" + ) + deployed_url = run_command(cmd, "Extracting deployed Cloud Function URL", require_confirm=False) + print("\nDeployed URL: {}\n".format(deployed_url)) + + # 8. Test the deployed function + test_url = f"{deployed_url}?url={test_query_url}" + print("Testing function with: {}".format(test_url)) + try: + response = requests.get(test_url) + print("Response status: {}".format(response.status_code)) + print("Response body:\n{}".format(response.text)) + if response.status_code == 200: + print("Test successful!") + else: + print("Non-200 response; check function logs.") + except Exception as e: + print("Test request error: {}".format(e)) + sys.exit(1) + + # 9. Final usage help + print("\nDeployment complete!") + print("Invoke your function with:") + print(f"curl '{deployed_url}?url={test_query_url}'") + print("For further instructions, refer to your documentation.") + +def delete_function(config): + project_id = config["project_id"] + region = config["region"] + function_name = config["function_name"] + cmd = f"gcloud functions delete {function_name} --region={region} --project={project_id} --quiet" + run_command(cmd, "Deleting Cloud Function") + +def describe_function(config): + project_id = config["project_id"] + region = config["region"] + function_name = config["function_name"] + cmd = ( + f"gcloud functions describe {function_name} " + f"--region={region} " + f"--project={project_id} " + f"--format='value(serviceConfig.uri)'" + ) + deployed_url = run_command(cmd, "Describing Cloud Function to extract URL", require_confirm=False) + print("\nCloud Function URL: {}\n".format(deployed_url)) + +def clear_all(config): + print("\n=== CLEAR ALL RESOURCES ===") + project_id = config["project_id"] + region = config["region"] + artifact_repo = config["artifact_repo"] + + confirm = input("WARNING: This will DELETE the Cloud Function and the Artifact Registry repository. Are you sure? (y/N): ") + if confirm.lower() != "y": + print("Aborting clear operation.") + sys.exit(0) + + # Delete the Cloud Function + delete_function(config) + # Delete the Artifact Registry repository + cmd = f"gcloud artifacts repositories delete {artifact_repo} --location={region} --project={project_id} --quiet" + run_command(cmd, "Deleting Artifact Registry repository", require_confirm=False) + print("All resources cleared.") + +def main(): + parser = argparse.ArgumentParser(description="Deploy, delete, describe, or clear Cloud Function resources using config.yml") + subparsers = parser.add_subparsers(dest="command", required=True) + + subparsers.add_parser("deploy", help="Deploy the Cloud Function") + subparsers.add_parser("delete", help="Delete the deployed Cloud Function") + subparsers.add_parser("describe", help="Describe the Cloud Function and return its URL") + subparsers.add_parser("clear", help="Delete the Cloud Function and Artifact Registry repository") + + args = parser.parse_args() + config = load_config() + + if args.command == "deploy": + deploy_function(config) + elif args.command == "delete": + delete_function(config) + elif args.command == "describe": + describe_function(config) + elif args.command == "clear": + clear_all(config) + else: + parser.print_help() + +if __name__ == "__main__": + main() diff --git a/deploy/gcloud-function/guide.md b/deploy/gcloud-function/guide.md new file mode 100644 index 00000000..e72ee567 --- /dev/null +++ b/deploy/gcloud-function/guide.md @@ -0,0 +1,204 @@ +# Deploying Crawl4ai on Google Cloud Functions + +This guide explains how to deploy **Crawl4ai**—an open‑source web crawler library—on Google Cloud Functions Gen2 using a custom container. We assume your project folder already includes: + +- **Dockerfile:** Builds your container image (which installs Crawl4ai from its Git repository). +- **start.sh:** Activates your virtual environment and starts the function (using the Functions Framework). +- **main.py:** Contains your function logic with the entry point `crawl` (and imports Crawl4ai). + +The guide is divided into two parts: +1. Manual deployment steps (using CLI commands) +2. Automated deployment using a Python script (`deploy.py`) + +--- + +## Part 1: Manual Deployment Process + +### Prerequisites + +- **Google Cloud Project:** Ensure your project is active and billing is enabled. +- **Google Cloud CLI & Docker:** Installed and configured on your local machine. +- **Permissions:** You must have rights to create Cloud Functions and Artifact Registry repositories. +- **Files:** Your Dockerfile, start.sh, and main.py should be in the same directory. + +### Step 1: Build Your Docker Image + +Your Dockerfile packages Crawl4ai along with all its dependencies. Build your image with: + +```bash +docker build -t gcr.io//:latest . +``` + +Replace `` with your Google Cloud project ID and `` with your chosen function name (for example, `crawl4ai-t1`). + +### Step 2: Create an Artifact Registry Repository + +Cloud Functions Gen2 requires your custom container image to reside in an Artifact Registry repository. Create one by running: + +```bash +gcloud artifacts repositories create \ + --repository-format=docker \ + --location= \ + --project= +``` + +Replace `` (for example, `crawl4ai`) and `` (for example, `asia-east1`). +> **Note:** If you receive an `ALREADY_EXISTS` error, the repository is already created; simply proceed to the next step. + +### Step 3: Tag Your Docker Image + +Tag your locally built Docker image so it matches the Artifact Registry format: + +```bash +docker tag gcr.io//:latest -docker.pkg.dev///:latest +``` + +This step “renames” the image so you can push it to your repository. + +### Step 4: Authenticate Docker to Artifact Registry + +Configure Docker authentication to the Artifact Registry: + +```bash +gcloud auth configure-docker -docker.pkg.dev +``` + +This ensures Docker can securely push images to your registry using your Cloud credentials. + +### Step 5: Push the Docker Image + +Push the tagged image to Artifact Registry: + +```bash +docker push -docker.pkg.dev///:latest +``` + +Once complete, your container image (with Crawl4ai installed) is hosted in Artifact Registry. + +### Step 6: Deploy the Cloud Function + +Deploy your function using the custom container image. Run: + +```bash +gcloud beta functions deploy \ + --gen2 \ + --region= \ + --docker-repository=-docker.pkg.dev// \ + --trigger-http \ + --memory=2048MB \ + --timeout=540s \ + --project= +``` + +This command tells Cloud Functions Gen2 to pull your container image from Artifact Registry and deploy it. Make sure your main.py defines the `crawl` entry point. + +### Step 7: Make the Function Public + +To allow external (unauthenticated) access, update the function’s IAM policy: + +```bash +gcloud functions add-iam-policy-binding \ + --region= \ + --member="allUsers" \ + --role="roles/cloudfunctions.invoker" \ + --project= \ + --quiet +``` + +Using the `--quiet` flag ensures the command runs non‑interactively so the policy is applied immediately. + +### Step 8: Retrieve and Test Your Function URL + +Get the URL for your deployed function: + +```bash +gcloud functions describe \ + --region= \ + --project= \ + --format='value(serviceConfig.uri)' +``` + +Test your deployment with a sample GET request (using curl or your browser): + +```bash +curl "?url=https://example.com" +``` + +Replace `` with the output URL from the previous command. A successful test (HTTP status 200) means Crawl4ai is running on Cloud Functions. + +--- + +## Part 2: Automated Deployment with deploy.py + +For a more streamlined process, use the provided `deploy.py` script. This Python script automates the manual steps, prompting you to confirm key actions and providing detailed logs throughout the process. + +### What deploy.py Does: + +- **Reads Parameters:** It loads a `config.yml` file containing all necessary parameters such as `project_id`, `region`, `artifact_repo`, `function_name`, `local_image`, etc. +- **Creates/Skips Repository:** It creates the Artifact Registry repository (or skips if it already exists). +- **Tags & Pushes:** It tags your local Docker image and pushes it to the Artifact Registry. +- **Deploys the Function:** It deploys the Cloud Function with your custom container. +- **Updates IAM:** It sets the IAM policy to allow public access (using the `--quiet` flag). +- **Tests the Deployment:** It extracts the deployed URL and performs a test request. +- **Additional Commands:** You can also use subcommands in the script to delete or describe the deployed function, or even clear all resources. + +### Example config.yml + +Create a `config.yml` file in the same folder as your Dockerfile. An example configuration: + +```yaml +project_id: your-project-id +region: asia-east1 +artifact_repo: crawl4ai +function_name: crawl4ai-t1 +memory: "2048MB" +timeout: "540s" +local_image: "gcr.io/your-project-id/crawl4ai-t1:latest" +test_query_url: "https://example.com" +``` + +### How to Use deploy.py + +- **Deploy the Function:** + + ```bash + python deploy.py deploy + ``` + + The script will guide you through each step, display the output, and ask for confirmation before executing critical commands. + +- **Describe the Function:** + + If you forget the function URL and want to retrieve it later: + + ```bash + python deploy.py describe + ``` + +- **Delete the Function:** + + To remove just the Cloud Function: + + ```bash + python deploy.py delete + ``` + +- **Clear All Resources:** + + To delete both the Cloud Function and the Artifact Registry repository: + + ```bash + python deploy.py clear + ``` + +--- + +## Conclusion + +This guide has walked you through two deployment methods for Crawl4ai on Google Cloud Functions Gen2: + +1. **Manual Deployment:** Building your Docker image, pushing it to Artifact Registry, deploying the Cloud Function, and setting up IAM. +2. **Automated Deployment:** Using `deploy.py` with a configuration file to handle the entire process interactively. + +By following these instructions, you can deploy, test, and manage your Crawl4ai-based Cloud Function with ease. Enjoy using Crawl4ai in your cloud environment! + diff --git a/deploy/gcloud-function/main.py b/deploy/gcloud-function/main.py new file mode 100644 index 00000000..7660fcb9 --- /dev/null +++ b/deploy/gcloud-function/main.py @@ -0,0 +1,158 @@ +# Cleanup Chrome process on module unload +import atexit +import asyncio +import logging +import functions_framework +from flask import jsonify, Request +import os +import sys +import time +import subprocess +import signal +import requests + +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger(__name__) + +logger.info(f"Python version: {sys.version}") +logger.info(f"Python path: {sys.path}") + +# Try to find where crawl4ai is coming from +try: + import crawl4ai + logger.info(f"Crawl4AI module location: {crawl4ai.__file__}") + logger.info(f"Contents of crawl4ai: {dir(crawl4ai)}") +except ImportError: + logger.error("Crawl4AI module not found") + +# Now attempt the import +from crawl4ai import AsyncWebCrawler, BrowserConfig, CrawlerRunConfig, CacheMode, CrawlResult + +# Configure logging +logging.basicConfig(level=logging.DEBUG) +logger = logging.getLogger(__name__) + +# Paths and constants +FUNCTION_DIR = os.path.dirname(os.path.realpath(__file__)) +CHROME_BINARY = os.path.join(FUNCTION_DIR, "resources/chrome/headless_shell") +CDP_PORT = 9222 + +def start_chrome(): + """Start Chrome process synchronously with exponential backoff.""" + logger.debug("Starting Chrome process...") + chrome_args = [ + CHROME_BINARY, + f"--remote-debugging-port={CDP_PORT}", + "--remote-debugging-address=0.0.0.0", + "--no-sandbox", + "--disable-setuid-sandbox", + "--headless=new", + "--disable-gpu", + "--disable-dev-shm-usage", + "--no-zygote", + "--single-process", + "--disable-features=site-per-process", + "--no-first-run", + "--disable-extensions" + ] + + process = subprocess.Popen( + chrome_args, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + preexec_fn=os.setsid + ) + + logger.debug(f"Chrome process started with PID: {process.pid}") + + # Wait for CDP endpoint with exponential backoff + wait_time = 1 # Start with 1 second + max_wait_time = 16 # Cap at 16 seconds per retry + max_attempts = 10 # Total attempts + for attempt in range(max_attempts): + try: + response = requests.get(f"http://127.0.0.1:{CDP_PORT}/json/version", timeout=2) + if response.status_code == 200: + # Get ws URL from response + ws_url = response.json()['webSocketDebuggerUrl'] + logger.debug("Chrome CDP is ready") + logger.debug(f"CDP URL: {ws_url}") + return process + except requests.exceptions.ConnectionError: + logger.debug(f"Waiting for CDP endpoint (attempt {attempt + 1}/{max_attempts}), retrying in {wait_time} seconds") + time.sleep(wait_time) + wait_time = min(wait_time * 2, max_wait_time) # Double wait time, up to max + + # If we get here, all retries failed + stdout, stderr = process.communicate() # Get output for debugging + logger.error(f"Chrome stdout: {stdout.decode()}") + logger.error(f"Chrome stderr: {stderr.decode()}") + raise Exception("Chrome CDP endpoint failed to start after retries") + +async def fetch_with_crawl4ai(url: str) -> dict: + """Fetch page content using Crawl4ai and return the result object""" + # Get CDP URL from the running Chrome instance + version_response = requests.get(f'http://localhost:{CDP_PORT}/json/version') + cdp_url = version_response.json()['webSocketDebuggerUrl'] + + # Configure and run Crawl4ai + browser_config = BrowserConfig(cdp_url=cdp_url, use_managed_browser=True) + async with AsyncWebCrawler(config=browser_config) as crawler: + crawler_config = CrawlerRunConfig( + cache_mode=CacheMode.BYPASS, + ) + result : CrawlResult = await crawler.arun( + url=url, config=crawler_config + ) + return result.model_dump() # Convert Pydantic model to dict for JSON response + +# Start Chrome when the module loads +logger.info("Starting Chrome process on module load") +chrome_process = start_chrome() + +@functions_framework.http +def crawl(request: Request): + """HTTP Cloud Function to fetch web content using Crawl4ai""" + try: + url = request.args.get('url') + if not url: + return jsonify({'error': 'URL parameter is required', 'status': 400}), 400 + + # Create and run an asyncio event loop + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + + try: + result = loop.run_until_complete( + asyncio.wait_for(fetch_with_crawl4ai(url), timeout=10.0) + ) + return jsonify({ + 'status': 200, + 'data': result + }) + finally: + loop.close() + + except Exception as e: + error_msg = f"Unexpected error: {str(e)}" + logger.error(error_msg, exc_info=True) + return jsonify({ + 'error': error_msg, + 'status': 500, + 'details': { + 'error_type': type(e).__name__, + 'stack_trace': str(e), + 'chrome_running': chrome_process.poll() is None if chrome_process else False + } + }), 500 + + +@atexit.register +def cleanup(): + """Cleanup Chrome process on shutdown""" + if chrome_process and chrome_process.poll() is None: + try: + os.killpg(os.getpgid(chrome_process.pid), signal.SIGTERM) + logger.info("Chrome process terminated") + except Exception as e: + logger.error(f"Failed to terminate Chrome process: {e}") \ No newline at end of file diff --git a/deploy/gcloud-function/requirements.txt b/deploy/gcloud-function/requirements.txt new file mode 100644 index 00000000..6cc3d354 --- /dev/null +++ b/deploy/gcloud-function/requirements.txt @@ -0,0 +1,5 @@ +functions-framework==3.* +flask==2.3.3 +requests==2.31.0 +websockets==12.0 +git+https://github.com/unclecode/crawl4ai.git@next \ No newline at end of file diff --git a/deploy/gcloud-function/resources/chrome/fonts.conf b/deploy/gcloud-function/resources/chrome/fonts.conf new file mode 100755 index 00000000..3f8207ea --- /dev/null +++ b/deploy/gcloud-function/resources/chrome/fonts.conf @@ -0,0 +1,10 @@ + + + + /var/task/.fonts + /var/task/fonts + /opt/fonts + /tmp/fonts + /tmp/fonts-cache/ + + diff --git a/deploy/gcloud-function/resources/chrome/fonts/Open_Sans/OpenSans-Bold.ttf b/deploy/gcloud-function/resources/chrome/fonts/Open_Sans/OpenSans-Bold.ttf new file mode 100755 index 0000000000000000000000000000000000000000..b7fadfa4aa59c43b38f7efd87cd438fab49679ca GIT binary patch literal 147264 zcmb@v2Ygh;-akBZ+HQI_Z3&x@-E206G|~wzO9}}ALJ~qqAciy`fJis=B279-uhPVT zh#Q1R7equrMdab}a*+#&4M9ZoB0_TV|IXRn5Ky1zKJVuZPG-(Ib7tn(%gl*{5<)!i zOCb96KHW2MMG2SE9<@3%J)_%!?sYc^efS}6AJ5F~-DkjqD^m!4G@Fp5-I;y*rsjDM z&mdg8c7(V|z57JRu9-M%3i{UK{j$mt<)cpB(2In4;gWw?`SLh@`pXL~goNM*?KXJS zkP#KpE*MMuh!9ujA?0I7p`$zIJIdxC^5Vq71)cBUSxgC`YeTCCl~?IiKhDLw5qO?h zjT^3E4qI_uh3lZ|5#uKCl6w;&oSG2L!xu+ZmK&sFm4t+rU^sb1`Girb9&SIQ|EuV) zf2n-LpczBnd_?G3tU-()HFE5@1s%1s2>t9J-l3z$3>p;>?T2T<0^Y&8@D@)_k3L{b z8tB&P-^2~m;OELGANIkKnE z{0LLo9bp<-Mtn#C5%K0)(m)pD)%mW@n3EDgxWgUA6C%b5pW@~9)|&g2#B#5<9P9?+ zn#@G6!@W>;KeKo5OuB`Trbg=;)H1ga<0|h6rD8q0=rQ`IcRBtr5z1DV6sqpl~Ng%Xm&o^e?ugqyh{!WlToU0eV)`v0puXJla;1wF&Fpe zkb|m)a&gm!hzHqfsQK z&n+@cxJtEBEve$&Nwjd+_6~5*?g^ynF+YOjqJI&u1}tjQk-;KnVQrnsXohdPqvV26zs+t6+Rt)lI8V6r;-4>;EY=LGc+xIT}%9@q1LhZ59##h#e^CioNbfoD?{83CU%Ud3E%8NQgzpk8dN z+5Lmy6;^Y2=X*v&%(vxFbr?uxe+K$8d@`E0tW{@8jp`C`0r_JxV5?Wy>iz;`lF5aw z&Ux-Sm&q%WndfUohC#dkv}Urd$QzS&(AF;VOzxQMx2z#gTfm>E?eu5-&UnraTk{&# zkU11S8wGlh-iIz+kCKe*n|NkG*-UQ=o5^``FY#hBCl1C~j*$2DSkG0I=_q$`o!X?# z$MhU5z(Fw`GRgP_Yh!e0b2Hgu^iy<~O~(n#A-8xYKE!>NZADDONZ?ut#Y z;n9vOMSg)R5o6kMC8gkYmDViI{}8&7KG&z}w(QX%=t=TOiKFvlKE}h5o9W zXz#_dPx0Pu6kn395>Ow<9GDBV5!l=UbPSUr$S|`*Uo$yZ!RDhdJ0!3*D0;07HE@e@ zw%Fz2`C5?+CLgfx@Mx66>>xc#d|3exn_0~-wH84~%;59MD5H6fR7hWv@s26*0Y<>q z#(KxcRXOseF4^bik zCt;qOz2sZdIvFy8 z_n2%l{x1WbAEN&?^jQjiK8)uN0LvbXkMSG`VDZOw64sUizP8y_MUM@}+|XshS`=H2 zcNtC`RnQw!0ep;+WQ2HuOlES+WCyikuT-ni58k`IW_pF`2PUJS!$C0_bM7bZOvV-4 z3i*_-;XYflZ7g**-l>LPhj+#2`~cNvjLm$J$z-7-`}4^T)J2l5w$H`%5yK0fC4+~P z6}<$SH`mYE%w`%w-!PeH`bm-B=WE*$T`vTqLsQ9={x9EUd_$7d+ zL{)*3Lwu!&kf)8{;cSwlPKTbH3|=b&%$u>k!JtPDc*Y(4eI33`G~|iVcOh_g9%Da; zk7uu&E41YdP4^Yqhaaip-e0+f%_O$xct`2e-Zow;=!|#_elGK6;CnEB$Gw4|i#47AKjGTy_cI^8 zMG=g|8TzV3854GjPbSrLHK~T&R5QB;Kd+iwO*(O@BtY@&H0F1fFoGu%Yt&vljQ*^Y?8$UV>VQdr{kMKI41E z?xPNeeH;Or`@){3!`A0OH#5IvFl^cgp&QW(XGjIwY#b&t|ND41Ng4ksXt*5y%pBxI z4#V!PhyPIvy*VE=W;u^qCGU|9x^+g$K}kdDh+;sgMqxfnHx%})%YQmI%ef%_=xHm- zsFS(tB&%g%`50Ay$ZZ^A0h^pK--yWr^Gfi;Tpu3AOUW~_THwFN^$juuIjl0YT*x%q zj>gb(T1ltV*XUMip+C|4w29MkNn9~^lsm(n<*sqR@&fP7yYU{pkq_k;@Qe7Z{Ac_Z z{C^8Xa28yI-a@WWA`BE>5#|a@h2^5BcuYJlejuI^e{4hBq_mmSW^jdEl)+PlP9lPdYv6@}%pN^d~*!rl!Uw z#!?JIJ=p>XV`&Ag0)$)WJM>3D_?T;DgYY9j_zyrxc*zD~Fh3g*F5$QH7ZnI8Aan(U zdBO`qnJ`OuRahpxCRzaDNkI5{8`7prn;C#`OPdF6ep4VMdQZJpuU8<9)hF8^9H*b6 zp8*IL=~wBu1H#?UK{&t$q2?I~s{rA-Jl%=3b<PuIuf}zqluy|wo1 zjyLb!{ORW1o40S?xOx5NKW|>S`Nb_2L-(y)w|>O$h@0bYjz!*7d(-iz`c~16#v6}s z{CeZeji4Kb8@@MMeO-P-bHnupcm2ET7p{NuRW%_+1Jw)Eht-GF2i5PX>(vMNEUqV^ zY{b9)`S4Fq4%_aW_|p^n4QM3A`q{7lZ}k-Ns`A1D+iTXV|747+zwSh{Xm@I)L4up$ zE@=31f`{NKcyS3rE5Vm5q5q~21wX-GXe}^lY|l^NlDQ82L}83DR(MGm#c74{!boAX zP{UVnI(`|yoUbFqLL&4Q(zht1Sg-GKkhtdcuta8PoRx<7s87kro`B2s~(jr7y_;8DNS`nMi;**wU>!8zD=`AO6EkbbreWBDPEu%8SB4rdA zEWD{We?SpB>lPI0ExEb4WiHm~E$vyWeQ~kA&e|I*3dJqkmEO{hJ#WW)p2#iI0~-s< z^%lq6qB7jkvuBR1mB?C&WxBHB;$j`JWpPfcw2=HF3+cf+8*r`bVQIr!ZF-a+bSIUp z$3c-)6c<;O7h7m}aj^}8Vtp0hF{TzrTEqx_hTbBW$^nxqEw{*`GNxM8##B%Muarev zBn92TgubdyRgtP^4;i>R>+;!etS_U|BDOW)VH#A)0?bv{PBZ~Sc|~Qpy7K(uB4e?k zSZ^`+DZ(=y!;5Vxkrq{i#UU+x9}I(nbu})HsYbAiF}2*nRSdS!N-V^pY8z>Bh|sgu zx&kbLRG?K31=b))=I5&W53+-%R+rX3*MAlRLA5H=t^Ax3S(OLwgw|!v$w$y>^XY{lFXhK z1CmUvKNEMKCDz}N5Q@Un2qdRjNSA$-QiUJ9BS;!FChQ$@^=VAoQrRvMx zYt@Pp4e=zYsi_PDUU){!>%7$AmWAQEK(MzDVDt`;v}hyhD63lm->mkHsN-4PI-*Ws zwJxGgWVK&Joy2PYh&mOk+eFlH-IGBg;$zZB=`)#10BXB0SdeMVgbFHx;e*zNMQTr}w-+$n0lLe_ zqD40W>eQrkt8*r)7N@lEK?|acdVQw_7_;NE-Skn`@hp-t)!tigDPuatoLBU&pcnPJ zcZFcFb#W@ww2n~Pm>(-Jb}O?;p!T!k3dy43R;whWl~oxnB8)1Oosd?pL%XaP`r-L^ z%CR))e`B}u_Bu#wS~tLnN|^=Y{lz3$2vf-tln96+g5h96o?8h|xL@z0!BX0%ZYnm^K#VxLXHzKvXE%)xmcWIKt?&>v9@i`^{R zw4z)cY^uIfaa3J9>IJ#&`pnaOUG6haQ=fTif4Aj$&%cotVd)UwvV;94`-JHcmX6^I zz#<&Gc9&V|$&U1-}@IZR^a00`3rQ$4VBiI))n<%@|&6&@`iKACt_!1}O8U)F~;3Rxf4=oj%Wv|$=rMQFjcqg5R7 zF2Wzy>W`N7-T>B*vU?@0pVE4P^;24td~8%DPxtd~u zz;UN$0*+FyEM`0yZEbc%a|}Z|>t;#C)mYeCG+Cc<)+XySUg^Ugus$#2<<8Bc)+krX z8xyQe_QphOlXahjaXMRvoNR5f4pXd6)?q68c4;1OnsTL#H{IG~-Dg;vtouy7*~L2E zE7m6KFw5Fx9cH6%O7nPglq+Stxz;A@KF``@-CxCXJvqDnP8Z&@~j3`4Td z+|H4-Rc`sLQqNJ3SC8Z>rG8RxAwx`1ho~GKZ4Wm|i>0a37%~(&kUm^C-&u+hm4}+t zuFj?zh8g}d{D?2{L6S)`!(|4N4UWVK@9OZFnE&D*dwhtcr_$?!=&N~%E?zBS*H!6t zq3rsgnpkg;^kQ9I2)lJyJ%doe{Ay)^(i0EZkJ)F9G*7CLM$ysoPU}fc;sZVf?cX^wH9dpCC{jo)R7XGNO1X*L>)dIsiEqpI=7%Fo_$L1i z@@56Xe&K=GUECvHl)6Y;q{}L2RgkK;YKZETx<-A_!O@|w!+eK&hii^8jsqOWIo3K} zaeU;IylE`II&+WURt_oIKD|8W03ZJgV*Z?mM$2W>6} zxCV3ym>uwrK2X2TFvf7+aLw>@APw{kGzBIGt_s{5_-^3oz%K)D2R<>n7z2zk#%ac7 z#%;#^#*d8uF#Z_i8dMWBKWIbH+d=OKT{JnHmYCL?cADx;M@?r;mx8ASF9=>8ye;_c z;Df;*244ui8vK1oc1U4JMaWAb6GP^NEDO0F+BLLSXmRME&{3gNLca*T7W#AOlQ5Ss z-!M~HOjuf2@38W)7sIB7EeP8f_GZ|ju+w3mwjI!RMB9mN7q(r~c30a2ZBK^Bgr|k) zgqMX651$(TYWVu_o#Fe!kA+_dzZqeQm>01w;*E&+B0h-tuZSBFcOo7}sw2H3^^viW zT_Uq1`$jH{+!nb%^8Lv3k=G(`M?Q&iiAsqY9yK*;e$=X{tx@kry&rWx+An%e^qT1H z(FdYWMqi4)-tJ_~f|!jlwK4l+PQ-i>b1mlQm?yC=v8`f*V%x>0#`cOWimi+tA3HPl zK%7IIE-oZ4IW8lvUtDF}__&#IE8<>{`*%Ez_lysSkBRRTpA%me|6=^K_yzGBUg5# z#~nZKl-8+7r)8bK>GZI(y0d5JHl4#dCv-M<{;^BnF0XZYkdmLWIptS#y1B+Y-7I&N zy2f{1(RD*ApV~KdYwE4Ez_bBrb?NcxGt#f6-%kH6y(z;n!zUv&V@t-qZVufv-F&-+ zcZ=)xb!NZJ*D`lx)@R<#yqy)A)h?@j*0ij-S*N<2x)*gH)_rC7JKcZn{v?~vcFOk5 z)@2*Bhi8w?o}7Io`#}#~kE$Nqd))3B*mFY9C%w$QvU=6_`aMUR(?6#oXM1l|?=HQw zdynsZvbUTYksF^|oLindGvhcOdWI`APZ1^N;lj>@%>>us-+u zG!*0%6c&^g3@aGZ*Rk*LzGM4N@4KMyfxcfAdKQ`rV+zv>dl!}$jwqa7xS()n;Rl81 z3V-eA-LHMW%znfAZR>ZX-w#DTMMXtZiWU`D7EdnTS^R$SKZ?KUPx|NfU(o-T0lP|! zC6{05`N9XKUZsAe69)#DrIiPipRedtkzO&pVq3-Wik~WTD_2$Ssr<2uRQXh;RlQbq zunsYZ?1^ob$L=F-O@C#2{q%b?f@c)XSTN(KnHe)b zd8OYgm9LC^W%Dbayz*bO#93Wu&6@SWtftxRXOEn{fA*s}>2sFP`FPIfb6=SI^}NyZ z{&iKHGtFOHJ-}C#;|9pXVLFs~(3qD!svM_hy#)aQ3yt`0d@IC9RgUU6QaQb4mV^ zswJbAys~8RlGm5KwdB~6kC*(qw9V3XOFJ#iT6%by&$5}zPA#X)QTqMt5*H6I%)OGtKVJIYK?x)duykyU9fib+S;}I*M7A2i?!dZy}yoI z=ekb6E@EBky1aFj>qf4dxo+{g*VnzZ?%2As>#nc+dEJxss`b9>P3x1^r>-wpU$%bC z`f2Nzt>3tQ@A|{*KVN@+{V(eqH#ltY-eA}exgljkj}0$u7`kEdhIt#-ZFpnDdmBz| zxU%7g4UacU8(VD*+L*X8bz{NCvW+ipoUn2B#$_9~ZQQ%@#KuoH{%hlp8yhyMH?`gr zyeW25mrdE53O7}68n%*<`HqEw`+dkbMxqb2WwcEFE-@E%(22@4C9{r(J*ScG~T~J8XBS-RZjvcbD!SwR^(u8N1i)KEM0Y?yI}M+x=j-{MOrV z9eV4-JsEp0@430>r#*kX{leP^-#+p7lfChKv-j?MhkIw-J0Dn7mORVyI;k$PZcg3i zy36~#_buJGci%7X7QDOi-JkZqynpZhhX=+Tc&nb)&#XW89`|04_vXEK{ow3_s}Alw zc;etc58gc}A96orI23y*?NGs?szc)r%{jE@Q0<{Zht3_kdg$(<#>1|M0}jU=PCeY` z@SwvlAAa@l*29Mne{%R=hwmTZj(8n09Z5WrawO|W-jV)CDv!K)Wc-n7N9G+_c4Xa= z>qmY#>Ty(eH0WrbqqC0QJQi@Q;Mk$#;m6-T{$KCAyx;fzaqqwV{ul56ej@e6;1hFC zymjL9lMW{%Pj))l<7EGnLr+dPIq&4^lW&~dfAZ7^@cww>Mgq)!xJL&fB&+E~ zIF2tTJU@-k2{LNj1=rT$)W{oXd}3UzkGGd(3=F1Qev701rYrTuerG4>pOC!eZ}ts+5Y1BXD64ivEki}A6MEWjO92`Wj%Z?d&*WirH7lR}aFMQ&hq7|< zhacFkby3rNAzktyfh3efk#uuccgk~7VL`^$zCPX#q9f%E0@jR^f^6|TMPvXdDH$qK zLEr|03KMa1mEiqAjjuPb)H+;D2o4U>`1oiwQCvcNVp2k!w~toE?zQ1S7?n4lAbETF zcqS&q2ZwOdoQs8h?+)L5tk3=9^S?e?n*T=kksnXH^40vAT|Rj=J-y~E9~n&5VQDIw z*k%0Es&)06b*miu{1_N4$ydV4R!&%T&g)ab<&J0H@D7d3v;*6A2p}R!X}Tvp#Az!h zaE+E2NjUkUhs8Iy$Qx*CpTB0aBAmsAX&urrWok$6&ITj-}1iJesArbeYN$w zEN=)OG+e&Vhc|pPa9|m~*>!+Y6BUkX%iW%@e*st#U^o+Up_ee&8gI{ZATy4C7`B+M#}TX7X4$!WBG?A z(|VgnoSYK(LVS2(NuMo8s1(m%M>gdi{-yYs@B&%dY zarK%$cjGf-2gXDX?A$q_abLS#eNm=g=tf1q_?mqb&BakgwV=&Z3U5;>iaN1s z612lORVPT4OMm|JsJfit`Qa0CyI=3g@yGVlb8H2jF;-RcSWLY!-AQa?Q7=wqO!P>I=R)FqJh-aYHauFm zZ26+cY_Q+u#Qn$UC-;7(pPx7^x5HQ|9KIjH2~bxOVGeU~cH$@mi1u`JP(wvZq&u5$ zE(35PWeUNSxO!RvG-*Xo70-uwnv$RaEn#%LLEdxy*2ejFugQBu=!h`MOI}vp&`SPt zB2AXh*3hulkEwA&}7)Ij<4#_RGO&LGw^iDuR`8@ZD#@l)`YuVPJkUYQx{i{nT+ zUY|yCf`Uv&#hQ9?l2OlT;yn`M^d6Ln4ih6|pd@5f-8>@y{_n~gN2uzL#)QK0V~dN& zjxXe{-jUyVmoA~@KheDX@)&vJ3sLb1NrD318$y3Unk+Gq$>OLBvmS#mPBE-2*Ro$*%`z7=g>tppPRG zi@+w-wm^GIBG3;`7RV5w5nM*;1e)XITi()MTt|J;^p6Hw0x09f5}@KhCYg(JKi&|w>%uUs{-y4Fn0j+Km1#9 zJkdJAyK@8$`JT*x;2Q~kC@>}r1nv~q&n_^O_`z@T_H=VmOC*2>sG7|JF$5}JNHf=} zLOiifJ~5FSJon-R`JeLjvFCgCyj(i}wPmZ4Cx=Z=;(Z$*>H>55or6DGeoy`-B$PUZ zCXJdfe2kA%DtB9cEZ_3si@Bo%Xy^#8(@+ts#dA^M#G!V|PVI%G zU;=M*RP_PDK>-o^h@jx01Qk3b&-gA}5V%k49n5%9QpGWk`g=z?jOa^daqIE4dNVe!se_T&4cq!D-y5 zuXZngaP6M_>jLWc&Xn21CwG1!CT&(<;5P zoB2mJRRbmG??*{QTfY$h5O-IiqdKXXW|B(r5dYqWH*2Bb5SV%{d)nn0t4HN5Dt_g= zwGZXrc8sf-KkL6I^{g7&J!AMF`Qqr2W5;x@h}8{zSv;Gw>E+qA?ZZaARzB(7iqGF$ zeK@(x-dDzL?EQ64W{-hJ{R_F7ISre852?&+Uy$bS8Ug*nkyKDR8&xmtC8XDP&cPuGOq`jF07$qf1myNGDPD?A zxPygkP`U|}9v58L|GhJLl5_atMMrK>=Wka(Slak=|1lL+8H1B!EBS8I9$np4rcyof z9{1V2tP0SXx-O8v**j(SuqmK(`YU|_gAzXpV_|8uipIBToEgu=PeDO}OyhgDushJh z3MaBF<5??!{&DshTcy`;?KMFPzM0)@Kcxk|ev%%C~W&dy%WUOqvA zqO0#Sli`b8tC?+{iDugE?bEqtw6wfMTx0RCoU0k`Ko ztzSy--PtJ{m))1j*;s|t^ew+du~=cGgE`3+ zoaBOKa7Z6p0baq3@=#_$o9wP!B%zH-$+MM#?|a?1(}cl8@l_2a_-zLPLKx06{be`%*A{Wg2h;-0AkQ@f@oMqF*5@#*G*$wNCt zbn4i)lf3&WZ3j0MNN1p-Q%El|-K_PY4qT>|;~ms6w$bnd+fhjr;rO#~DOe3FOcCr7 zsBC=eEe!$?N{j=|&7vzHdy)fu{~#d5f#)2C{{0I=PO;gwM|V?*$rK!FG6gxZh!~>8 zB*`v9iptd5y?X^KP^JRs?M@7_K}p_9NC0c^kqA{Q*c_Q81PDyyN@pTV77pw&R_osO z)$;c~dikF#%RlYl#nEX0s4n`2zpVRG{^x2MLR-~PI=te+JXv1*{^ajy#@Va1?*|R! zh2BF7R4&>Mf#u`kxN8Fstt!q+j?1~aZ^5MrMlZRlExq9L?QS3Vh=)jLS2VbA5hzE%=N4Zd#Usyo!ElM>I zSJR6n5ttQLtKp`4s6EhE1^-tCkuo4TVW0*|`6w>Ll~eIT(y+!m!{mLOKqqrjqdd&f zU~qIa>QzH&iM&HR`Z%2{qXmJ(M}~z>d{Ha!0Sn^GFX1;(+8rKZAW1OCs-Wax8#swF z!^ZpoYe3QqR8`Cc*3!Cl>%i8Az#v0}o_PeG2ECvJ`b?V(Mgz6kV53H3YaOI#Xb_Ef zd3g7iGvyn9G+v{L`{z|pp0oYjqL)Uk6zg|q z@&++qs|I@cBBTgkI-28gT#om3fS1CIFyE6|8^zoz>R4g6XBG?I?o>YA_iTO^ZK;0aw=mb`;@- z8Z~ixalAZ0o-0?-^WV|@!}9UV=iit^Pr&V1BF`7=x63Dg{q>uMECxNJ5Qll3NSHYo z6cdoK8q#7mQMCKJPs1WM83H4v2wX!wpWS$u{w!-aFR@;h-ZjE;+^c)*+9uBuFR1!l#B|YhAZtn)&>JCb^foBZ<6$IvO zhyqa0=*lk`KyT>S*7G zRjNwSd|lp~Yd4gEWx^XZXILTFzJA(2!8GiP$`^~7RJ)V@fYQM7YEA0PaHE`?Ekp-==bnS6)w%i z%3O)w?C+}PIRS1=Pv-E|^rBX9y)~Y;Fo~)ZP~opYtBASs7J23@25>;90J?}4$sAW* z+V~J)SB4jc(_b196d-lM!UnGFsZS{q(dJVsqXP$Ao>>1R8y}J=Z%ZuS zt0jo|y`2!})1C}>P<#SZk1fj860OElqh;Af12sa;u#u?ZqbdQUk@7})iv#DNmhaG= zw7*10(w*{kQO!BX^MuJ^ZyfH?ScEyZ38jy-x&0aYw}(BMXT#1}%&uYaJYtYP;l@Yf zW54CKV`SIM9Jd`~{VY86fV`5uj1_2jbU z)JJdcIsIWBckOHW?W0F&!L3^~@9<%H?>FDce^AwT-%+*v$f~P^-GCGM2NG+JW?T;& z0biDBcSHk>Xi9e41(`^9S7%QbPvm(dmU&bnEJeRdP+SI$2<^oJ6>cF;CkVqHU7iCD zIkkB3to363ua{^1>($0bOef?F9e0`e)HSd>40;d5PvPcJcnUm=Jdiqq_}dl1(^w(M z6m0Nf+J@z-z=VH~jCT&vGI^~0oA&Q8@^5)a36FQvcMwNX7%%j zD2d8}EE=upg;g^X?CwU1r^Zd|u0=Ww_#v*;Rmn?Q(W9)l1%`sT3K~xRdrrxsd*xbr z`x`*i%F?R!bC!zrSFTm9t~NBz;$j*vFm#O{QdM2V(1KGff)-j7*?Dug4qDVtf|+9h z8$uAcuC^oxM7JEe1?d}8q}7?HUV@=z`XD5VPl#`!LRnt44JT;j?`8S+f$AGCjVaHb znHM+V#SH5B?U)Ors|Ic9Q&hTO!Kl{@>FN)^E28?S?4q=!ob-@Z8C6TGPG3!k{Ut0i zKQ*T~HDT-qtTYUEiRCR-1Q{NNA!T;}jAYlLHo;*sqcL!I<#X~_As1yoHZbrJFC}{+ z8SL*Vc@St~7C~CKdF+s3ARIk0dIquZfkNL2unUUjW2PWMBbLsQfBi)Mm;57#6HS z4cv5mNSGt*1< zEI)-P&LE6_a)LY7SSYk^Oy@3~<$t2&;|34LeM^xmAB%BSY?ZLm_^-0rt>TyypkP25 z2Re@%EBn!JZrqTMN{=r+-or+4#yi&iL|A>R(E^eGoRD0L{XdN%?)r85jqEpCEV%TC#Ac4>)Iybb9O;^nI;kq%>?cAYSoP{0 zg}GnGLYi|qbvUEv32SMjG@8~gqd)&FAD4gN)O>wIHaDwrDn@K-kdN{?__~oNdSyg! zMn~EYi?U_OHA=#k4MmY{=W`nN^4Pgp#8#6pT;Wzo2H+!Dc~|Gewh$FNPVmtrA#63y z#Mzsr*p(5$?%qbQe*&#-gU>6@g;b9y^_L7$qlO0Sba}=3e%{P>6haqv6vo4D29xn- zS6{?Lt&nAvD3$EHP61f3DDg{;Z*M5?lFFeN5%!*1Tc+)lPO*}&^i`||79nhS3srZ zpa?nwR4w+V0BWE%5OaBJJc2?T;8!sPYt2V`fYeIBtuksTGUm!I8p}h|iz?AMV(rAE zKi)erc}awK+-=TzLK$B+y>#R#?CGpdnG%>$jzsG>@=f`lMM;w-ug2jk*BG|Hy?4is zo#2y_rn~$#WQ=@S9LK^pA17ptv=C?5Hi$J_A|Qk~D@jBcH%h!blvJ-T^<{CK7{~$x zmZ@SJ%*H^CvP;2&I&Sb|`ToM+w~yPE(m!iTmwQvj3|!f*+d41mN!xx(`ALxhcl}NB z-Z!_#MafShLV$0qMi_0w_bb*tOh*UGHZ>7%_0*Yd7d$SCt&jb&NT6L5Z7a3zW%AhR zXNDM?o6kK5BolgBJ25{3eXzNSWQq;@8h1BWgs9%so3WZ0$Z6c+?fGcqu$KwFsIXlK zLRKrwfeIXVWHEvUf@Kvu48Z*|5ny4QQpdkY@^ixym;6Lsz z&nWwK)oMHTt?*U=``*Nlq?yf5z`ry63usbs8ayAX$5YN$s<0Vfj`icT1zRu<2l#3I z++7`1kPX{{X)N*fHdw{1S<1fv$Vi_|xD)8>eL||3e zX+~~>_JE`-OPi>KYvMrAW0GyB!qXHCt!>>GWEe~U?yTt|gGrP+@ch|-@;f@ey9&!7yX4M1?3xaweQL88Pa-u2~DTil5rZ6sw ze%c#}Gpm$a1>>*ZC^lmoCcG^ros#3t3FdZDZR5h@Oo}q|z~7{yVa`ed1j%RXCb{)D z7|lm(@K&)rqA@rG0d|~{{}p)V+#7L>z{k_NAA#^27xeode}5F+ExTLMkbBnx@-v+2 z+;`eNxtiCN%_!kg}FOx`vmPc{Ld&fGUFxOU8YAFCbt z4Us)w*ngH6gCbHlulw*Hf_B(|bLR#OYq0dsNom)+Yl@QX*aB-`3#s&ByHYqZ10~2# zoxFgH+cRYMbdvE%>W}|=tW0K2dBAUFiH;&^3_6WkhLu{ZIe z@!8v38!y<{O(JrhuHE2!CLuh!=_&s(x68CZg?_c@}%J}PM$b|i;;hj zFU_OEVd_I8=F0Nnox6AM#1Hd_pnLaYW-p>AcKfV>3y2L^QL)ds;H?*S``p4HV}Uk1 zJ&j2&B#7B(CdW?=@}K*_KKsBG^w)Xoee^KT?DUlv^|HEx&3=)>4+;vIwX?ZL?!4=< z+rJ!}xGcimUB2)r+%;mYR&kE12f^Gir|4_>N>NhZ-g0LtdwF`rZ#K_}vVEcwz&aYR zdV{a0TRGYh8_X0!X!S+dZnO2m4yytl^Kxg{AcB-m!|pTBPvLF82sFrZzDmnJ#bz&? zCuqWH}WDJsb&e9h!zx9=UFysn*EN4Z9MS`}Y4 zcf>HLw##k%hGmo~{zw}dIxu7DANAasm1|7Q50vpy9Md&?jl%V13as_+)))~!7mr;; zcjSngeJ&40C&CF+gjP|(ILNaYF3|0~Rhqm{*GBxo4tBXb45R}%m5r+Dku4-;Z5 z-@9u&durX1ym~J#mM?rC=@zp`7%K|$*P@s-Wmw}Gq4a1W{=l2nU&SNrb0Zhi8jI4Y zkc)vU(jpgwxot`t?p;uXO%N1oVAsj<$QLRnBjaMNUMo0;1!AIVz(6N{aJl8wl__YhnjR$1E?bdVRoawMD0JXzNV(>t1fReEhp^ zUB>BV4!(Qu+s1FrDGX=p;Z-v;=S6xRz*3Oxv$C@%c9Rr$2Ht%ImdCuL}5Jh%oTHfzFZF(*9Sj z;)L}|I#qt-&RuyY*O4>I8);SJwZ_wQx;&F{0KVB%@a@Ym;_D%T;2OodvCg14HCBym zGPY7uEE*fq8SKhA37h03CDEKqZW>W?(qEvNa)|lYE%7~d-e%*#(S9DF#KNf3#K9%p z_$Quw-*J*2i0bkAIOd|9b>VjdzQ4&BDUOwW&+M6u5!?4S@VgrpbCT@Kr^;&1aX)wR z_D79*7&QPno6E@A1hDgvt&pr?yQDbh#Zk8JjsMubH_w8m8X-rgVLJy(BofHP3A=s? zEN98W5y+Ug#tUb@@Y_erU4G|y_gPb?&gy>ro!rtNe=N6qXHeVp@qEB*o#( z;{Dd#4MjGIp1FEea(!d~JjmYgY6Twb2*4<^yu5V}a42}1V%KI62H{x38K+S(Q~(J8 zR61-uW6L)I8}FLM%8K$huAw%6klt z>^LQM(1uPmT(!PcX6*MPv|)N}w>Z?8W4yeSUQ#5)P00?jS@}xfK#BY(VT;hio^`kR z{qT5b9QgOr;OuVI)!niO%a?zPlXvp_Z6{~s-t5m(BI^kK$o?*909k9+v|*?1+(o25 zv>N#TEUD!VQtH7?!2cKqEIveLhs#9lM2I4i>w+)=+|`5qeIK*I+K}1gAL-Py+^ahe; z&VVP2tyg4$5Z|-d9!CxsxI-B0mgA%eJ4J@0lPtiWAi`q#y$7;~%nE$e1$rOuzw37XNccN1n-jq1(cg)G}Hl&#y?}K6~;*-+}w~)tnK}w+sBv z-`H#5$*W68jP#Qm9+|4gFTZ+f&3gqv(`X_K24OexNBoamgo`sm8~ial96|K;^3cGP za6O&ilxMg0?zWQgsURZ>Wj7VM}^(z1YCrBx{h*F#hxNx?}i z+~lMFzB5-$FBv*?!1UEK6B4GrHa)y5VO*c7%cmz^c&T^ps8PASU*aw$R)tSrF+Cw^ z=F*w{N4z*->hh^tzqrZEr@m0#d&G#|xi7uMFpV^^fE^LyL*mTs;3ccs4l`G+V*ZPA zf`EO-0De+%i#0v{3dMl1Tq2E~g>jPQnWr8;d??@i{rBIG%kyX_ zmauR1-nU@iwQKmr-N9zUQ|+W89j*Ea31yo`V*WTk5QtJ7RS(9GOt|cip|I+klkZSj z8k^c;imTzGJiXx}i`Iw1@0pG)5zEWOn`4~uc9-_SelDO7JWm|*Y8gz!!Z9_5OmEvz zqrnu)4mcu!Zq9_*83^iFIf$!LenVwE>%xIlTI;t3Am7B^i7DN#*AKSz%}-m}D=&M{ zsHJ-|+ILC$>HLV@-FlzwH7dVNanazVJ+F^`+08$ubdfQMHxx}ag^uenb91!meSLgn zbZlm1^6QhTCYnNrX0LoFEcilbhxC}hn0Qm$;z^@Bm&Hmx-Qv5H#khjEu(SM#KP?Hc z*;-;!v}0@N4nSRu3TlZ76Ma?c zCY3N02N6J}VpIrEAn~@@$klxbRi@*2s_|WNJ-<2mzRf-6o?)ys|TuCb5rbK2y_%*uwDM?{K(OtQjaYg zsphlsBhSnCcGOa@9VKsEd*vPZ&X!Ho>x+vQ%8$>VQ`2ckzln3k&x;-(7ciO z{pl+h=G@3xuhUisW_-P;e2e^j{Q>!h*Vj<)()>#kJ1ouXY?($ zCk!Q;r!$A)4^2Wzax?y_GpBTBd@gZ$(CP?d1NDBby*%7q9o5L%B7?4Ww`DVoiuz&c zDz>2kB(me>o~q{k47&ccMe_o}r(}@6n?)Fj# z^N2AMs#JoeDo{61A1hCgq!eRtP=T3AXFmRx_j*7n!L?Q&a8@G^K!agE2aiVc2FO4r;++DE2lbQ7z%qK84RwfzP2*!RIE0&pRe3#F=7E zu`%tUqe6pQ^193af!A@)MEU4T#l8n@K22x*k2rl4)x5c}qRYL*r=}0i&Fx-X^`Ei% z9)A9kIprgL<*`WM)zX`J=I&jwKlm7bI%pDh z0w!6(Zxq8PVrhI;sNfG3@P}9)_|xFrnAY1}r_nj6h#Pfd=_|#pV~(^U_=ox8-u(4R2i_{IqGBXUC^cdCJEB<3fm*fC~&iHFZ0m{oFc^$&0P(Gfc* z-15Vt#%(w-JjMR;(PJ6Mh5>6dU%(xgE+a~BXO48iRM>d|zrqG8F$7S-TnEL>? zohQA0Od;-q3qmkM!e1QyRjCZz@y3ZaO48behW1OC+;!WC+1smYhSD;=p!RBUd7>#a zEP8En){IFdYetk}1s(Zxu3ox?Tt+W*wh6vq5ZnOfa3RykyJ1D5^5q3PqQ{sV=fuG5 zOuUL=IB7YPt~{z}6kp__@xRy#p&=?4t3GM|fCb;LD0yf`7v<{}D}k7Hp%bU>$SWRH zZaKVSTI%fXOEbzxl~i|%jf*Zw9@J%xbZP3aZdLxyKI1YcF3fm8Gg(xY!Lh-i zi=(?R4E|}484eB1A3G~XTJACXH19EcBg8f)Afo10_?Ny|9dh2#uMm68-hTPTc{*M2 z&{0urT$W|5g{SXJit2GV84jr}VbKa~prrkovc@DVL1D`y`q>{TH|?hwZI7+~v@h`u z)M$gO{F`Iz5A7$RplI&5o*w=VNr@z zdJMwStvk1M?mO*R_2~0+xe~cS%KgK_$9W9AdgQ|!rA$YT=R)WueloAZOoU4%4)_yZ z2f0*BLO3wibQLMSZP1~1t4j|Hv)#-)#edALXF@>Nu-s}ZtVPjY%0ng~%;ksb zDy~=JP$=mP0|MuQv$M#kY8dOzP zi8%9bEGWg%bo><}(OL=X<;7R2kNo3RI#!mRwvm$QSVK!_NsXM``e~C{yGTU#%MleI zC4*hyAX2GNu*lVg6A@4GqBj+Av;teLR0K+K{EwFiKg5BuFT5!Jmuf7ZJkS|?d00bl z4-be2Y2)wV=fOV8!pH1ho`Ocewl>D+H7>Tp9_*YZZ9#@O4RmG#k`XMppoq{Id1wkB ze!tV&3&q$6jp6vJxmkpv7_O=r3PQ%K^`nBu0)W%QV zTuW1S6ju5TX3iFaa=#7AFjB6-Sg64052fb^rH9WpBpgW=;c|(>FhJ^Hg%o)YD)nPd z*FZ-V&T~q3C_TbF!a_p~0Xp9n5IX%25ZZON^}{{3%Lh9^893+|CcQTnwLT<<%63lP~2mt~_AQ(at?r?)#A^}7$ z5s@1a5fPE)gUBKxi;Cibi-^ejVO^Gw>w2K;#j?sOLZp_t|or2_|vf~}IC#7`T*(23Bs}@e`H72G*$ZVWrE@aSLFTaI8 zWvKuap3bQw!Dmt^<01l9d-5(&RuCfb;PF|E|3fDp2Ufj5 zqAj=RUJ%9&s3a#9Amuer{@iVkil@w=`n!2%(AN+1%%HBNVaf|e(vMzgBnCNqAu*_+ z%p);KApV<{ndi$%;29D#OFg8o*>Ic-GCRtK)46b)Hgo8+UvC57*NHo{8Rvc$8zh~( zLz^0R8>vyM5^dz0$K&m8!v-RWc(`N%SoJ|ZWH5F_Z92dw{GsDc?{_d81fL9Y)hs4$ zJOq4ZwlMHM7eG?3}dP5M#J49QD1sa`X0?f~WPHtiu5z};ee1yEWOrBf(2 zE=uw=4a6DR&5q_RddOz|ZF#M_*>witlt0KhH)7a*i+KKyk-EX^oE(zNI7|xk{JE z==wHY-_Jh%@e5<+OsC95`D7|KL*TyU4MjEqpM`8On~1}`d6)5w1CKUyWXFGM!^&C4 z9oo=%__Hvcu6Jld6d=aa=-$z83V^J%g!!Tl!#40c?FE%`H-!a2NHNOX#~}G;Y|_u_ zA8uwT`uVL4^V|H(48>F03(&28CZ`U*C%a47-)wi0JiXh;y`up~!JG@{3m zuK=+_sR)Lv00t5m&A8qoGAp@F79QH9%v6s=3vPflk}X2Hah9SM!WcOaWK(W33q|&Y z$h&xZ^@v>~#@18n#n|V{s&)=QuBC;d^IFozxL(f*)D4`Gh?sv2zb6yg~n=%Rq))aH@BI?n)xdH zN*k=EdWSZ&QsP;S(pJ&Ny;6dQt2!SKY7l|X&tbFM-v|4Lcn9T@bdW+Nc=)g`FyC{f zQ2+b~*+Jo6Z37#(7M&90tf9$mX=<^77h z@UP4Di>4!&n)UL=`I9DKC=?xQngDxmzBIvzkAMs(BUTei2jT|AA5cTwF*Bi9ezhLV znES*e*hh^Z%}9?Acx)^b2T1QCI@2dNJ2NA-qa)KqS+~J{I9m;q@J+^GQl{=gf(5rg zQeX`aGYnNf?Q-|sT}I9tJN=u_8rBzQ?Lnc0=*r5bhQg{Lg%8wEen>yN?w2RF{kTTG zP%&*#*WActXL;#{`Tz5LOu`TG`FC|q%q_|6Gk1`)x<}Wt&ZPtDC)_~n&H7hIR;(lb zz~iAc8&h9yUlftl}~89i=S~97#8QZT~*yzrN-vAtB2fA#2ISG zlNB0?rXw;t69@oKX|ppp9l%af5@I5KVJHad0B4p8J=%&B)q$8=%A$wose?taR4ecG^2-!QNj|2rF<_UZ=dYl*9xeCxu%5 zy)A(60uHPnghB*vg|?4SO+uEep$L=VlNL|N=dkJ!5d}o?(U|QrzP|UdoqQcB zQn`VzdmnzihqUar*XOXR+g!)G*U(yuyU+^LT{Nlj3a+*s!shys?yWp8?%h(y@390Y z=^L%rHEB*3wO)m*-?v^h;|zww9oIj@^+z?_+qg?3)iVRHpl5Eyu8o({2`K_)X<)O6 zCr2K%0|aj&6A~UkY+I-Y!fys1onY&jWJ^y-PfFvv5Y9+)o6$MjYQ%si4M8>JK1)hQ zh`JGig$VW2y&ow0bj-d@kL!QEfk?9j7uK99vm}h{_T`v^_I{}>Q|k zPJVdXgjM>EAN5Q6yK}$Twd=Dv4eH?KT_4%r7?u_0+OX!4rtQ0*u6-0Uw-X$1uSPp& z5X})J(u1w@yp^xZV7d;ec-L*O&tWrea~2Qe24tfkYic*>Sx{18bs=XsoO`fY!G;O1X*E=J6`mK!sIaI~)T*$ldd9AD_bHEB z6$%pBGMUHUa-X6hLy8Kjs$3V8Pj!Fe4`pkgfp_=lareMJ`g<2I>ht?lR`uvnRSBX} zu-=E&t?D|Q46%?(aYDndh!Z-&78!vP+F}Ms08VJ(%x^oP5ku9s`bp_2ZNY?MiA6vm zrveyLa6Dt*8mDunHtm%e(t2S`j=chPm{}^9gtP%PW?Tfzsr46_5%V}Tq?QfhBqAyXE=sVzM zdEKDL2EM+c?*JzD!BOlFSf>y#&is8?yAvmz1EIgS7sj!+ykNWYX| zH#GxagLiYbB-evgA=nxdK$dcZp`~<8PwSYOl9_@uflW<(+4(7}71zDYA&Z_ed>TFya#jHWD9`%;3D*b{0j-xFfa`k{X9ZFZuE#HF!*+%H0Ubu#an%2&A@ zX{$H)0eU9gLo|#-eBc+t^z~PvUQ)XaBx!J!yqS&jE7j9iB-$n0lJQ zH(>oBzM&TrB8TWJnbidh(WM~Bqz*8UQSNIFcCLH((wT<9F5A(ggdhP3jz9c?06F9yu2*auC8b1=F&@H~=$04B@c&SSQ-0*7otM$#J}xyHzq@b>9h>i&10!kV-k!G`>iTZFhhiw$ZSbIY1+ zLz|CCIu)`v+F+k!J@F;);XFz7t!O!LOW%K>%_GEa{LT*I_qq~rWqJN079jl%T-G z#yc6z2?=*$(zD6%*m-w5aC(S?$KBd-pDzF|zYX%vCy$O3P-}f!M4EsOkL#b=) zE9Xl4TKl#>2`e%{UhUc~`nq;|^cAbgM+^>j$hE>~vx4Jt-VgAzJW{57G_VyY32 zh|qNmm7AR8I%tvtW1C#SAt4;d&}~^I9;H0@(i@rXvzZSj)P!1$crIWMOCgjM<+N2 zXU&|Xy1cv)S!ICgC}tB2({+M2`oY|xdaOF2Xxr8T0@!I@&}H-bZ1%6~<)56T-3Wd_ znRM~e6esH9%81Iqa4;@6QUC#TsrB%%iNs1ob6}6wL#Pp1xABlSkr)6uryiO!*GStp zsdfe-4?3J)%8wF^;u)~dU}S22Eri2E&uYywB9)pV;gzmg;}hcY6SDgnnRY>W$Hu?# z*FI0`!A2IQeC1+m#@(AAH6NgiOsu=G;*(67O*8|2YBgU+PkoA{{;gc56t;s3=_9_5 zqA$rCqHljT;`V*HOey;Imjq`OeTh~@-@$G_o`;>7p8Fw}azx+3V1C#-G-h)p(0;-t z2kYhZ1}u}D0QphI(HjO^AYn1^;A0;PxFo`ANC8;bA2vUeR&RzhIZvb5b^>nCys0UP z{|o!`eg@3i&ArH9UHIF2je>`N9)GOaz+%T!Q90L{*V>;eDB__Y3eQL0rn58W*ZYB@ zG|{ac{5zsF<06rH8Xp_sh;$%OQ@{!VUK^31NXp`g+el#J{y~Csv)ahJE8wAm+92&9 zC|mNEWGG|YF2m+6>5KFJuK#V#8fO3W`KO?sZg^>a~u>W>$7mnGpM`Xepr?06GKRxoq>B08hvYU6}^j*hyG8QZ={=u?li~0!&qBnBa=i6f(2gwBlOtF0 zQRW+?Eap9Lws7p{J%<{jyvm zTPtko$lb(s@ud53&)bX=?{};GREZ}Y_IOf1oqDF=ycIGK&R>$4`q0%Z%p>wI@tk4e z>gT*I$xD1L&=$PApLDCw8=0FF&1du^nd$=W(1xq!Pq?+f^}!JZZG`JgMqq&vmx|W@ zlD`pCKyj(U3(ffi1y@bq zp2GUE$B{WId3(v4S<>)qd`v+QI3dkuO9RsDn=B*?$4l`J#3e%uvRWx`BnWy=Yv!m> zhu}ix(fQnVpVxhnJA;%0*ZP*UCYG`vPM+Y2q$f^pbe6i4OE+SMh5wVh(1m<12eIH= zXhYa+$%Z~0qiVCzi@tP*ioO+?gPY|p-j|=DqHl$G(TUgs1l`VMB$*|DYv zU<)NgHSBh0Hem>Wc(~Ci{rJIFO|RfbISX=i(U zad3Qj_N*288TrL+7;G$W^q9J#XL577E#|@L&Ux8dJ3zMP0ZT9Ty=NWXa~pOpGKE{; zzf#`I-=7xn6~1@6@bxZdAK$WOuw!U%^Y_P`kp^ejwD51XQ?&TCkXV#k%HjQ%AzYSe>nupD~Q+gQyk z(`m^e4R#Jhs3Fhni--Id#!N~m+)$NS>PR8`iI1_%F#OdzWF;7Bx*xFORwY zF)P=Pn1VotIP!CQdpbY??3AhxL{-tOpBn)^-KE7T)6D4nNtv&!k9rP$)Uo+g0+|Y-p z(EqYCng4MIOT9R8s-5YH_V6%N1d@99>Q-7*fN+iUj>-1B67PzQ4oe762n_HE^$n%z z4zbd7(@fiG&J~_U1ERsC!(G&S2BeS9ToN%T*erc7VFXxh|8YjV>wa&t4%bM^WE2^UUqCbNTcot1*? z!0bVs$x{#H@fe)zfQJ&-k%fnvM@;d)+eBYk#1|>;d|mL_^1jDJUp9+#om$8{ZITt_ zohaf(HIR4O5TUZK@wvP4lf(j#mh9!9!QOq3N9Ja7fZj|BqJRAfN z4t!X{M4rZxn2`;M@8&Pc%fB!0bW%f2G$8^uI-=sM3krrMh?EVU33BVRuqz3{fNH!! z(YW2%(G`FV@--%V^78KYjvoYt5Wl`yQJpgKOv(TMaA zk#%y-v>#fLfwKq;5GL}bbOVZZZ%aF|<;mAvBTV~0grF@(J4Q=`q?XBN#!gl%85t|k zig<1fd2^9EfZ2gCXAk7H68Q889+wk~ay3N2W4tfyJ9x&j&(yWPOQ(ijnwGZd)uY>r z^85qy^Z0YVW;?j$sw00+40b5SYGj9^0j2LCU>b z)L``^N?GYH%9SCSq6fpq?6HgZC-3gEmc$LcR-0;d* zK=KOed0bPjYKL)V5bDuDe*d00UwJ%>Twy_eF-5^w!&igmIB)nBS%D1?=Ep%{p+4Rc zkeWh)UWB->5T6j-$t&2)Jpy_-XZ>amG8fsD;uuhh;~I)qSsmuDi^|K3y7cZXk1Fif zudt+dZ|!h!kDZl~CC_(1*e)r$M{g%MAY@O|0h10HI}xN|W<&IxmYsqhx9l|R*|U`x z;780*cm|bHh)PzC+PjU_LSB6eOtw%S6DK_aqyEeOse zYnWB7a&6P!H63Y@Zj_@Nc2E&k$J_J@?hrtJ0(ct5F@(G+0RUHr2Ng;KU~rPO04)Fw zO@Ss54TJkG4_liAFNA|DFniv}VlT6c&89Gf6bFZyno&UG>cK-M?;B;PPCBU4*SB(T zfJ>%Rk=}!R=^FXr@i&*)`QMQC#phIW0H2edMv=@OnDC_M^E?~bq*A>NVr8r=S+D49 zput8*N5@6S1pyr0Znki2^gE-(<1IwQ@*Qx|=en-_Dq8$VU~`KRQ+)!AIKA}^$Ty~O z-xziz=D8JB8)CdT>#$y-+3P z9d?B>Wt3?#_b*LOU3y<^^9C#_pH-?2fM<4U9RqnnG@4(`B5cpxBSbZRe59^UROLVj z96^YHX9%zfkPbnJ5H@b12{lwGW6k1Y0eZVfsaN6|?wUVDR|}Nw%}3;G&1;nJ)uX!Z zI)U#MOlqNdF;)&^fOT9@tf?zV&ny95ik55?E`!u?${Qpr>b00G5%6de&B6(#E`#U# zOL}MZ@Qn)brW8|+yXNq_V){6?dH_XD!rKD<3D}O#u4YR#mB}(gySJ$VODFH)t87qBveJ10QM#*oUrZl z6ASX-NrfmM#;kyQLB-GJf3oN%=cen&^sisNvEi;J7IXQXC;#VV7WT@%9j4QVwQWB> zGV=9ZlwEA}zd7^8J<#(%__84zX2=h^4FZQkO}ilzBlR?|H8IgJFX zq6NakVj~L=Y6Fnq3nP!DP#jKI&f`TcjH+G~jLA`<&8X{1e;7HE2~_$@F-ePI8Wp(X&i-B+ z3<3Z&ut3TOGlX|38NQLE)|Rr|g)FI@)8E<}xn+u3Gb`F+;D#WN61Tpo1NWD>?+({S zRHB_pX({&1#LW0OpjQTS0#!;Il1kxGeY z^QkE$?olES2nR-ZN^(+Sd~8@oct#))S^=^W>P6%%N_mO`nm7~zm_fN1VN^1xwUlNn z7J+22g7B}qqr5g`~X(30C zee`{)>uW9dnGYH+XUv$;d_6vC;k2gFKg_PJ2am^z2aDHg#D9cIsD5XKmkTmFf6kyEckNF*U;1vwq%-Rud3APt@$Y7C z+R=R7f8fKD>zAy0pm9CT9N)e0Fs4YooZaI=1SmG70CkC%rQ#`B8Ms7g*R1QVNhS!$s4*}G!}pt3HM_5Z(B z`X{=+X~Cq%2miMG-fxE1mOnB6ljV=d2S4o9v!E?gi4jus<0)3f6pwWpE>Ssh)NuRHv>&t0~beI*PghOeNf+OFAC~O-)oRVocfl>i7 zP$;4ekrgy#$}UoV7?z`-DXwZ z862Slv?*TI4Uz?AkwI|74kG!tv<=l33^X*v-!CFOBq}rt(HFt~!4A8HHWjZ}EGh!T zOYmUum{BO+K&4kVPr3Y-ep&x{(&aapmHD|opEbe4PMRmpx_64I7pRSj_KW_+arO+G z{R zFbFFZtU*B;h#V49^<@P|Q2T4x`0jXXq_$xmWo0qlOH3kSFSu|RMZzhJ+_LKVA%bDB z`n-WaTt$R=Vv-|KvqYi*EGU*t7cie<4?)NxC`BW5H(7z*4(Enhv9JsFw1&aa`N7d+ z9S`i8l)@r12d2ez44;{F{{xP?u#P^Oe@gKCs;#E6i^bGz_O5zrW^?nRe%{~t2HroO z1$1ASk>8Z9bK9bb;i1`>OK*UaK~iU74Up;L3@4-@fl|sz6!KzlcmQoNK&N7KIr)KB zTd)i{Mq@>P^-uM+%pSvXD_+~LU&h35%zQX?8(Ys3Kh~G&d-mhr?me7C5}iU89>77U zrsbGG9-$&*1MsMiBB)yIKfwFAEP!4aURZk;BVzT$VeA#+w?V0G)>H{4A(et=vBiiaBtILhg90n&<_Vj_@V zgpenKSnPrgM`VN3gy=fT8RPjG=M$oVpnDE5Mre$LlFjiL5wKzbPiR9CCXtt1(l7+s zA^Vzw6T8JEE+}2I2St_6etk&&=)3%jK>-&-ZIADlyEm^^W-lH0wd>vNY!E8y2LPd# zaM9yQ0|HQm0wEW1MC8TfrvR7}0rTMP-TW&g7-(nlA@Oz`{veC?=`aG494w+uDo{6H zKRvFc!?#Qlwz$pA!FMZSyo`E4u>_#ZsN8CVWcE|DhCQScQ{gy61UL}CxbIPghQg1Uc1JovkRzIam=A0*geL0|Ie^IT0#(vy@sNSc zmBdi>uMi!}fv4T!0&>)%adHNeLUVl`w)5{FEj zR~rw60+ftNK(e8{?vH;T!LldLoI5W$p5-Li^{)aSzOqrSb8TL~q2o-C7h< z`V-ALB;4ypr6O3J@LE!QNT8YKo*x;UP`L<$gEl5QIw>Y8ER`P_uu4M=2!qf{DG0+y58ZvZNoPpSb(*h#ojulPJ#5Yyx+kD zs3k!N(UWYEVgA6qkRg?eQ--dxo329Rp$_3-7g9a22qlscV1mHRDoP0j&PRjtL1^?j zX{GHy<{^}EQ0#*PJNTGk17wM$lEM!GTuo+U;Nxveo~+;sjv37%DB6#lBTgAv+rG+?&y)NnJ@bXY+T36 zT$_~Htge57#pkMT5YdPptd(hj$Yuf}TQn$>>(M4t5mabN>cYz`xYZ9Z8I)p%Ru4&% zwhUht8Ds*0N{ufVPEF!=w2;b`r?+L;SyacQo%+9?)i3SSf7!(Bi=Wm4ufG%U*y}5p z`H@HUUsj%LndhY^vA=4wem*1TxZXan-q%!&aZQ1JWdUe6O#-SZ;t%Ou!Wj-Yw#9Hc zlkh<-P-?(_GR$mgQkp%;5$Z^?;DBO$OeD?I@hpV;zyh1*7U%gOG0CXkn5=mh=a2p4 z<_ESUc_(jPy6M!I{4UJl>{>IvrU#4YSu_5gl5T442L0OZXY@yB)Ys2=RDWhSvus$Q zf3tPd%MZ+B$@+zP4;)*+g+;A^p55{T*Rv68BlK*kQ3v!L&MKj2({-+AON|k9m7idw ztBdSbHYBC3E$Qk)Cm+JI2l$+Dy?zsx0vbF;yWk$&>iTQwBb*am)>K$-;-!@$=+GO% zOwg4K+yLf-Q8vo#`Ad;GrJ25k}+L6%3F=Ui}P(Q7&Q%C6Ktmeyq zzaJQcFyx@{!0u&>s(ZU?RbEU{zw*J$OFsCkdrqpz*(pY4UHb?a%n8{r?Xcm+ zN@dO-QP8`hK}}Q(3iYQIq<2AVz>Hu9VB@XFUe2VGL#@Ywn?(^C5n&?F9^SB67Hh^E zAz%dHR$!a7eW`x05umKtJ@x?aC};m5qv+kahCitL|x;{wWJvAv2*lS@VhQaM>XLh2nFaw7X>U@46 zwm&Mi;z&b*P>>m-O8n$j1diR6JtK4DI_9N@_+}JDD8pyHd3~P#wSG>YsDJDm9cv4S ztbRm(mX5zt79;iFv7$1Gm#`~>?yNZt%I2iQ_u#2D*-6hQjMk(wH$xDmQFh+ z$YN3~6G5hTY6Xi}kR(M%hKj5*NbktdGDo)>;60|p>fqck$!d*%kIr?>~T{a-{UVBd;HV(dmOta z7<+txc?C2u!;VIzK!{n0 z3R615~obVZ?^hW|6nvqe5FJnkB&<%OH zSdf&LnS=qiR|gtsU=YJm3mw$d`Az+N^JM+}jQ%Sp+vGU?qoB$u-Q{AMC07;I6_NKp z#zp}%#7_qp)KUG&dSh&@UPP=1zRasJHml@tCiwfJQU@%}1bK=frBHPdK4qxYfodHZ zQ57U6tPuY1{zbOvz#L>3@b?AgMB1B0Kdgsg%EI)+@--mHmY{4aeRp?RW_bcJol$PdP}YI$=zjdJgx*!1xe>wd_%yQE)rxBRo^Lu;QV z>INNtjM)p3!klp6(v*?)2Fn<3Mcol|BrFG3@+ScfkoF-W7VOM+l!XEA5E$A|161=n z)vPg#YlMzfaNU*LG=GG@Iusz3#|t04{~rGvJH?urKIZ%E_hO$Js0Xc4@5V>~>4+!_ z)LZd3%kIc1IfZ*mvCDWB5{$^k7mzQZsZQVNx=h$e01Ga6eM?J&QSimWJ#m8Zy&EMB za(eqSg#Z~*HA$RIp^||Fi_JwkpRt#toRJlROLt3MpG*v_kJ%qqO9*ro8i89SrZKPuXD z>^lvXGWxuo*AlbCxgTaclK66nzZVvsG6m%do}P(W0X;MbQpNuxrN|&hq6yrFF%A%9 zh-XyRj+>V93xZ4o^y01${qO$#ru^*LxnoC0=o;(8tbUz+eSEV5;UT^8)5E7G`TH~P zAnWM9s5ZPJZbp)0ZidW#P=?nO?=zE+7Y}XcUj!%Cs2;G7)W6?B!h;VdUuzZVj}R&- zx)kh+u~f3lL~z@h;ih%Z671aYQDX?wXybD__1vFU zI|DEXkGu+VOuJbmR$)1zpZ_JHZ7iO%i9--GD&rn*l)?6=9^M~N_3S^Kdg7qH<#Yk|HAZC~k1pKFtz~A}d%5lZ{%qou(NA7&IyG_jI}NYA=jB>1&(mI4 zPZcI#?^K}Qt8e>MfBt2AN2WSD9y_N0&vBZamhUVP@aIzu+-i{}83#K(;E54tZZ<0v z?M5OQCCCvQ7itBmANJN}yn)&5K88J;I+O3z3Ue;*iiIG3wc6>E=m2WCHOOu;1I&QG zXri1fNYNH3*|JrjBcehvf&^rHf^3OcqyPPr_w;W!2cU=}&M6if4?j}!-&p*^&1p~W zJGlMv=bqasVvU|+j<;PXN8@@EzL*}z^aEcYg`8si{?V>QGoP+b7@4~Q*%#$g!8`ss9%@Hlv&1|dEc6T_{k>JE6S zVuVEoC#}?xqHrka0?H1~TuGTo{E<^q78?*3>#)bB#ibEQu?f0ZP=MsX`3a9I^e!{} zzL0dF<3mT5OacZG9t1Nyfip|Cda`4g*=IN(*eRQ~fO!WA%r_K(Yt`v<}6ln2VHnwid zFtxT|@$zvW7wY$SFV?R)=_J7D6!^Mtiuc1{_*sY1h^8;@&JmDVFd)m#?dvMUNO78_GJF+@#>YCm9WmkZHxwd?4sUN#^DPmZE zhB<6r;(C;=)2GSPXMmb|J$vbxerP?>4B4`Pm;;*WgCS#+g8Me}IfpGcpo2H;z<^Ol zoDN)^ijoEx0h|w*XSB0QRxZEOVNLiDct?;j{-a;C^ZFR}rhZHxit3?5^<(&b3^0lw zL80$Q;MDqu>zG{NI>o=sQ0DJbIgY+*1mt12!#9y8l{oH^sRdu?;Ci0$cXyS)mf!W$B&&G>22*YZpg?d z>g);4@%cr4mVKDrBR}7faNdz6=)+{kOa@AJXFRG@K>L9NCrLDiZW5uS0&5tT-ncj~ zqmYSb=(PhvumZ$ zna^QqNN3)TpPWk7t7szRcZ&SRIOrs89R?PWYZR?(2U1W(n3EmrL6kNTxO7PeVx0m4Y0f?x*1Rsno>6XoGvJ4)B6~Z3P4-B%Ys{pC{ zRn+k94>b1dl%43z%M4ToDD$CvPJc1}YH;~$fC%t6-d3|=T)`61U4y&{R2RYLq-?gM zTomWTAqc$_-Wm`q0_6fuI4?~Kld`nMu{{z0xKGqp8Ig~gA zY!e5tzGw6t+|bygo*vVk;EP-Fk%-%bw9CUN=?&dm(}>$7t-yE&um<1PC(+$+?4pYC z;?Cr?MxA2p{vlkp2RGm-o|;s~sRsxuYFGXwc(LjBJd@VV<8a^_ltT~6v#DM6^>~MM zs-LJye+grk@B~ya#S?01R><3=B_saC3fV4BLTy^?1sMex0=?l>fszC6nZ|WpZeT&o z6?%cugodlcNUbXTOcH^i0BJB+a#(K)qC5xYmJ8#~c>rU6g4o<7mb>in%@47tRU02e z_4LYc{rzvh)z3ue(d>&zmizS;mL0?nx+Vp^w0z}DR(ZQ?jP<3J%U{H}5uZG&%`uVKK<;|CzSb@ zTnqJU-6|Fc$wbS*^SyC;hu*BC@MnAID3n(jiqh;pem)2{Kp!s;9i?>)hKgdh?_`}f zF!t{+^k3vPtn-cCYpQ3S1+NvOplSb*#sJh!&<;sQ-r|J8lqfhBX$mj^NS$@!Y4HZdRs6yc>&%Q6jKhK@Cwf3Xwpc6 zFwdloxE)c@NQ5no1YIt~<0!^i$33VJ%{g={#|D89DVjyoS!`-ef8{!eaqM!tc7Vio zHSXzC{><=+Oo69QU8y{c0pLaiOCcjjorkU zYkT!CfA~QEHs%x^ooC`$;D=kjUhZ;?o<4Q-=;_lM1eoi$KM{A=2mkf!_LbwYjA|TK zl`PKCIANwlRVR{npm_ovSI~4TtG5BbAc=Dvn~m|9L4?aAZbd-=0x;+jkRh%gVHrc0 zx&8?A>Dj%frVZbBZtwth%>LxcXI}tg*vT5o2C~S3#wpW)t?GfXjMZ1czxRS)r%S7y zel{k1VdcRz+OUaI;q5?(7gDf^^t|eUVZtYxpA?u!A_l^u0V{`x$fL0rJat~M!6Isu z;2GLCMOZM2afG()_Cs=|Hl3yWaHm~c1~nJl=-@UW_W<4ChL6R0-VVj6cBsIu1F?I+ z*?Gbl9hy4TjbYaYZP)xQvaT^h*m24+4JcRaJuDOXCzJ6L(KOg0SFl5(Xopaw2)MW$ zj<`^YwdOm7hh<@UxQGf0bIYxKhlm0V{Pm((6yG87A~4V${z(o>D6brgLS6&M%DL6e zdyPn&GqLO${hr8E4Nnf~^LQ}xXPKWcX;QNNLQLY%r(2{9`!|k6vAR6>RU=Fh{JjAK z{{#pg8e!1E1O6E}^ergZxDLEIqaDd?;JnyrR9!eivPmcU9Sngo?+w6T%?hh6_ca=S zn7LP)KDJTnIVvBZ!X|}lQ928h8+fQiycXF7#g2tz{MLrV$?9=PG0+DEo%3JGlnArw zZCaxVXZqYRQxCGrQph|I8U>?TY;>e8%7&3gfcqudyoo20cTpSy_VzNT`$SM{AG!8V z1l#Jxm)pyqyO%5*GTF_RZ(f-6CWhPum3TS5Cf*o9O?4Emaz~q~oUG5s2q87;^C%FKgr*z2^l5Zg*a+2y+IQH4 zkYW(PBP+{@I?2_=4dfsyJ~lHZMQB%ICe($l8Tz~OAGGgW?^4zsgIk`46a< z^?+slW?UEKX=-oN98-lX+_(qBe!WfKIr91c*msWH;L(>*Lb~9k%~B(qA^Litgox+T z86ck9XyD0U5T4j1QV(g*EzcF}Ph%!YUz2+9l^VB z`EV5|RJD@mMv(`S@J=;`Wzz>G=LaHNMK&k2AtI4 zFSAyUoPiJcG&(K7-!w8I+H<&LFfiWe;Q@9|^e)6e}oTp#`wF?2K*ht{jj3S1fx<9~Dbf zGz0fOhhjnCuIrQt7HV^|J#lRz(Z;4T3jD^KOLIl=-0EN&o}|sor1lL$blb z{vDW)k6iDCLz5sJi#@^~5)=?-4f8Bn5yBz*NZcTGJvZM3 zo0BOa1bTd4E^@(IuTyYMYa8Qpo4eiC{fG7*`Q5>1)Hj;XUs2MUzZf;DPT65xRF3aI z^z2K&dw#cTKQ7DrYHRCEr>|VNaP{hi3s*v}wJ!`pdD1*z48+PJ=d#dK_>~_q+|4$Q5u1v{$?H_GaP`9taN- zm?9-Dd!#G#9m{O|pKM21Rha&aYcBt}2hR;~U7>G06;-%Fn^c8cdjTn-trfUEN^g6X z+rFs>e7~sF#X=Y|h*2DDmQi3-RokkH3c6LvbDTsn4(L_objx&PaLA(4sKMdq8hahB z+{YEeG|20k&;L_NBab2O!lVfZm^Q0F!xKG{dvagAC5MUJm5+V#JeV zb10P1k0Jn1qyU==Iov$u9fb;^79bjJJTakqfUyv=7F z$?xCzN5kMl_?q=c)9FqLU&h$`kD76C)}g#bDSGoY`@+75W*wZh<)tdDJv^S;*O)=_ z2d7J4IQ>$g*~DW4p&0{vP;j&?$pp;=?*p3%1TB?KM0_erWBcH>=7ODgd*4U8jNE`S z&;~n;1zqI)mTtt5(AN!P80E~z{SaE^ZCd=R-8m=o=ml8CL8mf(jtAFr+>m` zS9O2rkwr=b3(&9h$;qlnN?Fi*?LL4gnvVQ&s3JHUg@}M+iz_CND+ukShB=aI(JZRA*azMR9u18GRj|OA71UWW zqdwu+?kMoBbk)l33z5n3GtCJ zkucj(JOm~;f<^dh6l87Wv$o~#8s-e*qqh{C&Lh^wcJFwn=BaVB#}s5#Ir{hN(YNb_ z6#F=(J3sf><(D2`_wtKRta(k(C@ovEq^wj1yvfp?eX<`944YhCJvJbH|TAH)iaqcSe(xnbLAu`2=-`<1oY1oIc6Xf&P9z8X}~zg*#vlZ3K}ZA>avS zH?XLQ;LXq{ghJkc{_@}`X9Bf>K)CqMjX3vCOb83HXb3nbFmcQUC7B6yrMx^4Cn3D? z3>rH0snQX7r$zdVyriVRcGhdp`-jdYjm+s>lk(Q9Papr{LYMnfJLM(U-+g?{*b{$w z_tYZq2*0;FMESADU)%HCmXkNed_8!)a-v&#MX7!?6@h)Kv;v14@KA6r(fejdBb_5U zFu>lyY$Fr$m{#L74ePNVHhOk4g2cW<_TgVDl&aNYi z&BDCl%#;1_o5{5C_|YAYzHw~ZiWPmkb^BRfgcZD!y=L=W@nBdW zycB`oXQ#a7C9AH#ot16p%!^R_`x0YDtYwOsjep=cOVg)a4?|v z&xS-HOXFHTMmByQ?Dz!2v$aJ5Ob1!R7`aRd4Jyv*i8M|bZ-7%8LP#|@0JpI#(jeM< zkqMC~A{Yc6!W(KSi?D#sU}i^D36I$b#X&6+9K!tMAgkbVR(bw&-_IYp{gv7+|9rUl z?ewQ=HvPU=pHB1k?@xN7aqNaHI3nZ?8~^-J_lI21>)W#`7EDX2SX3deW+5F1_RiE{ z3^GXt;8h1O+fMUah<&FJ!Hn-g9o z)oxd?Y$()&`sK+E)Nbco2zB=$3kYg7Q*^JU@FaIZl|lS`O9rqXNR%b>(%GL;VfRey z0AAQV@7dpvD$VbEbjgy#LrQv1eq~!yc50`zjNF7`l#KK3l-GsCLHXuV@4ME`sv4b; zG`3>utQpfQ>JuCdRkOCp#lhKWF`1b$sh#zTE*U8$L8j2+^bDA1Oj0q~S&ho*J*0s^ zP3|6{{B$9%=Lbj4vIj)6wfdEZJj${!RGN>SnB;CP6Bf|%GveSzM2N%+Hf6t zKKwTQA+w|ns?6Y})hlZT)%5FIRFK{yqsQ$Es|Ro>*xz1M9h(J2@!ya}#X6K+@4L2F z{q&j%CD}PyRYg>CeIZJ&kF7trMM?W-^LZuiR$58Ra??tOth_G2r3icQe?>YbsjlT~ z?GoRUHXw@if&_lT84*F*nL*48a<&2tdfB@ox1-{NP#O`o$0 zEA3M(4;P^p^W|iq2w(S(<;3ux`}y)cO!U-B4Asum-evX#0QX8|gL@C|R+^QOP-HJc z)DC1btG}4%5d)1sA1o6zw6a2A<|NFhYkne5%-(?SFXD`nm zP`fvxSH$E**-L*sAhalP`Ae@Ub6c11#VWqllRJBE_1q%9)r%q{Uyo1iTDHjBlE#i6 zU7?uPtbFt-*TMC-?)a^8$;~@n4e{LZhxodA;~dBYdeb(iFGM^kFUAU>UN+8>rP`%I}?HraGfEE$qM+SoCP19Dj=w!L+~o3P|FDum@!_3 zl+`0$gbhlxGbugQ-Z`-|688S`GB)OY{BhpP(G9E%s1TuYkxF1l^AQ?NN8>Z@4b#1?EN9mS_uq zSxR?H!QGJA1DzLE1JD%-hNSCIsx>_h&=&CgLRc9_M+b!>$qL;bQ6z!ZU=!Wm0CZ!_ z7Lp>Dy3VPOxO~}V*Dp#Ry*Ox5^7S>_~K53<`66B8YFyG5hOWQx@hRXNBYLG;4^Z{ji;M2?(n2g&~s zOrRi{3M$vuK7W6gjRV&lu6(q9@W!siYwuZe(3O@{ncbyFsdKnIw5)L0proOhg+1jn zBevBZtf)P@ZRBGkDr+l899!SBM`cm&pru6>%ba~HX$nwRq5?MO2&s#+0A^A-0H$XA zN6vf@1>ORCfM%+iE6~twm;~fqQst1J39-@ynh$d4XQE~h#vc|UMh-{&o0Esxhjc8? zIk$hxQ2dfp@_`dYCx}Ck0LmB^j!_jiOHEPfpc*uOAr5o^oAVbgKFrR#~an$*L)0=$jYzUDUs? zdhOyqUKw^c6sRIoS9rDJq^|I^q)L)&yBKFzW1Oz-G){V}*0#1^Z;Q#Mww0z6AP_If z=8T0_u7cAL)nd|@(f*o)nSpK+sDRjQjL1_7!fQt9UD=y65l-8+=<3z0@+b0Vu2`3i zm9fXzHhmmAPf#zYIa(=f?W6l0^no%Pb_dvIn9<2UAL#xVyrCXjIE4Z=?$ie|7`ZwT z!IcnX=blx;{0Mh~GoM&37jQVS&5{chR5uHai0FHZ#r~`!!^zrct1lI#&2{3m+c!50x^p?kRtU0#4T&{=6 zKP|khFJVi*Tc~f+ygLUjQoh@|^)b1->%HAWM@Nr~ehn*FrSz0fYbRj;>Fz9z27UsI z3PAFQKasfyx)?M=o{U0nOi~DG^%Qv!CIW~Lc38Tsd<-5!68sJ~iBR%deS1Ji7yI&~ zuO0Cegr+#O6MrC4X2rUl5s+_EN_sEyfqe4^BF|#X%tsiXCZ#%)iD)UJ7>CO3*evY# zR;$_}JPqlkBra@gJ@u>P!++T9N&$DxP)g;C+Ij99>O|bNQ*0m%CO{?w3!=?UMsb`x z{4ME7R@k73Z~_e^M@t7le8X32*u`N(;X0jgu?T@4pgQ2JV6-@z6#;o9v^=)Vt;87; z$RY^mNl@sV(Bq0oq0`Q{s%u-@1iBrhvW0R{PJf82Y+QRon4eUoFEO7mUB=EOZx_`O zjRNOLgEUu;$eUWJK^iAblV-u8vQSzI%gkzNEqmGNm&4*CN?Az!T`VAq?8tuDm=CI* zanM2@pP9lOwxlG-OqeSXy=~9M${ECKY!N2>f2#hXrOG34EIxfqpiLZrHBF+ z9}*EiF_uNgfOw*##>a)pA^E726_5}TFfoxOAYIgvU>l#6k=9X7N={B1CVopwt}E$O zoY^J4D7DZlIVrg^%DLPXn@}ZA}JWN)!J19S;G@z4{;z`fOa}+H5=a)al^meo;)1&1%}aq=M-yp zyQ%Fc&B6J}xIJBnk0vlv7|QJK+n6YCg+6j$P*5caryBek$l=B_-OsLKS+ASkXPu^8 z-^={wvw*qG%Jxi|@{2ren*79~6)P6ech&x>(=yXD?wV42R*vfw9}pkx=)7>+jlJD_ z^>#XY_v$X!bk9tzE^gj9ZJMS}nbJJ9yt5-ISE&&9nKtcpli!T%X- z+KCg>^bbx<<6o|$%wPW(zOz>B*|TER?%msa4C&m{qIwngsvMztk5f#E*=)T&bL>c# zRx@#8P0fS}aS8FI`T}wluz;!C(j4)ru8)vm{sZ9eDp=MVQ>MJ3pPRzJz%i=y6Xtz5 zMIg#!Z}o6G5q>5G0@WTOA9BoN5C{uIMsanORvMv}agGcP z>*%GJ$N=EB1et|cMkZM>j1Y>a6!V{;DY~-1xvF`n@@;C5;lp2jdgzP22KQW4PO6myU-LGP`7T>7CbgMrE=7eV@|O zJ{4WNiWocjpA_w*h?=hbS|HIwo-iUf5X%B0$B6`FDih^%LS;6y6}^ zvwUBH^c5HeSh&z&LM;X_CF_Wx*ibSd_fT_b6<2eU69FLvX;$#r&@kvaAHMkY0}<<& z$fawq{QmdHd;3O3hvoWL6mPkwdV>GZ@$1*iKs$JUq=0yz65s|8sx=^A&UR0xc`I&jG9n^^@_?3Au1!pNMu#!2za5;^rxNv9_J)Pa)(NTSnc7l~e$ud~t7bCM60^%sR zw18?!waQsN2}m5YF|{MGLs5JYy~9HQhUP6m$LQFjr4rytF#Q5cGOxg7Yd!G5CER3e zKCSD~_Rs$Qz}6)1q%BMT{+T^mzkWbH+q^Tz1`MU1EF2h0HOOANRCBWaXZ?GEP+~zp z*PpCeH11OEYc-qJKQM3As(BBrTYt}+M5&0!(>~<2T7Y&AX?~7;?3VbjozOVD6O~Jq zSTbsJO~j?S_L`PKdrguO>AF0`sNpiywO1`hHe(XcW~A%*m?US{UU>kdzW z_DCt{U($tR&ih$~=PonJWX~j-?8#&@NhT{5SQfzBYQUWjLa* z4_E_Q01l1$uumlmX)e3X5@dp_^%kHRv`iL~&5^O;lssikF^Nt<;NgzLp>75qto{pd zSfObFT|QM}pET}X+>iD3tD9Ej=a(D3G%QkLl|BRJRs}RqU=_bPrJf)5P>%!mu|{?; z+j{alb(s3Idj|iejxC<~_QLnovFeJ)KNYjta&>S=o_cx>E8o;{1fxa9fPu24>@-?y zRG1I1yiUorl($11q$Std1$%6G7{m|oHizZGATcoSaYMQBjN5E@%eQXlGWAN~-S%_p z)xN8z^=A1#eHzn!0;}Q{M8yI%%hy?(;WK=Eu-x>fx>J4hbj$fkYRgmz3TZ5V+i~?b z>c7SpEbR5|$d4vHgDvvIrh{xh3&q)ie{jEQh*;3gpoej-3~H|;Aj1n_Ry^q1Xf%vR z*oz_EfFM>KzABW!t2Fp33dZ4bYB*%%?ubZKpMnX@$rh{Yfe@hqBh8;mz)1CS@RzT> z_T@$n*yX`xpfSlxD&pRw1(&M~?-dLvONF?3AJI4&DJn4Zk@JE_)=T5DJAu#CJzhQ; zqvP@N7!n5M$;84qNy;X9Pt2z{Axe_ca>7(>c9F8Al+<@Gp4QXC-fcgs<%Jy;>|#XecuvX<0VdkRqGR1Ya3Gx^54VQ{%?8O+sD-q!%RFOy<&>4xoTA+h&n! z5fg%f3mG?_MmoL%&%6Q@1P4Z-)+F%}G6JR1SQAK_v4jT)a@~c*ycCu~X*5a_KoZ=E zOmr8y!>A~Bio+cdBAznuuj(Iv9{d5}B%F^!I?-?Ee>G|1sN)TL&xDB+J9hdsJ+r9! zZVZF zhyR5_SmmFh5I)8vn&I_#=XQ0c5Hdq3_zAcfq}+i(k^n_Zr;wXK+>@@wuXF+i!bBy% z^|g8_`eRC`_}IMpqjl3>ay1mKtv&_4OC4>xXUeFjYpS0PbLV^g@~vU{ac84aKKp#* zyzHd!?TPvhJFmP1i6)Y)*NDL&1PKFn8Z4Ys$d(L@8JO?2qrn_Xrggrtd?4g8I>pI`vxp zqv}WO{0SeE-Da?}0J|~GLFtS{Ci-7)I-EFRM8NR+z{ZI*4%`(!R1Jx6lqVhwV?HP& zuWhOr69bB#NKuPZP`brv1kMlwz&L$kT#4w$5V>OFO-#2o8RbF<3lf4jsvW0eNQl2N z!JCpm*W&-0Jrq?w(kXgnGAMclSW?&x?9q=rluh#MMp;f>0^h6bPT@Vcv5G)pipOcz z9I$a5O2{~lPbXs#Cg3BC^O{tWHmRRvoics!h?w zIqJ2-UQtbI$NaSAW7JPXV2>SRK*>a$k;o^6uhK`cF@q1x8V1l4_6({!BH?_PjOZ+79HQd21A=KgKoF9w=$r`7 z4g+yb0D-y_adj@|G&Wwo9gQCi$w^T6b0oJ)b>DxXb#6<74wQ4mLvirB0aXI{Y+$F+ zW&?w@HWm1tZkYV<`HmS7>&`F`N(EdXKo5u zkjH*vK@weNEkBp_rDb98g67D_4OfKW!kK}GLtsLPr^vY>1N!;OFvRwS;1L9nRU4cH zN^LTet5LK74Set10G0^)noJyGMx1Rced&IONXsZl6QOtp#A3j}FHgX|C6ZqTICn7! z?)1fAeA!BOH@fKmOD`@2)D5bj%!R_d9vLatSW7q@dc)apo=b~cABrg=D!Ad?gLvq+ z8<13>Ir*Rll9@+0k|79|szLE+MZ!%fLYXvPrxc;FZ{(B*#Fpl^IDYZM$wyvzPkl)} zJ#j)}@1b*lRy%M=U|4fT zNBtZ6CY@O60Zk0cNJ_~wMVK#!h5Nj?w&mdwiqbsC3qY}OP;h!vLu^dabZ3t#P#{p0 z87pT~CSv9OppiTQrEaiv)m41y`squT!j~?UFI^Gj z-3%|N9E&5SAYDC=J%8ucE%RIO_;mIcF%(R%q$)!11JLr5faC)G28NBOva~)7e zKF9A5Lrn3mMHm667iBecuf>wxS&IeoaHJ(9I40T>7a0dQrHGJ-6ySv+c}vF&)9o># z91=PuMS?#QZp}_Z%p=Zu9*Y(~je73sgGbFBkzv2?YK8$s7&D#NyZ1!9 z{oSKS-=%SqP74GVWc7zas=D1cdvqCRm^mmgBHRrB1Hzv|gF@{<9>6%gEirgzv|@}H zqL=jrHkgjj-iT+f$GrJwj9MPw)#?JMfrmc(tYhNWUt?e3A7vlxrctPR?iaxX(c*_~ zL19K@Aq|C+Cy34P>v=M2k^ah6J^DlpQb(Ff8;E}u{_E-K6^pKKX(1J`-`yfOFI4catR z^jUedDJt-)Z=g0}`K;UuoiERoL(*|5WKoV8gR7m1D`C*$Dj$dBV}f4WBbr6?5qWk2 zADC8mg^x@wi)ye(rG;c>2f}Xqt~wmG;liwl?TEE3wO7xPTLXeF`}w$R1hv$$*|jn+ zZ?TItPFY<}9LlLk77cL@4jZE!u0&~853j6Rw2{w}M^2v~*$4mF?|opUG)#LxnPJj+mLw?)E+ zLA>0Fedp$7g$nm+=QN%12D@HyrpRoCvQFk=r{=jYQns&AKfQcO{bcoOmUQ_NOIXvM zSiWt=y$_X^JhW=%!{u@ft2-Bjh#9}cGpxUw>iWl?g4&pHmu=jf*w9;cz!#5wyl~;i zkL{#Czv|eS-Bj2*R-AvseCSy}!&Sv+{?H<#9?*b%8?i4mBz>bWmQ#kTtE&w?4Y>kU zU4!pE%_d4L4upXuNftOJ!RP??Bm^Q)LXU+oI^2=;R1?bOOq# zoB=}yVtwg1esS?Q9Q*;ZxHNh}+-ddt3YN(7LI)H%2ZXX5W>x>Dp0l+_ROMtXMB~(6&8D*1gGcg*Ro0$S>j!y~GBNsQALW}Gs?iiAu?ywWoFODZT zp%6Bd0?eaO+`cq{2th%$4{Zhc3@{~aVoKe*Ejf^w-Lq$Q z(t$khPiyU-l-~1`CW+gY!jSpSl9k&$rSgn*7ExqX`gg zP*o7Fz7mQ&G6xJkD^X7r1(nW*HBbs5ZFr5Viu1K_jqJc0`&J#$n)HHdlJqOl+$`QfQA!(D4G~*w6dI+-~_PMt%3^-7&p1!HR@H14nP)>6T zp8C%(zqu)d2X%<-PrqS9KKqyrKS|@l+09XJqTF$zd|YM<|D^nQel82#;>PiP_^^=W zu4je0uViCq;3G#fLk@Y@I#TQBG|YFZXD+GVc}hq<^UPCEM+6~+^e>^nyNM*c8;obl z&FiQ;Y=TwA@VtrV{{ju&Xy^Z@n(ajj{V#1@ahxU8s2AU1vHjK0kFGkZUaVpXr_?X{ zvpB_6t-iT;>0Wi;KK$`^4J*MfZ1mpcdnsJhftZ7n%2vp5F|c+NA+mlLuHsq31&%85 zK_adtiU^ZeCi(eVjf!IMHz@uqlg%NvASECWRZYWIro=?qElPMqY(#kM%G3lgEbrj^gYXhKHIjuzGq`mlrV6p~@v) zzxy-yPxV{+tT-{QgmcLX<8tL3{uY8AOEp@YLb=di7|FS$HiQYR$eEdumTF6gkFi9U z1N?&|p|m6~7Y0lT@osb$BNrRCG8jn^(h9$jhECGEH)1&Y_wL`fl0uiw2BSq=BLl1s zqb<2cV!vmv8%DfV9XRM%ok1RSbnu8*YbMj@mDw{g+fUNx_5Es| z630^S=CCxAatJ3*^kLXt8HvjpQ_ z3$_PS#;=v4xe&wU=WB%XBZvk0a}@=IfPM$*xX6mKGO+n_AW$-j!SBW^D@am>Czf^O z96uI@=vJ2Vl6u+Sz)LG2?$E~|qTB+jJ7UPtqg)a1dM$$;5MP<}&F~w0fRa$&^w&nY z;l}U|_+CXqL^9Oz_*}bi@OYwyPe_Z@P5y~_5!9r+;0%TBrs!?;sgoT@Z07nIQK7T7 z>wo%E#PufpzakiiswIMvz87MZ#E(EQ9~NvH*VZ`4#KQe1{Eh`}P%jvK6+*COsR*G% zWYR2_@sNB01e-Fnz6}KX&vw*$dL@6=qGZyt)T$nB( zV-Nd;VjtZezp3PS1YVPmk2GHM^--2;WJDNJIyEytmC^C?_2~{s4KvQ|>`P(avkdh^ z4@SG%uwesRJDBRTD90aFcWE_)tm>ofXVr!7dOs?&!P3FVe5}u}O{}ACSJEf2Qy9*?av=l;ZynwUV(J zGq)5q0(FM?pJUE~UKzqNm&G4ZY-y<}7+4erDJYQ^3{ciRJ#lb#%9<4dx~~T{kL(Uv zlrd_>&^0hQi3}3n$a;Dk;H1UE2bye+$%xGW1}7YRBop~?4H2podwTJe$@KZuNd3CbamZy2IzIhdAc4e6d<6=2hxoo zc|!-B3~9h!eo13wJiw)_d8v5yB@KH6V+MbO$n_n&3D#SEZv&!PRQUBf4vNE7aU$LT z&Xit(<^4`?071E1{5EeOhq(R*=@n$<07*zavjHHa*DhRAo7j_=C#I&Hc+)RBzk)y%=RuI({UA zO!M*SyGy-s@=xktw?zPmA|mSizSAc$_C2bJBUmR2{at+#Mi29Xf*K2w0?ZbzjvPCYBbkUYin|V$v=+=qI;#pb10TNj==x9B zxmNVaT$Dd))7AsQxfViYzV?Ivs+%vLYF}glv_(|hL;E-Emn0R)$r!7E3L&AObGT6K za)yNjB3&MZ=iws8CAf|Nqsae*;fUiAG|!D+_ywvlp|c|g#upwSBPdMbT8F0mP~ zjeU5+UHzyl4e=XlAmN>aChY{}0?8KS=YzwU0^N{JhNzYa^eXRAAiNOk7|M&{Fl`OB zRmA?cZO{(?l5pY6qtN*F-BmOIUlyW0s+G-h`qcmyaYGA!@pB0tC&_ zEr64V5R*|2EX2%lWl_|Y{IS-MA_SaktRr4ow~Rc3%hoXyukMtq?oqG2!j}9>tMas; zZTT~sOl7&)GMX#yB0``KCBHDL*HTFVxGYgpfC16~F?4t}nQd`+(5tZ~gl1_5?-GS! zJs^ISP=?t(4)O5&Zg~1{x71VIMZNUnF5EyUD!`K7VM``x)1SluKEz-_6qF)9bG#oD z2U-q=haq+e1}Z_q+ZjsQU@%I$qQ9N*8>*2OhulRT(T~@A_Dxm`D?EHyuWW_6(^|{9 z>iYGnda|<|nVgGvlXUP;E*+EsVFf`8P!cKM6l5m(1+G7%2HuX7g%%x&MOq~}P6H~h zppAm@6WKEYE*hLA3|oEOb)^1Xy9{AZyxp;l7G5i`ARm1D35)~(D1-pwF91{6k8&c3 z-zZ%U@&LsU;o#N-&j=wKFQ&jV92#^^(7#MMi!xq$>d!IR)9Q=jQqiASTdTY#QxP9x zZ2e7Ju-bQclQ&=A=1oYWV9FG=3YnO{0b_rz?h;oq!0NlFLm=E>YrKc5P7y{|5Jk*@ z&RWqK11M@RPH;yWxaZUza9o>{`%k4+J>BuL=HrGdJcCLCdV)8~xY(}kSi&*AwhpOYG60!+WxP(ObSy9VK4#pOMi~u18;MP+i+Zh23 z%tLud&7tkUnguTAp-rlgiiFNodukr-Nh)GY7i~AOfEy9@yOyS}gbm)>bLyX8m;=#Z z*5>}bR}2`ne$a^ZJNqWpr-O-u)b~J<8GcGP0ioqrGuQrnaFoAqM?30a)ne?l`X-3QCL0i&OGOi2Lq;a}`QI`Zq2HGS+W(7GU06mIS!WQs&vN8!AC^RGLTQg*G!sHn03i6qdUsg~?6>JmZBf_{* zGmqt&ye+LX-TXW)15p=6lcowB169L2|4!6!H4DIdnWHY zGGOPj`wnMfm!0zs%uWk3Z)W1N`N5+coD|rN6&ie3;nrK+z*Pw;r&GAq z=FR^Mk#`?Z58~gWpg=FyfbvmJ%-)GYZFYV~J37vbS0Qm-6$3jmR0roH6C`VqukD@Q z?k$3Jd%J`fTFf32Cyas8m1CDKBUEpxx`U0r@DUrWKKvCJmM-fR>MF5Bw5hw;#Ey^E zy_$rL{b3~3jUZZcTxGIxIEl0(;vQ+W=~58JgE6%D{+|{R3~@J>qK;09Iu$jF3%hKW zI$TQJlF0Xrf#OJS`$p{=`pGvUW7V^P6nndmDm5S&aXWY{l%|QzbFpJOE)}xEq0S~G zE{gE9kQN#NO$9Z%6nL*8L&MqIhMD0anZRWR=uB>H$s$-#bQ65$DIJZIfa}Lj{6)Ja zLX;RXymc+V3Dh@C6Ou*uBAlq2gEdC%o)AGJ3IEBFU`M-05+OtYv*3;+A@f#wl;-hG5h&e1I+(Q)HsDPNGG)qnt3koyCCJ(x(?^P@)TD#@a{meOT_FCsc)Tsoz zm@~rWufD``UHcxT>ZDVqiEM!Sx{uYO)hKmW6^a#*!5$NdabXt%M!+*LjG1L+xDHWRa7EFb+mlEio*dQ9P(aK!HzEM4@SWYPDi3a&eFB zbXu@s2r3;H@=~qpXaj6yStnh9{O>W8L8@)62OQ0WPTXBrj5 z$~$y`UZuAk<%&y7MT$~-YF1iSa#9?OU7^89o>$x%7z~9efmzGNDNq%uYw*gZYJrx7 z5=k;deyG4B(h5@KlItvQAQ@4v3@`L6$ov(DN?_1nUcPar#E3+3|HYXAQ%T@K+r}mJ91j;Dm zAt5Efvw5G(1Y}+y!)cTuILtJfutAx7yZLG!-v5m@UD|>+gsYUAVsj)r65^3=Zw?OR z4jPyNwZK%tO&VQhN=c;%R1aMWlaXdH@_k&o3D-~`jItGe6 znghmS<^R-vl*^oA2UKxJN=8UHj&h*p`#~Q8bW(S=$j|G-IWWFb(KIlM`0>F%g?Mwu zIWNYkd}yrt-CCVh#FQ&%yx7CTH%T^wxd)d6 zRAFSRZi(|i8$&y<)Od!Pqm2_kHETLyX{J!!%OvQSq_qL_MW(v-q$w+8u38Cw84&CD z;7Z|EU$?H@BDi&B$nzl}RH~KVxNzHWjIu5kX)QVm=P4bnMNApr@oMyhk6vA*+0daV zuX$$7gHKhbHRqC5B&j-$p&)ZdUC&KFzSL<*f9+*blLP(W1UTN|DwvYbe!wjDsQx^| z0%%FDUQswu!*GrurA^|#01EdPC4&e+T^`NoDfGEOu%eHcl$SNS*QCu)?JgY!D>?+1{cNThv-Z#T4t-1QxW^L8#8AtYJ$nuW8&nvj z)Npo5HO#$4)DFfz-w0|a2-|s7_;GV6VhI_t^Gs%NHF|=n^&sz9v`1-HNivLsVoXL- z+$IP+atW3~6-i3t=KgL>iSa^+#c0gQ$(j($ zSyL~gO#++tuhP2uANyZf*L&UA)f?RAL`Z9U535&p=8)&DRnOUL=;qXBXL`)IgyhT(7t);${e;Hpoz)Gq8jXHLsv*==oveD=cOZ|6lN zFhj3(kF(u+ipwF4hU}?FL7O11-Mf==w58HB5H)@WA?TlAZVJ+u#!UmI)y0f{OAJ`~TDA)e^Y8`0Ht#macU6=;=1pyLXvRnEdp9fS21s3G z*KLr{T)3QWp}29<7f>Nm*IY!>T(Iv&Hh~m0?(BgmOv0zmepDY4;<&d6Oqzlfvbm~$ z_-`(TGA9>9S)tk>9%UJs*>9g9xx8(f-L6aIux?PD&)aA$UL$ZXxm!oPjmDDiC5!7C zi`uS!_hlD_g{owUvp?2qetPLESYsb6);Ny5PLS^idd*FB@_`_LA7KHSCIARAtg<;I zlA9!e<1LZ=O_<8~lM^2SoG6;| z*g6^siXAMdsdYzFS8bXfdt<%E55`(hhiAWr`};@`!)sw3!9^*+mQObYNSb7BzM+V!4B zJC`i(S z(l|*fr@$(N*5|Lh_-sz;?h6n7omK7MqrUgI>*|?}az?;=yMOj}Ku7e`^6BE*c;=s6 zmHm=>@Qbh2=Z?S5#$O(A;%vL^&{KP!BWg5)x=mE4SenOY&*wmN6+fWagRY<4LRa30 z=t_OSNp0V|>AI16GA^MBZNP8fC>35SLe1N$C*u+t+W7OgHenR!d0%*z`CA>g^ySsd zd0+A}E8YWRyk_>~b`(aU zT@H7Q!fp@>EK%JtiugYG4`f@S`znHV480D%1BY6F?LTYP%O9#8ueE;D{OSWQe7TfO z>G(=HeoCEa`t-Gx@7+C^8GGa|X&%#d0W|Q4k>lFnBt_ zB5)USd@Tr|k_?*`m*2=bj?P+{W*ixzDaj5FSrN{78XDADeQ74{lvEwswSYa+0i(_-wIyuxA6IVr^xk@A$jPl))OX;L0T;Hr{2s{3Hsv7NAVdXafooYAUpq+Z=u7L)`+{SByk+fpU%qzK7i%|< zI0iWn%2(7A{sV2*wYPfjVV>VbJ%P5(d-{8N63)Lki;qFi0>kgK`S02{H-L-rIp?Rh z;Ij68P696u)z1~rH&Y)P6aVG`oDScu(fllh^I#v-wi%xt+!ohS}6{8lqeR zGEZw+@GUeXEAj(GLte=bZG^piyjowPA@2(sR^38F-j`EitoBxpqN?>I+!yVw2s*iK z&pjOXg?bt>AFKjK%&lyE%)G?700Kyd{%z=k{Kvd5X0FZ_Pyem1Hh=lSO1UaIN zbDO)Mn_zdhP+Tc5-J5=!_K5$$Yg)VZ6E)NkciG;M;2>Vv4jHSc|IBR~Ze_;l)S}p6 zh35Zq5X7B#^$*XF&d;ZSGbvXOKHH``Vm|coE2vz}gU=9#_J+Fqxu@`Q@S8%Y>9OQr zjxYxY$OfQU;bg_gB&eIf`ZI_t>9}(6vhw=0ppDYBm=H;U?;$~f{>WCL0c!DQ?yNYc z)5f50y8ojvS9xfU)}#byQvQHPZ|j_>U_SjHSHpr#S4_VBCe?~vofN3Whg!lIw@G!# zpJVBxg?X-!a0KLF-0meJ08m<@MDO8KfDG3dX;t*$$GGC$O=vIETIk}ECaaHfg`)sB z>I)-_Gys7&iaYd?buNL;%jrQ2Af40~;J_{3kI%i9p_>cDy&5=W8?YK70=zFU{s6rc z0VW97#(tK81TlrYY@T2n3ZugRT$O;&h0__Fp#NnKbEs=QUZ0IDRXqodWw%cB2h=a5 zDPkS>{Txv{wsShe2?5Gthi?aEe{u}u9pM^AmoY%NCFc(k$e?}07i4QauYRgKe?Gc! zmSw9?bE0IN5%;s>E&`7k#9(ibY=x5xSo2zaFz6Z>4Hgx6@|pt((HrAQYleg! zfIGEotu3niY)wo?s#-EicUw^op6YkQ{wtnP-%>wW$$Z~m%AD$iDfK&^ed5Z6RqxIf zbFbH^Y(vf6v&YaWKsUu4UZ=M|c0b2_GrY)mMk+-nYqjWbkwdsPtb~Wc03R;0PRNQx z>?F1jf5F!;2zFaS95z%eLg&pkUtT7e8>qQ+0#~~3yCy6E3{@W{v=Jwe+v`V+8q9Ll z_6t+qOv^a5{PLwmH(sAN;J)3hL+hb>-*};-&*a(c0X6H~E496Q*IfD2s^2dYbKB33 zUfMRccbPuwcM&l~6%ZcN?GkY?Bhm1=T|)mwt1nG92bk^Qsb7l-Ao8sO`x1M!86p&A zRC`S;#?|AF4T)ab^m$>nW}OnK8=Z`c#F1*tPR_=Nl3<%M+qAmT+;c?-7{_-_B@+!2 zOp#g@VWA>nArjUum^3uVJ@U}{#)ev!)qZ}(!zI>vD+~XrUj5?4yzQALW6;}^TTU+= zC*5TTyD@cO)#Ta#QBR(G#Z{eFZew;9%Mw`XxPBRHb69J~!ct<~4-nPBAHa%3%@W{^M1Z4+YV82?X(kfE#Q|}z z1=k_>Zlnk(KLj7@N?0NgbabbN{A@`}u_naFMn)hr4uMK6i=Uo(R4`71k?6`cgcZ>p zH9{2r#zK#;JN)aY0sT4WsOP`_@xbp799X-(Y}%YDJDiU<{GgmZzHi5|L_@^E2lGZc z-TZU$!kA?jdXDQ^*I1GCLHSV71X8wPEUeR+L=!5tNagti2WW!RN27_?1K{?9Ce-XU zG=ZVI8%+!fEUvfGq)S6ilT^DGO;E31qlp)`1{rGHoP+(Y(}ey4BQ zXixgkp2K+rc8_`B5j)|?076FKF)lcWaWT5rR+oyrc!5hrOyE`W!nDgExu^F+VkPTf zo6O>V28=ujBex!L*m!Gj^r**{*7uDrNJw+0hx=z0Md8#vIiS+LYX%?MER{9=^>4o&wDS3;2-Vlm zxoU0&e1Qwk5yy~+^fTO@R?51M!VG}pM3w>X8Q|Q|jlb>*z*vj1CvmHF*K-j=w~5{C zwry^<-t^(3>oJYH?rrPaBQM$I%np@u*y8HGIy(#S?7NWcWT9bEObTS9>;pYP#=sN zgPiz)SmIYC#UyGo$IZ=e1dd`wrbEObmQ{}!QO$DO&u#eqLe}vmk2HScsfy3eA&;Dk0RM1!udQBU43WI>-`lX#+e) zihz(?a3NAVOcHIdoGUSdF5lLzr9MdjbkP)(^e|*T9~3P1oL{)=a0enz>MVPN}{ zZYCX?7WNPLwCr{sla5d&nBWbzM9LNRLMq&jqeD=VWkC#t;w1(Dz zB&w@8g%W9$!5Ag7H*YgaoIGBmwA+(AM+vb2gA5ir@dmW0KpdA=al1ISaMj;_seXrG zu4uXaRZEz7<6 zhm9ZN7s{Y%f42*lO1*I+;9WU*dllC54sVAZeCN000KVmz&;s~0IqAk9HvVxD!k?Nh zszxJfILJ>5m5HPo27jp-34bXvk7R&Pz%h>t9~cv`Pmwv3Gm_E_ z-8P4kj;M+g>3mT69LzzIw>v)`DFioJ=Cl}fM$V> zTpJC=Z=mj?OX61y4rmhT2{w$oA89EB6dTqR`7Brn6v?P)_YrT5t>)#5?9v|jb4);f zo}I)z9Z?5DjW0L+cB;uZ18#Rk(a`{%SrKz4CnXdng{>kmhDrz7PS-hqzV zHzO27^9t*3Olr=x4?r<^Q{8QIF#em{7gpDy7tZx(>70rT4J{7m^ zQ}c}MMVr28jy8l2>0&m#c}&l7*2XdFo7C`>E}A;yTbyTfq~ctVmW?U>|AEVPyqf#^QMkkC!Je8@2zKKc^gQk#jiO z6Nk&1b)T@#-CRl%MvH+socBc=6tly3QeT6yReKj!dWf)4vw3@sSL++7_cgE~Gu%D@ zWu(2q-wM8eiLa8kX8=9n1E;;g--rN_P7bXv z8=`yKy6gk~UYs0SUz{!*+?1o5CR$(4l}GqFV?tKfgFn! z*a@m4&;uOTs6U5I9?wzTLuukW4DI=y-^AzTeIlafhWsSwV%`_?y5{a{bnvxk(AI*r zb9#DLj^On=_*zh*Q(B81x9wZ0bHY#ctrWCVA7jRQX)XABu@)0=H)g{;z83tw7_&|v z-j~*b_r+R--C@kM7Q8RkLOTgSTdIVj_2p}^!cAMMN#bsglf$1shy2BJoKkp>6P+B| z7`Q){uLTY}`W^!;+E@$xBddHZO0~6+FWfRO&6i8J6Yq<8Y5b}6#k}ZU*jYn_2X2{{ z)|YN4>WkZ{f!;b+eM#}>=ONBVtWbq;1wY01Ect@a)35?Q(Wfe-8S2Rj3e;N~3#$Eyb--a4Owp!jf^8+gZO( z;EoR{oDa}oym6)1@~o?gebO3fK&3hJ^PkLbD=e6ir|im@QW9Pqj^JHPB%O5~%f;BD@wJ6=e*Kr^lh&G38`ULet>aW-gd?JjIz*1uAb9vqE zKOW@*5<3&Zlf#n}QCliFke9g&V`09iq%QG#U&gMbVUWyd(I%u({7TcD3P{bS{(1I{ zh*UqzCeXQ)?1pOt>U;I`FS}c^M})^4r4@$Dpg7G=BR_FLE@&TPj1$6z6k*Y?ZSheO z^10y)wUcQJ@nAlNb-t*=14T#zN;c_isGh=u%NJ91c?ZJGVc_#Iz@=?4tbtuXkVkoU zkcAfXk%gh7T#*DU8Icl^LfBAvVR#a7&yxI5j0XiG;o;)8Y~W&1;wCIgMUrQ-I)8oR zH+6bR>&TQ0N5FE^jL8+PBT~~HrfEG^mToSa?<`zc@<8#L9>%zd_hllspZ?6sP(SLo zrX(hzx<`-dgqWiH`sp(^7*2v`EW*Ps6L^ZjTmc)?z{4ipwke^6ogg7;cP?cW$zm&1 zLP=VTJd}ZlGtmY`RMCsKK`h_O?u}eY+UL|ukkCvK3L|8OsaVS*B2+qP5 zlO>#d#r~X$eTa$q#v=ZOABjAF`5Hac4QY4hua0#^vC*a%4?K6sXS>h5#^Li#hLhnr z3mq|z8Ts2EdHKZ7hT&rdyI0n0o&edvzyH6Qr+a;!UFX@cG0GLYI{)r8v9a4c^Jie1 z3vS|j%DI8#bv4Hvu3P1%*eQU$; zMSc-|Ym)~Di`|U|3mYbuWf-QJijzv>(*67j*ugHeFd8cRmX-xNW}2cS9EvnWl0NFb z_F;Ti+l1b(Qd8F*Y{U)*pdI%1BwqVsv9XSCOt;| zIn(&;;a|Ssx6^n2h>>^ublaF0*FX7-d;66ZSL233WJVa#&qQ+B(Va)d2F;l-W+4QY31LHh64RXsm&>iT)P0~5n~C)%<;FPKqLw76l? zszBc(2LCj?1C~CN4=1D(L*s{ zn6&Q#ne}K-*p}lcase460?c}3d57y7o@tJQ!R@*$DS?7DV?|I{jiKxm0N#TF{C$mt z0&T?2h5S0K4SAphI4ZPb9SqL2j62b~pGgm`{ciWy>Q(Wq{LrdtNA4PSjICCOi<761 znlH~=-tqby>W$URNLgbUS(hED9c7c&&AoZkU0n^ae2`Nye|XM}Pb=>WsX`um1#D!L z7N}QlZl{@xCvI-1Xg=8IgXOoRy#^<6f1-qE2@z7WT>6DWzzGf%vGioJjK)zxk0kda z&u?^;xQ&z%Wc!9ZBu>R&7@%NrN1&{M-and)04RB{H34U7Er2VH(iC(JtV0V~;w>OU z5J(pfjFaTSI57f(f`X!gq9V=7!3LC<`nlaj{IWSz}Y9rBa`tSmToU}SdT z%q97#BRYQIqD@D3?0Pe^?FHY`KD~N7D~b*0d<-vJde7`{FMDXs+Cv|_J^t8(BUD?z z6zBN&Db4+_BU=p4UZ z-xVhpInIh~{3u0a4>Bt$_mq#H&HvdO8Er3aj;)Ex&7ZZ{GmE_il|6f54u*3dyfgmT zmJvRNmm+8u<=fV*`_+-EK1CIMQwqmpcijB(=4HuZd>8SbkU)^{ao-+#dac{j^-t1M zSeVfE6;IoBw|%;no(fxTelNeozjrI0Akuw;W_#=Ye7*1q-=*4f`fjcLx;s2yOV7cV zu=y!du&a}V$*#Z%T(>x@p$CxPMXTEs1)nil<|kq6%FPsf=Z-6-*gW@V{HZ7^+poQX2_c&?JOOWm^dK4 zupv)XU)-R+cRAOm@5POq{;+WV@6@3INV_x!IOa~1%31E;|JZ&VRW2vZocyO}+84j{ z)l|@o<^+5Oc%A(C9JyAGIogC}$56r)kP+I{(jkRFzTnOZ1*ff^Zs_?d?NSmtcuhK7 zYM#ahf{)QWZWK)lf_OFMAu=crhZt4)hWee3zgth2*G6KPY?|j^rGB zPC^{jpeOL;zyOoQ&%!0=Kp#lXbUt#uRO%F)k*5T;G3|6ndv%WEXBLA8;KhLI1 z(4)LrsU=Q_t)KaX}G3bWBugr3_*^EEVUvoA7g3Kr<&)tFR?+qNC$N+B|l zQsGS|Q&$Cplj#nEwccsKI+ zFW7}rGNneC?BV7>T(YJB6Wn#2 zar}vKJSrDMRdW zz(!!gTC#ay(juk;)|jGARKb2%lp=(Y{13D6SU(i(>N_(1TCC*9P_fiHabL%0x3K!f z^aVNLq-p&dvv|kN+wPw<(nIpc()Y?|Si51zaV0W-d{Me;IAkTPqA-V~BR!pltRT_+ zxv&lg8lI1&bB&Ed8-)$lD)Z`aYI>3l6eFAdzf<~tXmRdic}2N9bBpSg&l(R-#yaaw_eW&cRu$C_B;n>8a>DN)uI*(-FNst z6w`3Or}Oi{^f^%j7S@ju8<8SBs7aO~(NRb(l8{5LrSecnm}zv@S|Xj zwgjQBg$MvNDpP=93Or@qo+1cTn#Zq(Xw`C4Y$w>;ESY64m{z@@zxwHa zzN1jLqwA+EUHjB~n`X{_SUJA;gJr)mn}Vu0&U^baXqe+h3>#kE@s_%J`j{b;xNH(8 z_vTtE0$910s`;KV3of&y2*l^mUd2g#KT!6ESJVMC$bI}d&DzUXi|6(H`FiNxvHbfp z@jV7s@1$LI2;bu6$3W|g_>>71P#r!3?fis9R~#WnBRx{|0f`V0i7W=RK_q{8u!z!J zR;#lpBo!x}F~lN%)G_(U5%IAjM-C5_jto6~cxZba6kUo>{zinC5Sa-;;q=n_DLVk) zC^SQ|Byoxf0Th}P!a`&cj6B-~5+M(#VUD^5nOPHi6*c5B=lrvlhyZ2?u#m|2db{hT zucy+Sd}!?CFOlE_f$ysF=J8u>^q8L%>D6X|u(o@fn~;O0%FZ^d=H{)o{$jlAOUhl+ z-_>^0s(nvq?$S-z`K2uKXlrfQkej=^ze^~`_k2M%1iek|&C9p6@yGYX8{yH{+YGw- z;w^0|u*z6Btqs`~1kE?r^*L6b=lAhdHct0^W1X<;Hs3f@@x#jTw}St&q&Ut`SW!8c zQ|B?FG9ofY-`bb21UyLEh~YE-{uWP5g*w!G#PHq(YW$7+BSTSzRA~osFy1gsO}M!S zRt5O3Ztl@@1a&?|cC6;_`XAQA&D;N{K05!R4`vG<>+)Xk_a2P!EF!XCu0ez>V@qg@ zECQ@Yuoy^N1SiH>Lg_#goY2c*XQS4^x9kS=!)|Dy-LQ;y1JBJ0hVcXj9WUdTwi&7l zX4~z39OVrFp~6Pi^RDCrHyo5`g;DOo?iLIQ(0A^kQQtg+v*BHN27ZUfAD@#oY7Th~ zr57<=gIKtno{j?#rEpIb4A^wy2y1w2e4D(V+rNfr&qe%zhTeeZCGvc1-(JE|?E;B_ zHYG!8loA>9$%HPL1*iiBmyXv5iq{AFz2m^QQ5kb?koaX}NsqjB{rc-;hYs0QH)+(z3qHH@VTn(G-+=ne zPjiySCxlt<8#h3p@r7 z)CGh=Dhr+>&V>{y<-yaKw$ArxCdv4~cQN9vvw{{s~9=R{*$@j7K~M z5)V-v*!!V71d=ktApRJ^-w1HlbE+^~Jv18t_=Ivrf#_OGqS752g6|TM4w0Oc;7D{t zN9uZiJd5YCiFua%B2a{jg=B?t68mvGl!$~XB`Ji`sPHgFG<~qZ2f?rEMfLK6)6J*9 zxnz)hi=UWy>eGwNasDrN&zU99+q>n)o-5bm?Eh>~Ba&+3M%JN5Ul7W532?<8|LIfmpbBM+;7Pl1+ zQ`afAf(=qaMnxvki5+N|=v&?LxxIM@t%$ z>Wd1TCDj8&`?jG&xBR?MTA_!?IXp@j5qxujt%a8{l)bdP!IydOxpfbStkt_x3Ai!9-6uH%^KCiym|Ne<{ z_Ktqw-#_1Vb>oEHBXiqoo?{O`;+#HUVcX25<*kNeIx&aq3jIby}8v)>Zwo&x6O|M+A<<$H!m8Znd zUdbq-5GV0c>v$ zjZ*vpEsKStR~8lJGiH;FgfE{Bqf1yu)uxnzDbWRyzXb&A8W!C9 ztow~D8*g;qv-~}i`913&nW5N1@>%w&Q*XK3$|u;Df>oH#b3~5EM~Xz482%TOQo??x z)R71}+rX0sABo1y3(aHD(3i3ITRA8rKJ~$A(D@;cIF3UVt8hfqlh*~-JS!rO{dqh+ zk`EQu;qKLd5p^fWv5kR1_h^;hZ{z@kk~<4 z>U;)fW;Wb913q$5xqI`e`C}_+ytc)jkrFHLAz~*@fj=z>;|s$+xmP2tDFopx0C)oA z5OB5d3oxeX7k#X}#tmeDQZz9--Jdm$#)$-H0?d-6R>YyZb@E%=U>zb5yAc-?o)D2h zS#R)Az`g6E&q8xe+UOG3?5VKrYt?O>1+0DPj-M?Zd{>;wbn1y%-?#}ub-l&%VQbl! zhYuWl&S}l>pMimMN!C(WzH@Ge?|&Il_kO%8Z029pw+55|(4Ki@Prf z43iEy?0{)PU2=xqDr2YF!>rI|G%qO~45_+LNjuVTnxH_LI6-}{c1BUjefhoe!YcYt z9{01=_bx9j9GBZzJbvs<@my&5qfrToQ6Vu&v1tt>?rJJn6CRrxnVf7x03H((FgA-g z74Z}<}LTDFQ*dP1md3L zQ%V5t;1riFGTaxt8~Y9;5&CN-Q3g=1H9n5FL|7ExsEmB7KSuSm7=CD~9$*ylD~!)L zknRpo%70M(o(*PegH0JMGc-DPD>JKy)g>V*eu3v)N?2 z6rOCaE8aA&W9?;HovNEZNbz_-d<_E+C*jx$#$_pm!0;%>(Xm9bS(isRMrof=Qws(t zHG{qSYn;V*_do$VB*yC#SstK$OgkK(^1U4!Lw-AhEWp=b@Qui@B&C`mX`n`)Q-_qL z32E~oiHs!OQw6oLl_i@7#>8j$%xZAXncT7_tu*7ytf1hMIQz_?5au5^-gZ|nwyJ-f zf54UK6l;$?E$xl3#??e7WnrdpbjrC{eblXUB|%;%qX8&D1{R{SC~B)u=w{)vFSMhO z0<66i76fgz#X(7NnH}?FLy!Iu4ykNp&jRbEKbq4MoHN_sAqj5}zJDJm84U&k3Nit4 zaI>@5TWBYaGeGpAvZOIXo6MG=kjp+MSy7_n;_J%_ruJ`tT9Vt_F?)=TeSq0Z zLX-=ER^WKL1PAbo7hy;tlCK5qPPHSlm4NI2K#$p&)OPgX$iPG|AYW4E>1}9c7R(yW zuwlGtMvE36@?up%l?r7$qarNS3>%-Ad3w`?(o26%YRl^}HzTqMgt%3C5r z!f@gk#KV0z7iEu5&d+8!wLPcIE3wDLB*u;@4vr7DS0&YKD6Y$@D(JU;zBw`>y1s1W zU$==%I@VpEQr}ek?DV!@6l7<}(su^MnwCFtr+WE~t-l!oL5&I9*l~6eD=Z5Mu2>k{ zL33gXZhh>}IYSm?&KYKm(zuOfA7RI(ksTX8rQR91R}X<=sJ-e+2}EZNsFL`j*|Vpr z`H31M#1yB}o?`sGq7w_Ofw(3&hvT*k5m&&=no_ZJSY1M0O8>Dvru3Zma<3A5Kd6px z^qrEO9bf1x`72lbjIvZ&R6OW`*KYL2C@SEaehZ_>q5SA*99@_PL}h;ObvvE3T!DNEZW$g4r2G_O$G>>6;#l*+%i zs{2kzOp3-V`s3^f0>*|(s5^$dGNAKo;f5C61tP;v6nGR8b^?Uh0c7xwz$b7Ab^l0K5gdfLn!sGM0ZY&E)9FB? zTPi#R+k*?4fo_lw78+B?$NGZ|J_Rt@4%X~RlBKIJ*%hAnGfa#?(` zE+yU%ut>yxbZ`C^>z*a7J{G8tmx^#klKI?gyyKASs0~;X{bFx3>drQBrw~Q8KAt3E zZEl`c2*wFSvn(OY9uk?BZuE`G$T!364#uJXtiT(glS$jbe6m&)2BeQ^vIe8nI>Znp zhZ|*Ig#{&>0t1Jnq%Er+wl+J?5mel9{@+O<)&28_#1+R5mD5d_r62oNF1j~_4icds{YE`o4{JA0^%HJ- zn(GJ^=h75x=T_WykU0qvIRLxPTXMk*v{G7NSo|GgRdQ+wKe?S&e$97EE}#-86k;ii z#X(hY4*h0~u2;Y`g zf{AX|0>&i5TuiY=XU1d(`D=)aM(q&6+B<`big2hQ|DE$VKedc>_{c%60Z!&92pzsdt)2X~>#9xhRb+d| zJLv{ z{L04h@7@KlqJT(L9~n=`zJz~?Zk!FIL4`?8#l_7rQ3;h|CqA{{>N*SNQX`u}>8^lZyu@OzgAsyBiM>m%@(n2*%o* zv=19JBbX7f#F}0NAy;B6ah1ETZOjF(RW7EALSB!Q?mJtH$|73gvfy`x z#>8ZY^~?vHKoj!JN54A6=~Lcw_W1poyxJ&RvZ6>nCco^|+&-?+QE|zx++O89s_t$a zT~Jk1Qg?p#Z@ zZJ{8>gADS&7~kfwD0^d~EfG+w{U{-4_31is4R`Wt^{ z=D9Z^3H!bzx!L#RCb>5Yn`9Lb0*0_k0|^Nvm<6){0xF7iS1ekJ)>2COQA(+$NYSFT z?t9f*x2mn;R;AS9TB_vc{hl-P+#4YE?eG16{)9WvdCr_UXO=TFXXcp&FivwGIV{dJ z4WosK6Qi}3QgaF6V&r_8cU|BV?wpw=5{s(`j}_@-!bS}r>l-~WPFN?x#0vR%AaU`U zpNk2Bz>H4c^f}2Dv4MMjN$moCZIFn`2#m2{m($UieJy|P&!}s&aj%hW&#KJ^ zV@6`i7-2>X9m96HE>Tn+j0Y4O0@$2^o>lH1Gb|!**um3(v+JK2mJ&5^!s(YpjyL>G3(JQ7j+p_8M@a?;}j$Fi;qT26X2f}F|so6!hr z3Uwgl{w=$wu*It`T2ME9NW_3o2854|iJ3E%#{rOwKGXFY zaw3`L#fCu*P;qHH4R!6P1L)c@R^vftvXwM4ZHyjd;yhngcWySgI1)z3VIUqXA;Km6 zsZ}Hv#+8p6=W!*7_=JeE^5WZ<4aAtNX@6nSV4p}Rh$u==y?Dm_$J<>4dpg{)<6>4! z7TW?H9f!{=EDZl`%jz{hmQ#8jxa5(lnO&)c7_7l6>iyjQ2l6T1dQvytgY@))W8h(7 zZ892kVEdlbhi?fX1eT8lm*NJ;5Ex%@j!&>kS3iHI9o!NC{3^xf5-L%C1 zNL(&6!ln6R8sX}X4j!2NIK?mm^9(o!EInKgb9q@O#_v>+d{PQEc_>I{_!36*kobGE zVoq`XgPWQ!QD%V(38CGp(#8r!cVs^Ris>?va=+e-{}WW@ozQVum~%-z*QN;ge;M z0=vTuMV9rR6|X7c`%)Ml*qNEGF73S_$ZIHn|GWUC*uu?BX+BuXHC+3I$+G?d?q`M} zG5jTI=1Ktl!|Xz)$%3@*-S3luLKie+a}n2`)9UNICGoJB!- z4$B=B*keFa9s1++`>iy#ao7Ak#$_> z$Z=h=#xei}Rw#2k)?2S@iq|!T>BB&QH5Z&8gL}6bE!$@D%=9jxdBQv!=YOoVRw-0B8FztkyWko!6{mqeOz2}>F zobTk?Sv4X@{sh*6KK(%%nzKtVM=lYMYd+#}LvwZ+=Ex1=9z%1FBTM)Hh>tFz9Jz^R z|M{c|+t8d{0-Q>%3zQ%IesQu@F?T*9BgtBigp>LEuwb(uRW5%rQ z!RV{EH!v4_dJhu@tH}a{`Q~l=wcZKtLBL!HdzEPJ22G9Y05G!x$V*@@17@o`1DM$X zXcJaUEWw#Adof=SCaQX|t_U>y?NeeAI+`$Rbq}wi=#8>pLw9xvG;;!2M**5=?LW)u zEWJ8#DPyX^`3Pe!Ky*;;zFCb_{0W#ySSM3xKg_heQG>CjmW(ERGNsvQv5*1G6VW`2 zH75#biy9q;kEI9|Il_%iio81o9oxu+Y?b0q2tt7*&x(xQ@wK%V3|a0#L)~!|znnCF zLiLil<41-dq;j%)*m@Fcd@xq&rGdFP{pUb+AgT8<$VuV2(G4h;Sj?R?N9IE8yx@H) z3M*4M7W~y#?@j5sqN1*@qP)I7P+d~9VA`|=H6@S|9T;J~5AIk|(p$>8>j&l;%!p&1 zQUJBh5BPhYcS)b?^ea=DW0_% z!-MQ;gbWMN@8gfU5EW>cfAhS_#fdqIbIzZQv$e}EF0mI3o;ntr7{-tHPek6FKF{9R zI~V&2hFVt;{|gR|ht(9#TT(E!gc0y17!E0cjYmR}RW8(ASVR**Gyy~sQRtrrQ$WTW zTbIt}03!%`0hvSM65?Ihm&dsSOOXmBKThY8JE3QESYb|~uT?x7QD5XQD7OEckw3k# zyLL(e?nFi07odK$L(@lE1)Mh-w9DAWmLw=ECd#ns*cNq|^Ruy+AG6T-+B*O%JV#>5 zHWuo!NV;u_c10(|+N01Xv1$*~P`k7>NNRCbcgdfO)%tk>P^}491lm zVYu`f<{rr(8js}WVTYD^*64qMZ|33Osd+W?YAjb^d(Xec>fRr)q|ufK*1-~%H;2CZ zM%j@v!UdjIGd2LA{1@we0E5B@VjSResW@5YJ4iz`Fh5BMh+h`dg$oB zF&b=QBuq^5&w9G>j$*+nYsMpR9C7{QyqfvH#xpRoCMT&zlo9x8bxlpR^E*|OmR4Oe zZ(cQy#!!K0kdgwVB;1NZncb!JZ3yWbMt)(+t*}oYx#z-#3XAb&)vgQ2Mk$;2$PEQi zJZ`XrCM^Ulz6JJAIW57GL?+cL-pu4yANdpAd znOLq4Qb>vK_9(MeXpm537VX@K5L8|!tr<*AmloO>g9*71fl!82%;yG~mKmhRM^n%% ziPZlma-=>Mhj_zVYeD$naDC+a0Ii#meR6;b+~uc>M-xVp2GIMvH8t}CqplV$SBqQ% zxx9b=%&Jw-%+cj6dVdl4!kXWEC-zAE=av}428aR52vf|Q_KnDSHECJdfiLFG%Sukp zqMA0QS6CnQ?gO{sRz7QfDsqFGc06cK249WQ8eSNQ(J~e*4UZhIc{`PCbdWdcu5Met zS5uRgogMf!iZL~_cV10aN^(|BdRkU8>1pqno_|9k>FH3+7?!cjA_xn^TFU+v57z)f zoiI@`cKBE<(;FHw6md99ow(^YQNVSD&nuYF4aMPJWj3CRxAl zy$Q2u$s8BVt|Q^J1DNM*EkTPOoey=?u7sh)elIS6a~1TUw<0jxy1(~wv>z90ZKSLJ zFwvP%hRQmInQ>8WEb>jbx)4a57SEc5pV36$*R_|6*rZYGnr}k+h zaP2Bu>@Zq_fQ}>7_?%m^XEqe1x!f>Pfd&DpD8HmKT>#aZzo@2WLEvMQ>AZPAotKg| zuV(kWnwojY-rirxcx%3V3T5-HIfX9c%$&j|>3KB^WIVOA#OHZ@smbd_$MfH6h{8F7 zc@2TlqB?;4#86`Y&-pA+m9m_C{{O^Dm%S-5(%UPbx4Zv;)!Xcw#oF%$u6T0k(kGD% zzsCpv67dQ?k>Q&s>;E~{V}yuMZXB_K!lpTCv{+)=&>^ugiDKELao7PmZW6`=X}y1! zZ>uX+m|AC9rw?E}VafYWA28zy*zIzUF_l~{4EW7S7)K79W|oYi{Aw@=tf;QShgEp~kSgv~;F z-=sLpiH@%dr6>cOUt!J|SDcv}n1OA@9Q4#k#L&qBhd`mv$xgbw$%j z#PsD03wX(X#vUeWvxDi=U%=A&LkO;8N=;5BTR7h@rb>K2p!wVsx~K~?fc)(X>qn=H zw)ShMEU&KFwQ%2gH{ZYI))&?+zxT=qe2q{MVL zZo3zle;mp23EdS%E5pvYC;-=s*`w)H`O5;Q|M1UyYoA}d_q$W?xW4_8Yj4h9zNYz3 z|JDV6+x4ypx7*EC0nQ~?olR3}GXIgk7#9W1h<{~j^%3X@#&`B5D5(fo0EN?hSZjiD z2=rqXj>*AC8d&|Xr1VWCIQ-kLij1_ZNZ0}9TQ{zr8;25%qsz8vO&Gp3(UN7f^|$rh zDz6mL2M-2b!s6rvf8dnJc}*QW-Fy;zwPHo>`OA{dpA%@MGF^#0EJPe)t@3Fl(PMBt z&*(@9$A(;#Dy>aZe1;P`4qC3pyQsOKaTGRAx)?uhEUjt6_o7%4YfdmmsamwYPVXOg z3YtTsNccv%h>2`1}Sj;a8ikzIfx5@8p(knU6dljdIUHp1Uoq%7Q81=i7|A9*9?v z;3kow*n5R#1a#ZsNL(GA*yFXw^t@&t680nCL_xRfQF;xor?DO-#qwMJX?b2;orB>M zed{vy5nluFxfdfi()hGg9HZ<{^C!gNbR`_WKm$fsJYDyK?T>J&>8Dy5rdLy=z;rGk z6NYn+B&Vd%XTMRh;mg41d%EjyxcZe%m%p<4`hi9RlKQ;y z%hp~p;>CNnA1$7G_f=hY&8hm)+N<{!rL}IW+i*|4y2JCGx#w3^oqxfyo|F|A7S)tR z56WCOe-6$v@LzrT91WNcA-YQB-XLpHkU1$)KHZ^yOaecCHSrwKks)8 z9W7xYrNff2#F|@MN@lX%khFAfuXTiqc}ez>C#&59Gj6)+{$pa`2irfprRO9SbH&P{ zyn0o6`KdR5zC0}KR77Og^Vd$VM=^^*Hw50ld(+jcH=&rzubPj!Co4_*<=d`jb$=Q7 zO81w6ublo;&Xm(#_oB~3f2n=NeL>$G_&!KsslPnOcaoeakGP(OFZ#=Ke4`NdE7$LI ze|e7F8iak8M)J|(n&1ChenMaI9ktmvHt3_?b%Iosx7H# zJDQDuVP6TY8j1>h9_YEG>EbmV%}paj0oL^m5x&54fs=tx1J8W9cmKhiyYBw^&rmlp zvnWp>9#K~Az0`S9<nl~)u#s{0d8dbqhNex0hZgUdy}jl1&z?Vi=a2TuF&`W+zi3w0 z4do@z*M8^TpWbr+vQ@l0X-eRLoonBSS(oN%qY}_}#+$y=xoXjcWM^PRg(G}S7m6l? zju{@r+`jagg*&(Z@^IUlAN_LeMKwRHxw7eBx4!i+m3!So$zfT67oPhtK3mv1 zxlPSY%TKIYId_h);Dy=K??o|MS%H15QxW*4yGcDutzl_tCw9k@|+KcTjr{=xCt zKP*nE^9K%5E;ga8im{W7@5CHG3Vrm*0qCRYbcDWrG)<_8MjGQ$SDisu42;A5cbE){ zL~V%{(WZmu{`o(2&ke8k2Hpz%?cYDV=t$EwKf3BB-*uDM6{_()pN!9}m9yS@>Ak?G zbA`;v?_68oJ#6??`2p_zeLIpW4WE~_1QzcoE0OwUtU19}I4L6ki@tfx=$Hwk6R~emxa;LNBcobheDck}*T(~a z6Edo{bw&N;#wo&ACtGnh=a1#^Pe*)k^6-~${T=Jpmo#p^>XLP$sJ3Xzva~pvl^ObR9xH`_~Rw*ogM90E?et*`iw5PPuKh| z^}`9=BcI+mXVr=er#H{Y#2`;v(*ppDYSo8SegSK;)nPUc2DSH$D<00{fOP_(|H6o680kQ-lQ30E{%|JL=9{miWjC4E|=(cFg8-qh{feg!9};&0%%WfICg*F zUtg|xheu?7(Ur5Idx7|Y2wX9I(FL80&mEaXMT)K;_I#6@9@yN}{59DHQxLP|$Wymn z^%r`Ff~h=ypHoTiW#}8q_tm*k1j3pBgqN5zYPcLY1|yYWh52rL zTN^eyAz98^Sa)dYq6JG2)-6=0_lVR>)&^d=b4TD$T^EZ~l-;br3ULH;8ew)DW+iq~ z*Tj7FbJ#|6Tc!=Q%_E!GF( zTtX)o(PuT6r0)S|c}tf$5eMH{F+)3aXxPB zr=8(zDz&P2qenS_5#S*7>23OGVQkjY$E_lM7MA5%bQp?l;}ilcn_P}Pk4mklMer%~ zF%WynHk%Vy`;zyiTs&=rh0S=QN8u=4UXq?LB5uGS+TVo(oXpy*gt(zJE=RWt3k7pA z32}GJsz=^$2z+tdw!jB>Vt!}*w%bHh^T&_$Jm5NV?Povjc~iz5+4fD6U3&VC+kT^N zJH6_spI?jg6k?pS%k=2D=C5<2du;tvsrIc-`#q!fs=;j4YK4?l7L7Nx>p zXnhPz?B(0h!!8?}m^?8#Gd5%S+^VkeBU*+|sP?8OrPWTqxWSEOpRdS_o*eOA@4{FD zJqt1dYoQstkRqHRfv+gP;&18ZObNUnL}?3A8<-@I^lrhIo~fZzz36bCD4LOD3m+#; z;4UD%f}XwvG8P%5*R0cF-U>?$Tq9vR^16CT87lO|r02b%qiw}cXoV~6dMyxD+-#rSg7xnv zzyn3RN;L2w%V$@jcWlQ#txItdbu$`~CiF8Noc8MFpU0{JrV*GqplP()0L?=W-)7PM zX>$>#9S8k3S}QnI2}aLdpl=7B{8O1*7eaR8{EQs@t%3}q=(g&uY=mmJS{d68XqD9h zPAdVmfu<99iWkZ3G!n5N|D0Hqf~v)8u=2sri@$tp5_ZDO!Qc6S9C|0tS(ZcZ`1DPW zq0E+IIZnSOEbrpQo9!C7-d^U`1!CB%8~Hj$!>-`54aNl z4m=wWhgLj0u+i3oc&vnbKAuiK5p5f&JWO>dp7jXf0evIqawqsuDjJ!F;^;ws6Q&Cx z_4{h1fl9p-G|gOwI>ntx!E8=@JE$+^Jon%XG>Q+EU>jU|Z$p^=D9a&-a&Hw&t-)Iz z!uG}LSk;5Kryog__E30A2ZhfLYLnKbbr$_)LrN%D`s!38;+}&TP#W3+k!F)Fo*BCJ ztaOGrP!4u;&a`ta&?QvK^i)UY0a^)~b%-71vxjri18t+$Q4b`Uppx9|7wp3ijO~w75g?<$V}t`)O^@D9m(?!TirS%-&9b z9T0;#c#jol#pAm`qLqXd>nW(CX;?RzVP#_HRW{=8MK0!{e)}-nTYxjPi_qUrM7uHB znu2qyu-^lDQ;HU{+^Rq-&&SP5Gpw0do;?d%TZNR*Mb1^DENiU!D5HhA8D+7x#JUK( z#J^+Jq9a;v)nT^dr`FY2;`KY+JoOP4Io)F2X#L3gIoflVb%StQTd;>ROoZdMjRDqm z)}z*6MTE7}+HZYneSuzKxAjZhS@I+-oO+bQtjC=Vr7atthiL^sMbzsI>+q*U9bITIj-YYdy|E zx)igfm*HTh`>dZ>S6G)@o2@IY6V@lzQA{{QVO!=Pn&QK1#Q;7I48zeYBP=Ypz+~Vk zfxQ;E%5tn2C&r5jA{y7@#tM&!6Y(O!I%WM^B#I=Q(32ukMH;@AVT(IXOu`ma;T5?! z#wFkSTKI$?Q;3D4NEC~SVv?AQ+ij+b^Tae!B1)}yt@lKkC>Ir?Qk;+7#xro|&jr}S zF&ke@=HSdAx?APfqFT%oHDW&Q<5`Fk$`^|z;v(xC>oiv7eIT$IOw@{HV!5aj^+SxK3OzZopaTH;J3^QE{uF zdxf`&+r;g-Pjx#6w>!ig;!g2HahLd!*eQN2c8Q;e-QuTWkN6+4SNu%u6Fr3KK;$`uQcvZY6UKf8BZ-_U=TbNA!t9V5Alikr#LA-6`zUE#TVjB@s;?OI3@lqz82r$zMdWt z5WSe;!Mrlou;GIdwi1NNa5+Fm$VeF_2g*TmupA$Cj2tV+$?sWV}p}i82Yd;H1b@nI_X^hIPogM`p?_>xgx)^_a}I4qLym9=EQt9q zeqlXbkcAl4-Xx1LM?OhTmQ&u1(h>vrq=)^FuBSt3hinJkwTvQnOp(fAC^%U^(vMzdv=oFnJT3uU#OCu`(< zxj-(Ii{xUtL|!D9%J0ZpxlAsXb+TTrkPWg?u9T~Az(=!OEiaZWvQ@TW#I{CWB0FTK z?2_Gbtz0M9<93-1a--ZNFO!$cE97Q*rMyaRkyp#_%4_7c@;Z6Fyg}Y5Z<065TjW-G ztNfnaCU29s%kSfQ*&oOq@(y{Y{Gq%{{z&eWKbE`XPvma-Q@Ka}kK8MNCilso%l+~f z@__s$Hg^0<9+bb9hvYr-u>1{X3+|Qo$=}MO@_zY%{GEJI{$4&LAC`~EN9AMkaruON zQa&Z0md{{r;5qpR`Mi8Vz9|1FUy^^4FJs*PD#n7Z%RkFEFv5QeGX#Id%*H$Nn0!~h zC*PMJ$PeY;IU^DZeUEg{nvutBGoonyjX% zsp>p6O_iupRi?^Sg{oBNV{`NjHB()H8;WMDDm6#VRTrviHBZ&3`D%e$s1~WkYKgi? zEmhx9wQ8AKuIg01TA>Jrs~^%h;KTdh^=Fz&om zZBQF=>gZ+aa;$jRj5QHgsV(Yi^<8z1x>jAMu2(mx8`VwfW_63&s%}-^Q`^*S>UQ;g zwO#$dddPZM?NE29JJk=>UFt__r~0wlrGBDztDmYp>VMQ;^)t0k{ao!=zfcF%FV)@Z zSL&epwK}BkQHRxU)Dd;Bx=;PqdQBZw_p1lg@6?0p_v#__uzEy2svc91t0&Zx>M8ZK zdPY5~o>PBN&#M>Ii|UW+CG{uuvU)|ms$NsCt3RtZ)SK!p^%wP5^|pFP9aHbB_tg99 z1NEW$oBBw7td6U{s}t%U>J#-(by9t*K2x8oFVvUnEA=mRO8r}Xt-evGRgVg&UK|r3 z=$u;H#<1OuS%h$VfE{5++EMmEdyqZY9%2u*huOpJ5%x%X6wXo{V~@4R+2idAcC;O1 z$J!n{&W^Ve>_j`sPPS9*R67kH`7`WHJIl_-e4iKJXY%ZP+h_aj0=v*I!Z(14INfiu zJ;k1iZ%5PY61x=hgynXHU1^_>8N35jcC0_F^ zAJD$Gv7>WEdq<jE^BD-vRA-ym#?S;J9mSAl!JF&S6GD+(rAQKXd#XK zh^Rogx)m!L+qxnegJ4*N5#6Yt?h4JZksp!ghlEG23c>dI6p>YMIDxr&I^nr_`H|B@ zRFO>~*q&Zr*I_roanI;#ZfR(AH}fNGhKX~tiSrB{=VqNTGfeE7^;6E6DVtYE&J6L5 zTpfaST=EOdvoPx7RUM6uZ7p?e4b3auv+7oKcQv|O_+dy&&9lrsODDU9ANDLtUJD#| zl@8U`CzMZ@YOb%qU8O^{>C9@YThrdz)zQADsZmw5tx~uYAZ(6FUb{)&9G$#&ehi$` z)ZMnKuA{rPrLMbcV0+&;ceR$>(MPi1B+XywuGW$}^kbf;?c_(~yik@zc7|Y1YhG@N zd6v3sbl@(2*fmr@T~t8xbpdtj0-A49&}~vMU#Fm(AFlZw&26h(-Q*6O-#7jPyZgR{ z%{K+vt)Gz#L-C4S*9TtQ2fj1}yO-z`Zs1465)_S51;*>7#&{GW&CF#o{Wl`)7nf8fPR_Zhd5$RYvU?SG_)DyXUKA~EW5O^ ztIls-&sEa|$R>fV3+mRase{6|);HA2+1;|LTP|vbDsl|u z+-6nX)b5(sysEWM)zo!|nb@egP0gwdzqy^wT1-iC6!CLnG}sV2?-6yujEHLNlcI1$ zL}w4BhoKSO+TRJvNEe5<>p|{XMTv7YG`4irg&AJ<26!m)?Bb*mGuOqOv=&a9j$~<> zZ0nZmo5R|5`cy|#yY?x|b9HheyO2l|0ksART!A0r<7%gzk0QQKyat~Y&nUxG7n||q zmk18bAWQRkbInt?g+8zD1bkkf!Ruzj=hcBiC=_`i)$_Nw?`Ve10R>Z{+%oT)&a) zH*)<(uHVS>8+pYhy~Vlig{wO1V7#o;kA>Wdy4Uezz(S`g4Or(u?!}t$Qhty&<#}`c z1H0QAjP=w|-!kx$ZnUIi6LoYpHn>}x+o-edY+TXa)-a%P{R-50Q0cIRl>_QlHaB~V ziha56HI1EUBJ7Ip4zBfixn53pUaqbOcyhky<>nO(Xzc8QnbFnQFaXw8WAmz}uBNE2 zCfEoX?u=a7yw-uEIuVyPq*3oW*!@(c;NPizgQ?o+i9WqE|O1z#BeZhYuGm z@LaTba?w^+RB};PR#tKmfU10RP!02~@ z(eDDI-vy>#6&U?4F#26!^t-_5cY)FG0;Asrjy$911xC*cjr>9*ztG4pH1Z3Ld|ilM z>?zRc(uIk4BfrqdFEsKCjr>9*ztG4pH1Z3L{30X2$jC1;@{0`LBEz@H@GUZYiwxf) z!?(!rEi!zI4WD9@4%iShobeT#d@MHUC^q?6Y~&RidBsLvv5{A7QBml^qGMt+%* zUuNW&8Tn;KewmS9X5^O{`DG^kWk!CPkzZ!ymmB$}GW$$r_LUp?=j zmmB%zMt-@GUvA`=8~No%ez}ofZsb=O`4uMp6(;=^Mt+5nkApH<4=YUiD~$XKBfrAP zuQ2i}jQk2Czrx6`F!C#meAB4;DvkU~BfrwfuQc*2jr>X@ztYIBH1aEr{7NIg(#Y41 zsMlv2QD3EzuNzsf-?Vdn(>VHdV-CEQ?>Ba#UpMB!Yx#a-7y5N$4!oA{*Nr*ewS2#^ z3;m`Y^?S8^zgMT@+Kk;tl>-vdz zBVX4~yc_wte&XH8*Yy+cM!v3}xfQy8;%U;a>nGk#`gQ%pyGg&UpLjRv*Yy+cCjGj8 z;@zZQ*H65g^y~VWTcPVGo+kaee&XGvU)N8(oAf)Ku&$rL8~M6^;@!yC^%L(#zOJ8m zH}ZA;%&pM%6Hg;w*H63~`MQ4M-N@JV6YnPfb^XM<$$wox@ow^8*H65g{MYpp?5fk9arf)%7vYTT(haG(W($C#x9>y!JtDNyO8`_8dr7=brAKiGJ%_~8>?Jn%;Xwl2DO13KWL?S z8amUc<@t*TQt-NZ%rsIQi7K~J4+(NBb&6b*r)2f@*Y8f&FKh2=t;3Z~E0?Ww;kT@rT^>W^R%mMl7pStf zW|vIY?>>L<-AvN*dsWGT!Di+(_-^JZgYRa_%XxRt$nHdn-81ieFNJ+yLhQZ1GB5jZeaO>;brcUb zLM5gC{7B-3iDuFsQ)FeF#i1fA2)>*7bf*Xgn@R5AyO~xFzMI)e=iR-EqcWt=%r_$< zSB3I=0L_AH?8=sQOgLtDc6zlE`|@*{)4b|Zodac+!KCGRwcU-UskGYe#yhujcyhan zCpQszaub24ZX*1~zVjRV&Ts5Hzp?N9#=i3#`_6CdJHN5-{KmfX8~e_0>^r})@BGHT z^BeolZ|pn2vG4rGzVjRV&Ts5Hzp?N9#=i3#`_6CdJHN5-{KmfX8~e_$o5IRcJr9H@ zrx#C7FP_|w;K}_Mp4^XAmg;#RJh>mkllyTzxn|?Z{R*C}LU?k1a~ zxqAKw??#@U@2M=+^F4SP{(7DV?}o3Q-@&`#ujhC0Zut9H87N)Z9cw$sY=wZ$PjkGZ@Y?YH-avclp%Vns?o6 ztPV<)) zVuq^O3%cyi*1DFK0UH`S+Or$l+FQdhd!&J`bs7`Fvq+2^u(G|o!$6o#(sZ58>lujP zNhJ;P)RHD_Yc>qSSVqfAH%Y*Q__wSK*W6oHhB0q?5@+}mU-)aT05ne!FvpgaI?ip~ ztsNX^28bsCCe8%vIBSSFGad0}I?bIy&7TQb0uyqa+dEf=QKacf67U?LqYWsWXHZZ#yq(>!84=CpRllA8tNilX3F}ym{(rAG|yM zrkU5%L%^GNJ*|_Mr>F5@_G)}?o_7dMg65K;gv!>^*x4CG_zfZowa=NG%o}7nJL5M9 zsYS54c zz&>(XIREJ zdEj0p55hepe*^bk`54?MR4(>+<*R(SepLszRdvGcQeD_G)vX{4D?`=--k`1qe1p0L zn=7`et$?xW1MUyh9=Lne0l0T#9lXF=j(gx9Q4hj>NIeAiX`JgQux26$`zf)u05H}T zAf?y^i;NwDpAWyKcpoDDW(CE$D<{&hW+EFU;O4xsIF3@s4!lQU55+h;+8T-#7AaVD z3GOy_gy2b61{7fxq^rDgR*mI>MciU}@G%_gmz%H}!1A=zb=EHzQ?&XMrB3Fu zHK_IC){C)%llF3GURY4Z>pmm$C-`>zZ|6|7n;5sVVdbVvERr#xaOpU5*+`R{l#e#& z0(Q1zeJAOW#dx}Ejt`>aRX zS&x3edbEQz=o8kUf3gOB${N%|8ie(e&>-O_-4VBw?uhS`?uhNAJK|2#9kG*iM?65f zBOWB(5&t0F5ucLoh+fhic`@mZq*XKkEAK`CDIZ357H6&PdZ`L_gDN-Z}OkO^EiGd@%swD)0XAO<`+N8 zhM(A;>PKB=cpRP{{F3p59{BSR9=Zq~%*T(tW&Ww=R}S2B_>m0yy@cQE_@Val`*A!W z(?1iXeH1Y5iNL8t`KM8ihc(VeS^@s3Q>Zi0J?s*;nq83E+l!q1G;2rJ&gd4Dx0SFm zp(PqSi!3W;L&Cmj>|(R5*aNY9qc4xX8W%6@$=V-%1L2}?jou!87eVPeW50;rO;BoO z`UBDXqOq$eAu;-J^ijekBzn9_l?27TlQK2>A%Z;1lkbXtBKkS_-kMY${Sx7_HpHEX zex0Ea8DB)7j7F{|>`p!${l3OUACE>FfxFxDTr_eQ(3pgnXymbFWuDGH6q6Z)e9k(U zbtDG)4Bw8drWkG+V@4#U#vs2fEA4c;jPVeZ`9$XN800--^@evr4An#{J3eDpOddh8 zhZ1EBN&tDVEh!=f<$zR?u*R~54$2Imdof`$5+rkFN@JW(lg zW4dBCfNo;q%Q2e?mp##IAkXBSuVSvzIM2%TaWOX`?6#!Zm>rC(%<+0SceBQUZfDFM z#Iz=HX3T!_O+FfPFnbX}o}-@EV{mSMyJmF$q zj(H>I1Vis6`C>jKD6uI$JieBo%$G91GQOY1wZ)twTudOA+Zp6RMC=g4SXRb_teyWE ziXG+nrXFyh*kFj*_;gMgX;aE(!)0$4rw5$-ffAw|-`E2Q`*eud)HqHB;%sGnp>h2| zvDuDq+GGbxc|L8r4iQ(L#d(G@?+1$YIlf5~Gmq;K$#*9oHZhnOJ556w(31ZQ#a24L zsfQdWc2*FoPJK*=P1%-4JMi!?<4_jsSN~AzyN++tG%uH_W%UOozTx=BH{@{bKq|-O zc(shoC2CQ}x?Qn*H5aPWhF?h64#jaj zK@GSssEH3cr4ajA5cfZw7zfIpm_5yeNK9@qP`bxx3H0h^ zjf;E7Q($~2drCD#Et0`aPrl1QRi2dwTJEXQQ1(R65(nqd0T-nEFLCRg8Xq^)Nn6$i zkBM`3rH6YclkEh$l7dTRhf9iw5%SdWys15rs!4&=h^Py`m`^>+T*#) z!~GoO?(^JjQu&1EIRm}qd0j*3qYfL~QO`pL>W9vAJR!#To=h~gyFXmQ7|&ldUE))o z_f3d?!e*ZKm@>)=_ng*raWeamfzU%}i26$nQLkZqM`Rr_&^V_~$9aOd;p<($bPfC7F7jG$F}naKRQh)T+dfa$4oMdhY@g)26sK z11$*RmIiVC(RIb4XQqE~o8zuA&`nM|6t~T3hvIfP{Z`ygr_Ii^oSr1qiYAPS+oQQ8 zJ{4zrwWJ4=Oe-IEFwV)-2a;-yv`6Be(oljop};_wr+#95pU*KRO%@s9;)kSoQj!f_ zM}pH9zZ|R;u*ftWSu&cA>@bbXf-R+SWPNEUVYk!5k@cl4k zsqtiy8M;8?K@EkpiL5HZA;e*)EXn55bjdNvi5iNx<0CX(s8r)8#7{K7@#$|EC^dey zfwG-^iT7nSXB**jj(<17Z9;tH#5DdBCv5x|IbRvyuN_>1<%9@XRSDA*sx)1~ zFh`q`Ve=atY-$4~CZroEq^FY;OmEPKOHEKam!unwfW9o(VI3`o{X8grgy9#G7S!jg zn^MY62&2!i;Dfay{rU8lP1vi`oLJr9KuHeBPAnkZsGzB(FnufmL}F42;&a}ok|QCs4d56 zU1C?_27?Phn-fh-op@8)6UKL2vMH^^9cjxAZfD{i1MPR(rjY%dcp~wL@qNI_wd4-3 z!x`f!?MtIJLl?BEY5Znz?<9VB4s^n4i$ncF;%C8>2UD43J2{jz#EEmiyw zRXX)IWXC40b?RVf6qB^c(W|7ZlCINXlWxg0{YTR6Np~9DE=RAD_9h)LxI;;%#SHbK zDf_dX5YHsNXy{%|;tqdB$?oJR4JHpu9%Gi58*BH7b$;%D2(y_CXJCfHM+~vtv8|a2)({3bh zcXB*=x1-si(P#3}R|fw z$)`;SnPTc-*1;6hs-%oa8E1Th_C~12his6Ppw*m`m;RIqQRLVbp>{mIKD|l%hQ=xB z!L}r2LCR7Swm!wsrL?7VnGlHC5E?OOo=!2f)|Z}glMdln9yDWzz%0Ux@BPkCU=#dmBMbD?08lUn;$~)RO)Q+bH;}^oEe3oKbhLk|c3B&KRlv4%@ zq}ql{gk$Ta4sqJ&)KRGujBk8us)4doeFmDCI?X_psk1bcUY}|#x70RVbys256o)xm|@;?$3VdGLjk2RLBB8-LJaX6<%IrAlHW1Kc8EyihS z(h`F>Zx9!p0Se7(^jEvnN}X0OM3+|M^vP*U(w6HKrL7F&TAa2$ts{sF&UB<*9>fJ_ zMAB|>EP%A_j%KIbmA2b(-j{Z_fet(NLE1x3PnY&wnyKAsucw*Xo%Vj3soiNO(@gCS z+1b7rr-uz$8KIeu^yKtREiFASy~sdQ)5{GsGkvas7NnaR8mh_ZZRw_lrf*2!Z0N2@ zH+3+5o1-P^JJU@qOW*J0M*0zF1|$6ur`-tIbs-x){hf4EkJ3-1f2L(*?Z{Z9A=pC= zM(!y`chduo?q=8yE+gVwaYKT1qk?qPg1F!uUd9ARE@u6V+>F#9U3M^Re>h)|ZeozG zKN;0Q8MTg#tUVbAOnS33?$c1lYNx(stZ`~Z#@ZlmQxJDm5O>|T;%*7j-5#X7Gl<(2 z#O-zBl5r>)mj^>LN*Ryo_+^dAbQ@?~<}efIXPnVz#*0pGn(=B7_tv-K-VM@y6r}qk zi2K^XWm=Bh%qT~0=9tU^9fQo6%u)mOhf567r3dM}LEPjZZhB^w;Zl>iL_=8zGnZ=! z^X)5*Z%ft@19dp_Aeomtwom5Onfr`yf4CchbhifSwg+*$gSfjh4;wB=GaoY06PeE$ zC}?qKzV6sVnSXWKtIYRKxV!K*efQOxS*)>bxvUOCYqK|HvnA0dR=1O7p1mu3Z}tJ2Pt3kA`^D@Bv(X-8KLhC1Y}f+X@8%rM z8AE+u_D9|g*`H*80qAS*1{`XJ)*>e=XPEZQNdzvP#!)#1Ig@irbEX5T%Bjg&lCvDp zN^f{hOHK!%^*NX4T%B_Rpj&gcdz-v%fbPoKowG0JZa{}2?V+3}06mxUQqJq7bvf_n z9M3sPtwqjhEEpN&9bs8s=?yo~IIqW>?9BuY%Q(DKz2$&rdh5M&X)evX6cEesc6m2= zH`8d*dy{vYcZYYUcaL|!_n`NP7h2_g#QRi#>l4!!Znetf< zyOHsKBUrsgeAJ~3?_)Ouw`>Tk1R&|JF#UP#R&pF#33eYO7bi`?6h6t5U+K9CqDdSQ8@u%&Ge`m&Iz_CMo1<_aV?6CC+jq zV=iNOH?B59{&1=v4I_B93+qzkqd2h=E~m&2YXv-uXp|jxDZ_Dazhd}dmclw9?_@qr z%%_(5G=*&eWvx2{ZWHsVWtvvzoKGB7KGDF16cx)k6C0QWcnJB5DPgaXOQA$D#at8< zXTad8xO_zoQChKqjgay*g%y=7Wh29LnNKnCk?R;!tnrk40;k@BPbp#KZgP>I6szmG zEUqVC`%Q*(I4v7l?gyOnA8^=@+4p0DT<SL|xSj={nH=iTu>F8nldE2!Q0f53Hi=^! zAXnkGNw{Pc3w4@dI>!}joS5@W_hE_^VdPSF|G+Md`;h14%9)IzUR%iJ1gj+N62?kn z-z!+dx4KD_x3GI3xnd^6*Rm8H|09$ZMPmnH-_13mlFCKmCRt$CF}#uSxV0DfOBu#V z#_+8oSj=Rab)3>Y4DVsedWP$XQUo|BzhVs6eR(O-pk%)bo;!&~rm*j|$yD09QK7_#hpAISOE7Zb0eEX$h#P3{Zw?*s!$E=))KvXoPD`uC2NbklQHPW5cV)r z(w#j*#c7xMKTI&r)Ml6C*3B@dOKFL8MRmur`OxjmP65iBNgsTDG1Az@T0l^SY2m3tNAZ|1O?&oSok8slGMdR^k& z@{1Rka*KAElI64rn}Dr%sqlU z$f>Jwp8!Vps!^`32=zACzEi!IWf&3K!R67i+A2h-sLE;x-U9RawV;^At2blf{(;s1YEQcCPu$mtB zJ#txxk8!yi;}TiN^y@fo-CSzAhHhc}7RGbmA+Kkiy2MX0{v?zDb(y6!1*iwt)=n%* zQI8W|J?+E^Mp|49QH|Wf3BcXP}&ZR;GEpa@!1)O z0)7d{e+l#F9vOFIk=!ASAHwu|Ii>B4X=lo>nZwsaDL*DWLLugI7vpzv3|V{aB#zZ# zj@4nNf0SF%)vOzja{IiR>);E_pLI+f;GAz_%36+pCD&O_HS8j42cBfilbrKcFy;yl zwS#$bTOn&WJ~gZfv$)?s#{K>*4m*qKk5O3Ih*YvUjL!+9Qo#L!z;9&VeT0!w3`a43 zA9I_|*4jRnINeZ^-9q<+BTpF5t(n}#zS=%NkMcxtZVR2;yIAfnj>Af#R4ZA^6wccz z6n}Aw(jra;(!iN+(}6NtZ^!1NC?{euMCdX$mHc-`{9z;Hg%V-+~% zEnE9i%L-?FIO9(;|C0>w;P~q{P1~HT?TW1t`2kaYz-fOp>?`nG?cM|T(Xc-G>n7<<;l#O?IX7{C(aL;kIX<-nqxV7l#T0^}jg+E|gaJ%E zHxf^k!#p<VvrMbYp{lvQZ0AuV*AbP&c&*PlRCAF( z(0RF$>+eQ}m$H;vij~dv%VrG}GsB)niOdXp5cJm)442^T9DhBQjN;rVB`L6usO;SA zJBTrZ2*%iuQuHXpO$>9dt=vq*HmCf8@wMa%u6OEMhPP6#imjAtxQIVoj9kQ4PU%)2 zAs*wf$4EMSzhYm&xJQBHzD;t0r*ZCTPU&h+b*)Y{^C_lw0J=vxvzzfZGR!uctu6U2 ztWjII7Hr}6WI55OT(K(#9?=7m*cYwXXa8G zDOS4~a}QH`2qRLpOL*)@*$#I+Q>JK_<4`8SSq^2)P{u4Lj5Ulg+1h3NEXJoZ<|icA zif8z+c8Lb3(o)zs!iZe$a@bs^XSw2W#y`$@o9RarMsCzD^VvjroSI8gk{N%KcG-6^ zE*uk93}e=7m+_aX*}xBBjLxef#usrebuu1zkRWcjln#^=81obDGUY}tsaVF0)h^R7 zm57fuh%ky{t40&v^#l7lU^a+{h^MOtaej_NJ;&Sv@&^dzB@9l#20iW@BF*G+hhXat za5YXuCqKO-W*T-#%(UKz8~!ajVp4FQXPTX6C18h7hLwm@QL}L_I<}_pej_Xf!1f!= z^T~H0?GZdb#P0-tpWz2vRKX&YFp21?Fl1C{!x$cg=LG!X@k_-o8{sh%1Rl&s`GA{f ze$#+^3O|xTzvuCL8NWBo`-gZ!rmDpAGyKrXivZFZg)`mrEV_+CT3)LFdyPtwliluE zynFDLiTzDNtfV}#Y2+h;8)A(@D9jvyN{D*)t0owC*+2wNhEK&_A|FnCM;jW}&bUE1 zOMVH#&^pQS*BU zPn3tOwrkHnR8C`1Gps0@ud}YFUdiHl!k(=RbFbR-f_o9T{Xx4l z8{G3ZgeCpJUOoAUz5I;5dWpPO?*ZPccY^lnp;U=_h$UxVQ0}oN<46Gy;!k%s4QDQH zb0folzJGyewM2(@5W@ba+ZxWL{t+yq1P4BNtoLWnndK3~aIS?%Osk$V+aub7F>(DDoX<@s-B|s9%N5ixlg7yZ zf*RUlsH6T1>JaaN|10Xj|10Vt|10XD-$L!F!$}<0BP&+4uCbnB_a%1UW%mTTU(vRC zAy?usV-eocysAzNYr)=eF^0}05i#s0vYXDXm)!z(C$n41?sRsmXxq7{X(tX#+B+KB z#PT%+ucY%;L<`Q}$YnQAbkSKHVgp>C*xcD&-zl!?#38QYrY@r2M*GXf4ydl=Iz&(G zV+HKyC&Bt1H^2gR!$(75fb1X*)naNdalg1lx1P{@Ji9UMqK^h9irvBNMzTAM-2v=| zv#a|qw&Jj#mqNv{iyj?tEL@2_v`PGy$gYNy8P+Xiv5pKZA^QY7)oXGyN ztJ?Lhdj$Rp+>6|Ix{tcwz~5>2>98ST8^Vr?WPejjJu z>oe}}G3Vs#GxE3LB>dadZ|FV|?3n#6&ddKEPRzd*XXev6`TE@a-_s6R?4f;#PSm$A z6A23H@%^D9`&*K)8HxR z&%=t7bk03ooOBNt2YXv#Y8~=xBH~7;<*$G?Z^SA5lW@ZR61xF!T{w|{GEUpS$Zo`2 zH%{lDf|K``+AA%$EW}CuQ*jFackESoE5fP$=ix;DTD!?|tMxd+e;Q8bUxu5K-Le>` z`Iq3N{^j;+yiLT({-rpzzs|lGl$YX^|1zB5UvIY{PMvl)?)Mw59!KB3UHt^^efB1d za`^TI=+|(&3hoGd4&0IUT)3m`3*nB2#VD;YxDQlXV_{!PYaH(Wlo%N;fIGp)C5TAn zVz`s+C2%L(7r~uk<0J#5;X82Y8?Hp0m%%MT&npqfI=E$aJ=}>T7hxe6VIdb`As1mG z7hxe6VIdb`As1mG7hxe6_8Q%XWWk0Vgty_ac$MYB-$2|=bRlpju}^(4Zt;o4p8bh- z8OCT;2sZ)cQ4cGZ+85$Mp-5LSLWTxYjiY;)2s0D@BfyVv7<>1zTG4W8TaK+bvIn)c zNz?`0-KP#>Z#ms@K(?iu?@aoXG*|h-M^n-{4iT`o6JduJfntHR92Q0wG!$}BPozDT zp*MoiNrtGu8l*14Fl4NlrAX(PPUJffYM2xD%^>tCLpm(((&Mme9ADuxPy}L=ikh5< z7?r~kpM@Kq7WIj78|T+#VCWuf+=QzxgH<>bH&jHbO$Lfk8yOk|+y(32X4R`gO)xMW1wj$n;KY^O_WFKIO3nq&?iCYR1o@i5c)a@ zVPCxo(G!FML8#Y218`cvA8^wL-Sc7Y_<$6rq(@odICns|v)gg22-;Hkh6md?Xdks> zeL@VvMIUsF6IxS>Ewyyif}Kf$`%buhCJLubWL?!G-UyVzFlaCGhi@PwD$--j6XBg= zhY?*L+#JRYWQ^u83>X?a<0?}VPT)STkY0xT9lj1{3P)#^*yu5CrQU+MEJGWO7MkT~ z&TjD~-h_B2h?CH%QMd`@65IjO-#sDSXWzhrkfXSE_ir_O(91Ztkm(*KR4$3uV6?_- z><+aKH+$hGJGv1`t*0B2&?a`u(cnG!TX|m?jJL23ekremNue~d~oT{w(aje8REjNw#BXXSzP)H(cfJ)ed0nr0JTKA{tC1rlroxM z8G+owjEK4!xrw_8aRLoJ=cpSHdWO0Y?ksf^T&ha~K7I7Tu3+5oAWmY`=nCF0gmY>j zVP??YaY9N+AJgwmM%qR@^A01n!qjf?8pC#$V@+x6>7=%wU@xtNt+b2oQwv&1G>7S= P*DZObLzDocOV;{7XLP32 literal 0 HcmV?d00001 diff --git a/deploy/gcloud-function/resources/chrome/fonts/Open_Sans/OpenSans-Italic.ttf b/deploy/gcloud-function/resources/chrome/fonts/Open_Sans/OpenSans-Italic.ttf new file mode 100755 index 0000000000000000000000000000000000000000..e99cb92d49a8ffa47d8a0d946c78ac292f0e44a7 GIT binary patch literal 153256 zcmcG%2Ut``-#0vS$}YVwz3sBVB2A==s4E==1q*_eE~qH>E_M+c_8NOnqKhqRtg*$G z#FAc&iRm$Sk~_JRD4czNb9O;Yxu55KukSP0FmukCGc*5QX3mCCLWmRo2t=LQH!A~I zlyC*xQCnoBrlnsz`08N7S&YK%pEL4$_g&FDp#$NpiU~;?oYA*`@)F;H2ML#ch7kKl zz58~ITGwMS|^io^twWs@eTr&vdxBSbd=eS#}%hu4&Lw4O(Z zJI1rK8D28J7VkM=zH-zS!$(c6j0pKnLrAA%81h_IMM=53^4pboHw@3?s&K=8u=RFa zv;F~9H4~=nNx%L%!2kd%c+{A(l27|jb|55p3n7-SH6>GOl>_W0^sh&M_2`nCin-ek zyiVu`SdW-mJ7)ZZAK%z#L+FE(c;}_saTT=_x-L9HNDzZx1ZD`~$rZaRwS9-#C;dw7 zF%AB`f9th-tbREC!(Gk(EgxCFZBa)!qCheI!+RFXT7VPFan1hCD$BR|ugTlyXL2Pp zu(9#Ck+_mFBI3;rq?s(ktc&ezFefE~(1$kS2@#`(+r|fE6RXJv?ly_yR<$4NQ^Fbb zMD2xp!R&rU@7@`74k5-C(;6%!ZVATS#-0h8BA_E`jDDM3WOq1~x!8~}-jO^I14uWa ziexJWlRaWNNuwvp11^K)aT&%6p`5%YtR{`L*|?vZLlQWSgmG^eccK4ep^Ao}wm=C- zu|vs0nTzr=%3zdYxj$!ofsKK(h1L8>vQ2T7)Ce<-%dn;b;TTyb7NYhi1^hiyAlBk~ zEGgtdNdXrmofD?x{yU^VafI{}cc5G*>x4z<$LiI1&w}W9iJTH^$ZnyMoLAf>4}=Kg z8o`#F6?z!I=lUCe;NBn~qOK8^lYBnFn9haMP+=h{6Sk2=emf~gUB)+)3a-xRCg_Yi zg)JnJ6Iqd-@ZSJ#kt8VoAc?piEzDv4jrZkuI^g~B#D?2NhTz#){xB&OPmu}yyT;@E zVPhA5neid_I`I-JI1lc1V-tg4#=nj6G4S)DP-Xm97)2O9XR<#0mn2@8KyNGdlXC6| zImn+P`SLrnFhB0`3FJ+_hD?<2-5^W38)OIPNWK>i81IW+$qnH90Nr8i!`+|}+$nMd z?>mUM$sy3zpwN?Qex&g|8Sf1De=3R<#wCmvj1KLKOb12_a{;Z=Tj{`P(7s?@hj2Zb z(V~5kX#tuE+ofh1?+o{UDvC9r0cgSK(7u@H&`J-`U~&UBiAZCw_-HJe9?cY z&%en$t^9A!oFe?u_3V&oO?LdB(hE-kE&IJJV3^ z3i*=zjC#{CRKZnK5Bk`+pU)>>@&%B$>0AxJlt#0$I0boIc%PIiEJ$zeEz(;NPI`+v z(n(Q9O1Vj7xI7>99Mf>wz^Izlm4LI+>QxZ>&$NeiO9DFB!gpg94`KgiglK8J-x7 zVl!F8bes5?T$kTv@GgbitRqP>@38r{k$LQ%u-AB(KLq_T26)DEek&e1OWr*>Nvb(7d<5$ch$uOGaZ~(Ifvi?^ZWjrb3ja!9m^x1%S zP}n%U0q1Rbg44-l0i3uD9^@3FZUUD({R{$ut;wmnSe zNlz4E#=VL~=*#+G4KklITLXULy-8xL4E(unl?nb`lAwIqRABp}Xd#(_GM#>9+)4+M zufgXtP^R;Jja&Ki`9o#?_>{sl`P@i$O^6t$wzVEACe$yEqQPfSq^!E z?Kgfc-XIBR>lKOQ7Wkl6xsh~HcoRSIf$@9c7gDF_L-r{4k!r=uWWJ&ksRwUO2G3tr zcu+x%C0Aer>!8z0#r%#O zP`*MrBEYXmFIFqwj>qy39 zvb{Ik2=1WqjCcV&-2h#92eyqPV+mf(@ev$%0A?Vq6?W1JGw#`P6jAG1I_1v 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

)grGHxqHL>()G0EHOxzFvJNtW=v)=H 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 Rm~*!O5TA^>r(z~J{{!u#e)IqU literal 0 HcmV?d00001 diff --git a/deploy/gcloud-function/resources/chrome/fonts/Open_Sans/OpenSans-Light.ttf b/deploy/gcloud-function/resources/chrome/fonts/Open_Sans/OpenSans-Light.ttf new file mode 100755 index 0000000000000000000000000000000000000000..a0ba20432f2222c59b067e2c33718817e6a71d35 GIT binary patch literal 143788 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

-+b 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 z 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 ZJu60E;vtPD?b6uQYUF(fEseif_dgf&dl~=$ literal 0 HcmV?d00001 diff --git a/deploy/gcloud-function/resources/chrome/libvulkan.so.1 b/deploy/gcloud-function/resources/chrome/libvulkan.so.1 new file mode 100755 index 0000000000000000000000000000000000000000..f941f2c0a0874a42f4fbe144961146553c5c4b7b GIT binary patch literal 702144 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%0D;#bU#N#d|*B}|Uj?H~UmC{B+5 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 literal 0 HcmV?d00001 diff --git a/deploy/gcloud-function/resources/chrome/vk_swiftshader_icd.json b/deploy/gcloud-function/resources/chrome/vk_swiftshader_icd.json new file mode 100644 index 00000000..28be1f3a --- /dev/null +++ b/deploy/gcloud-function/resources/chrome/vk_swiftshader_icd.json @@ -0,0 +1 @@ +{"file_format_version": "1.0.0", "ICD": {"library_path": "./libvk_swiftshader.so", "api_version": "1.0.5"}} \ No newline at end of file diff --git a/deploy/lambda/Dockerfile b/deploy/lambda/Dockerfile new file mode 100644 index 00000000..d929b3eb --- /dev/null +++ b/deploy/lambda/Dockerfile @@ -0,0 +1,104 @@ +FROM python:3.12-bookworm AS python-builder + +RUN pip install poetry + +ENV POETRY_NO_INTERACTION=1 \ + POETRY_CACHE_DIR=/tmp/poetry_cache + +WORKDIR /app + +COPY pyproject.toml poetry.lock ./ +RUN --mount=type=cache,target=$POETRY_CACHE_DIR poetry export -f requirements.txt -o requirements.txt + +# Install build dependencies +RUN apt-get update && apt-get install -y --no-install-recommends \ + build-essential \ + python3-dev \ + python3-setuptools \ + python3-wheel \ + python3-pip \ + gcc \ + g++ \ + && rm -rf /var/lib/apt/lists/* + +# Install specific dependencies that have build issues +RUN pip install --no-cache-dir cchardet + +FROM python:3.12-bookworm + +# Install AWS Lambda Runtime Interface Client +RUN python3 -m pip install --no-cache-dir awslambdaric + +RUN apt-get update && apt-get install -y --no-install-recommends \ + build-essential \ + curl \ + wget \ + gnupg \ + git \ + cmake \ + pkg-config \ + python3-dev \ + libjpeg-dev \ + redis-server \ + supervisor \ + && rm -rf /var/lib/apt/lists/* + +RUN apt-get update && apt-get install -y --no-install-recommends \ + libglib2.0-0 \ + libnss3 \ + libnspr4 \ + libatk1.0-0 \ + libatk-bridge2.0-0 \ + libcups2 \ + libdrm2 \ + libdbus-1-3 \ + libxcb1 \ + libxkbcommon0 \ + libx11-6 \ + libxcomposite1 \ + libxdamage1 \ + libxext6 \ + libxfixes3 \ + libxrandr2 \ + libgbm1 \ + libpango-1.0-0 \ + libcairo2 \ + libasound2 \ + libatspi2.0-0 \ + && rm -rf /var/lib/apt/lists/* + +# Install build essentials for any compilations needed +RUN apt-get update && apt-get install -y --no-install-recommends \ + build-essential \ + python3-dev \ + && rm -rf /var/lib/apt/lists/* + +# Set up function directory and browser path +ARG FUNCTION_DIR="/function" +RUN mkdir -p "${FUNCTION_DIR}/pw-browsers" +RUN mkdir -p "/tmp/.crawl4ai" + +# Set critical environment variables +ENV PLAYWRIGHT_BROWSERS_PATH="${FUNCTION_DIR}/pw-browsers" \ + HOME="/tmp" \ + CRAWL4_AI_BASE_DIRECTORY="/tmp/.crawl4ai" + +# Create Craw4ai base directory +RUN mkdir -p ${CRAWL4_AI_BASE_DIRECTORY} + +RUN pip install --no-cache-dir faust-cchardet + +# Install Crawl4ai and dependencies +RUN pip install --no-cache-dir git+https://github.com/unclecode/crawl4ai.git@next + +# Install Chromium only (no deps flag) +RUN playwright install chromium + +# Copy function code +COPY lambda_function.py ${FUNCTION_DIR}/ + +# Set working directory +WORKDIR ${FUNCTION_DIR} + +ENTRYPOINT [ "/usr/local/bin/python", "-m", "awslambdaric" ] +CMD [ "lambda_function.handler" ] \ No newline at end of file diff --git a/deploy/lambda/deploy.py b/deploy/lambda/deploy.py new file mode 100644 index 00000000..16e5bb98 --- /dev/null +++ b/deploy/lambda/deploy.py @@ -0,0 +1,1081 @@ +#!/usr/bin/env python3 +""" +Crawl4ai AWS Lambda Deployment Script + +This script automates the deployment of the Crawl4ai web crawler as an AWS Lambda function, +providing an interactive step-by-step process with rich terminal UI. +""" + +import os +import sys +import json +import time +import subprocess +from typing import Optional, Dict, List, Any, Tuple + +import typer +from rich.console import Console +from rich.panel import Panel +from rich.prompt import Prompt, Confirm +from rich.progress import Progress, SpinnerColumn, TextColumn +from rich.syntax import Syntax +from rich.table import Table +from rich import print as rprint + +# Initialize typer app and console +app = typer.Typer(help="Deploy Crawl4ai to AWS Lambda") +console = Console() + +# Default configuration +DEFAULT_CONFIG = { + "aws_region": "us-east-1", + "ecr_repository_name": "crawl4ai-lambda", + "lambda_function_name": "crawl4ai-function", + "api_gateway_name": "crawl4ai-api", + "memory_size": 4096, + "timeout": 300, + "enable_provisioned_concurrency": False, + "provisioned_concurrency_count": 2, + "ephemeral_storage_size": 10240, +} + +def run_command(command: List[str], capture_output: bool = False) -> Tuple[int, str, str]: + """Run a shell command and return exit code, stdout, and stderr.""" + console.print(f"[dim]$ {' '.join(command)}[/dim]") + + result = subprocess.run( + command, + capture_output=True, + text=True + ) + + stdout = result.stdout.strip() + stderr = result.stderr.strip() + + if not capture_output: + if stdout: + console.print(stdout) + if stderr and result.returncode != 0: + console.print(f"[bold red]Error:[/bold red] {stderr}") + + return result.returncode, stdout, stderr + +def show_step_header(step_number: int, step_title: str) -> None: + """Display a step header with step number and title.""" + console.print(f"\n[bold blue]Step {step_number}:[/bold blue] [bold]{step_title}[/bold]") + console.print("=" * 80) + +def wait_for_confirmation(message: str = "Press Enter to continue...") -> None: + """Wait for user confirmation to proceed.""" + console.print() + Prompt.ask(f"[yellow]{message}[/yellow]") + +def check_aws_credentials() -> bool: + """Check if AWS credentials are configured.""" + code, stdout, stderr = run_command(["aws", "sts", "get-caller-identity"], capture_output=True) + if code != 0: + console.print(Panel( + "[bold red]AWS credentials not found or invalid![/bold red]\n\n" + "Please configure your AWS credentials by running:\n" + " aws configure\n\n" + "You'll need to provide your AWS Access Key ID, Secret Access Key, and default region.", + title="AWS Authentication Error", + expand=False + )) + return False + + try: + identity = json.loads(stdout) + console.print(f"[green]Authenticated as:[/green] [bold]{identity.get('Arn')}[/bold]") + return True + except json.JSONDecodeError: + console.print("[bold red]Error parsing AWS identity information[/bold red]") + return False + +def check_prerequisites() -> bool: + """Check if all required tools are installed.""" + prerequisites = { + "aws": "AWS CLI", + "docker": "Docker" + } + + all_installed = True + + with console.status("[bold blue]Checking prerequisites...[/bold blue]"): + for cmd, name in prerequisites.items(): + try: + subprocess.run( + ["which", cmd], + check=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE + ) + console.print(f"[green]✓[/green] {name} is installed") + except subprocess.CalledProcessError: + console.print(f"[red]✗[/red] {name} is [bold red]not installed[/bold red]") + all_installed = False + + if not all_installed: + console.print(Panel( + "Please install the missing prerequisites and try again.", + title="Missing Prerequisites", + expand=False + )) + + return all_installed + +def verify_iam_role(config: Dict[str, Any]) -> Optional[str]: + """Verify the Lambda execution role exists and return its ARN.""" + role_name = "lambda-execution-role" + with console.status(f"[bold blue]Verifying IAM role '{role_name}'...[/bold blue]"): + code, stdout, stderr = run_command( + ["aws", "iam", "get-role", "--role-name", role_name, "--query", "Role.Arn", "--output", "text"], + capture_output=True + ) + + if code != 0: + console.print(f"[bold yellow]IAM role '{role_name}' not found. Creating it...[/bold yellow]") + # Create basic execution role + policy_document = json.dumps({ + "Version": "2012-10-17", + "Statement": [{ + "Effect": "Allow", + "Principal": {"Service": "lambda.amazonaws.com"}, + "Action": "sts:AssumeRole" + }] + }) + + code, create_stdout, create_stderr = run_command([ + "aws", "iam", "create-role", + "--role-name", role_name, + "--assume-role-policy-document", policy_document, + "--query", "Role.Arn", + "--output", "text" + ], capture_output=True) + + if code != 0: + console.print(f"[bold red]Failed to create IAM role:[/bold red] {create_stderr}") + return None + + # Attach basic Lambda execution policy + run_command([ + "aws", "iam", "attach-role-policy", + "--role-name", role_name, + "--policy-arn", "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ]) + + console.print(f"[green]Created IAM role:[/green] {create_stdout.strip()}") + return create_stdout.strip() + else: + console.print(f"[green]Found IAM role:[/green] {stdout.strip()}") + return stdout.strip() + +def build_docker_image(config: Dict[str, Any]) -> bool: + """Build the Docker image for the Lambda function.""" + show_step_header(1, "Building Docker Image") + console.print("This step will build the Docker image that contains Crawl4ai and its dependencies.") + + if not os.path.exists("Dockerfile"): + console.print("[bold red]Error:[/bold red] Dockerfile not found in the current directory.") + return False + + if not os.path.exists("lambda_function.py"): + console.print("[bold red]Error:[/bold red] lambda_function.py not found in the current directory.") + return False + + wait_for_confirmation() + + with Progress( + SpinnerColumn(), + TextColumn("[bold blue]Building Docker image...[/bold blue]"), + console=console + ) as progress: + progress.add_task("build", total=None) + code, stdout, stderr = run_command([ + "docker", "build", "-t", config["ecr_repository_name"], "." + ]) + + if code != 0: + console.print("[bold red]Docker build failed![/bold red]") + return False + + console.print("[bold green]Docker image built successfully![/bold green]") + return True + +def setup_ecr_repository(config: Dict[str, Any]) -> Optional[str]: + """Create ECR repository if it doesn't exist and return repository URI.""" + show_step_header(2, "Setting Up Amazon ECR Repository") + console.print("This step will create an Amazon ECR repository to store the Docker image.") + + wait_for_confirmation() + + # Check if repository exists + code, stdout, stderr = run_command([ + "aws", "ecr", "describe-repositories", + "--repository-names", config["ecr_repository_name"], + "--region", config["aws_region"], + "--query", "repositories[0].repositoryUri", + "--output", "text" + ], capture_output=True) + + if code != 0: + console.print(f"[yellow]Creating new ECR repository: {config['ecr_repository_name']}[/yellow]") + code, create_stdout, create_stderr = run_command([ + "aws", "ecr", "create-repository", + "--repository-name", config["ecr_repository_name"], + "--region", config["aws_region"], + "--query", "repository.repositoryUri", + "--output", "text" + ], capture_output=True) + + if code != 0: + console.print(f"[bold red]Failed to create ECR repository:[/bold red] {create_stderr}") + return None + + repository_uri = create_stdout.strip() + else: + repository_uri = stdout.strip() + console.print(f"[green]Found existing ECR repository:[/green] {repository_uri}") + + return repository_uri + +def push_image_to_ecr(config: Dict[str, Any], repository_uri: str) -> bool: + """Push the Docker image to ECR.""" + show_step_header(3, "Pushing Docker Image to ECR") + console.print("This step will push the Docker image to Amazon ECR.") + + wait_for_confirmation() + + # Get account ID + code, account_id, stderr = run_command([ + "aws", "sts", "get-caller-identity", + "--query", "Account", + "--output", "text" + ], capture_output=True) + + if code != 0: + console.print("[bold red]Failed to get AWS account ID[/bold red]") + return False + + account_id = account_id.strip() + + # Get ECR login password + console.print("[blue]Logging in to Amazon ECR...[/blue]") + code, password, stderr = run_command([ + "aws", "ecr", "get-login-password", + "--region", config["aws_region"] + ], capture_output=True) + + if code != 0: + console.print("[bold red]Failed to get ECR login password[/bold red]") + return False + + # Log in to ECR + login_cmd = ["docker", "login", "--username", "AWS", "--password-stdin", + f"{account_id}.dkr.ecr.{config['aws_region']}.amazonaws.com"] + + login_process = subprocess.Popen( + login_cmd, + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + text=True + ) + + stdout, stderr = login_process.communicate(input=password) + + if login_process.returncode != 0: + console.print(f"[bold red]Failed to log in to ECR:[/bold red] {stderr}") + return False + + console.print("[green]Successfully logged in to ECR[/green]") + + # Tag and push image + console.print(f"[blue]Tagging image as {repository_uri}:latest[/blue]") + code, stdout, stderr = run_command([ + "docker", "tag", + f"{config['ecr_repository_name']}:latest", + f"{repository_uri}:latest" + ]) + + if code != 0: + console.print("[bold red]Failed to tag Docker image[/bold red]") + return False + + with Progress( + SpinnerColumn(), + TextColumn("[bold blue]Pushing image to ECR...[/bold blue]"), + console=console + ) as progress: + progress.add_task("push", total=None) + code, stdout, stderr = run_command([ + "docker", "push", f"{repository_uri}:latest" + ]) + + if code != 0: + console.print("[bold red]Failed to push image to ECR[/bold red]") + return False + + console.print("[bold green]Successfully pushed image to ECR![/bold green]") + return True + +def deploy_lambda_function(config: Dict[str, Any], repository_uri: str, role_arn: str) -> bool: + """Create or update Lambda function.""" + show_step_header(4, "Deploying Lambda Function") + console.print("This step will create or update the AWS Lambda function.") + + wait_for_confirmation() + + # Check if Lambda function exists + code, stdout, stderr = run_command([ + "aws", "lambda", "list-functions", + "--region", config["aws_region"], + "--query", f"Functions[?FunctionName=='{config['lambda_function_name']}'].FunctionName", + "--output", "text" + ], capture_output=True) + + function_exists = stdout.strip() != "" + + if function_exists: + console.print(f"[yellow]Updating existing Lambda function: {config['lambda_function_name']}[/yellow]") + + # Update function code + with console.status("[bold blue]Updating Lambda function code...[/bold blue]"): + code, stdout, stderr = run_command([ + "aws", "lambda", "update-function-code", + "--region", config["aws_region"], + "--function-name", config["lambda_function_name"], + "--image-uri", f"{repository_uri}:latest" + ]) + + if code != 0: + console.print("[bold red]Failed to update Lambda function code[/bold red]") + return False + + # Update function configuration + with console.status("[bold blue]Updating Lambda function configuration...[/bold blue]"): + code, stdout, stderr = run_command([ + "aws", "lambda", "update-function-configuration", + "--region", config["aws_region"], + "--function-name", config["lambda_function_name"], + "--timeout", str(config["timeout"]), + "--memory-size", str(config["memory_size"]), + "--ephemeral-storage", f"Size={config['ephemeral_storage_size']}", + "--environment", f"Variables={{" + f"CRAWL4_AI_BASE_DIRECTORY=/tmp/.crawl4ai," + f"HOME=/tmp," + f"PLAYWRIGHT_BROWSERS_PATH=/function/pw-browsers" + f"}}" + ]) + + if code != 0: + console.print("[bold red]Failed to update Lambda function configuration[/bold red]") + return False + else: + console.print(f"[blue]Creating new Lambda function: {config['lambda_function_name']}[/blue]") + + with console.status("[bold blue]Creating Lambda function...[/bold blue]"): + code, stdout, stderr = run_command([ + "aws", "lambda", "create-function", + "--region", config["aws_region"], + "--function-name", config["lambda_function_name"], + "--package-type", "Image", + "--code", f"ImageUri={repository_uri}:latest", + "--role", role_arn, + "--timeout", str(config["timeout"]), + "--memory-size", str(config["memory_size"]), + "--ephemeral-storage", f"Size={config['ephemeral_storage_size']}", + "--environment", f"Variables={{" + f"CRAWL4_AI_BASE_DIRECTORY=/tmp/.crawl4ai," + f"HOME=/tmp," + f"PLAYWRIGHT_BROWSERS_PATH=/function/pw-browsers" + f"}}" + ]) + + if code != 0: + console.print("[bold red]Failed to create Lambda function[/bold red]") + return False + + console.print("[bold green]Lambda function deployed successfully![/bold green]") + return True + +def setup_api_gateway(config: Dict[str, Any]) -> Optional[str]: + """Create or update API Gateway.""" + show_step_header(5, "Setting Up API Gateway") + console.print("This step will create an API Gateway to expose your Lambda function as a REST API.") + + wait_for_confirmation() + + # Check if API Gateway exists + code, api_id, stderr = run_command([ + "aws", "apigateway", "get-rest-apis", + "--region", config["aws_region"], + "--query", f"items[?name=='{config['api_gateway_name']}'].id", + "--output", "text" + ], capture_output=True) + + api_id = api_id.strip() + + if not api_id: + console.print(f"[blue]Creating new API Gateway: {config['api_gateway_name']}[/blue]") + + # Create API Gateway + code, api_id, stderr = run_command([ + "aws", "apigateway", "create-rest-api", + "--name", config["api_gateway_name"], + "--region", config["aws_region"], + "--query", "id", + "--output", "text" + ], capture_output=True) + + if code != 0: + console.print("[bold red]Failed to create API Gateway[/bold red]") + return None + + api_id = api_id.strip() + + # Get root resource ID + code, parent_id, stderr = run_command([ + "aws", "apigateway", "get-resources", + "--rest-api-id", api_id, + "--region", config["aws_region"], + "--query", "items[?path=='/'].id", + "--output", "text" + ], capture_output=True) + + if code != 0: + console.print("[bold red]Failed to get API Gateway root resource[/bold red]") + return None + + parent_id = parent_id.strip() + + # Create resource + console.print("[blue]Creating API Gateway resource...[/blue]") + code, resource_id, stderr = run_command([ + "aws", "apigateway", "create-resource", + "--rest-api-id", api_id, + "--region", config["aws_region"], + "--parent-id", parent_id, + "--path-part", "crawl", + "--query", "id", + "--output", "text" + ], capture_output=True) + + if code != 0: + console.print("[bold red]Failed to create API Gateway resource[/bold red]") + return None + + resource_id = resource_id.strip() + + # Create POST method + console.print("[blue]Creating POST method...[/blue]") + code, stdout, stderr = run_command([ + "aws", "apigateway", "put-method", + "--rest-api-id", api_id, + "--resource-id", resource_id, + "--http-method", "POST", + "--authorization-type", "NONE", + "--region", config["aws_region"] + ]) + + if code != 0: + console.print("[bold red]Failed to create API Gateway method[/bold red]") + return None + + # Get Lambda function ARN + code, lambda_arn, stderr = run_command([ + "aws", "lambda", "get-function", + "--function-name", config["lambda_function_name"], + "--region", config["aws_region"], + "--query", "Configuration.FunctionArn", + "--output", "text" + ], capture_output=True) + + if code != 0: + console.print("[bold red]Failed to get Lambda function ARN[/bold red]") + return None + + lambda_arn = lambda_arn.strip() + + # Set Lambda integration + console.print("[blue]Setting up Lambda integration...[/blue]") + code, stdout, stderr = run_command([ + "aws", "apigateway", "put-integration", + "--rest-api-id", api_id, + "--resource-id", resource_id, + "--http-method", "POST", + "--type", "AWS_PROXY", + "--integration-http-method", "POST", + "--uri", f"arn:aws:apigateway:{config['aws_region']}:lambda:path/2015-03-31/functions/{lambda_arn}/invocations", + "--region", config["aws_region"] + ]) + + if code != 0: + console.print("[bold red]Failed to set API Gateway integration[/bold red]") + return None + + # Deploy API + console.print("[blue]Deploying API...[/blue]") + code, stdout, stderr = run_command([ + "aws", "apigateway", "create-deployment", + "--rest-api-id", api_id, + "--stage-name", "prod", + "--region", config["aws_region"] + ]) + + if code != 0: + console.print("[bold red]Failed to deploy API Gateway[/bold red]") + return None + + # Set Lambda permission + account_id = lambda_arn.split(":")[4] + + console.print("[blue]Setting Lambda permissions...[/blue]") + code, stdout, stderr = run_command([ + "aws", "lambda", "add-permission", + "--function-name", config["lambda_function_name"], + "--statement-id", "apigateway", + "--action", "lambda:InvokeFunction", + "--principal", "apigateway.amazonaws.com", + "--source-arn", f"arn:aws:execute-api:{config['aws_region']}:{account_id}:{api_id}/*/POST/crawl", + "--region", config["aws_region"] + ]) + + if code != 0: + console.print("[bold red]Failed to set Lambda permission[/bold red]") + return None + else: + console.print(f"[green]Found existing API Gateway:[/green] {api_id}") + + console.print("[bold green]API Gateway setup complete![/bold green]") + return api_id + +def configure_provisioned_concurrency(config: Dict[str, Any]) -> bool: + """Configure provisioned concurrency if enabled.""" + if not config["enable_provisioned_concurrency"]: + console.print("[yellow]Skipping provisioned concurrency setup (not enabled)[/yellow]") + return True + + show_step_header(6, "Setting Up Provisioned Concurrency") + console.print("This step will configure provisioned concurrency to avoid cold starts.") + + wait_for_confirmation() + + # Publish a version + console.print("[blue]Publishing Lambda version...[/blue]") + code, version, stderr = run_command([ + "aws", "lambda", "publish-version", + "--function-name", config["lambda_function_name"], + "--region", config["aws_region"], + "--query", "Version", + "--output", "text" + ], capture_output=True) + + if code != 0: + console.print("[bold red]Failed to publish Lambda version[/bold red]") + return False + + version = version.strip() + console.print(f"[green]Published version:[/green] {version}") + + # Check if alias exists + alias_exists = False + code, stdout, stderr = run_command([ + "aws", "lambda", "get-alias", + "--function-name", config["lambda_function_name"], + "--name", "prod", + "--region", config["aws_region"] + ], capture_output=True) + + alias_exists = code == 0 + + # Create or update alias + if alias_exists: + console.print("[blue]Updating 'prod' alias...[/blue]") + code, stdout, stderr = run_command([ + "aws", "lambda", "update-alias", + "--function-name", config["lambda_function_name"], + "--name", "prod", + "--function-version", version, + "--region", config["aws_region"] + ]) + else: + console.print("[blue]Creating 'prod' alias...[/blue]") + code, stdout, stderr = run_command([ + "aws", "lambda", "create-alias", + "--function-name", config["lambda_function_name"], + "--name", "prod", + "--function-version", version, + "--region", config["aws_region"] + ]) + + if code != 0: + console.print("[bold red]Failed to create/update alias[/bold red]") + return False + + # Configure provisioned concurrency + console.print(f"[blue]Configuring provisioned concurrency ({config['provisioned_concurrency_count']} instances)...[/blue]") + code, stdout, stderr = run_command([ + "aws", "lambda", "put-provisioned-concurrency-config", + "--function-name", config["lambda_function_name"], + "--qualifier", "prod", + "--provisioned-concurrent-executions", str(config["provisioned_concurrency_count"]), + "--region", config["aws_region"] + ]) + + if code != 0: + console.print("[bold red]Failed to configure provisioned concurrency[/bold red]") + return False + + # Update API Gateway to use alias + api_id = run_command([ + "aws", "apigateway", "get-rest-apis", + "--region", config["aws_region"], + "--query", f"items[?name=='{config['api_gateway_name']}'].id", + "--output", "text" + ], capture_output=True)[1].strip() + + if not api_id: + console.print("[bold red]Failed to find API Gateway ID[/bold red]") + return False + + resource_id = run_command([ + "aws", "apigateway", "get-resources", + "--rest-api-id", api_id, + "--region", config["aws_region"], + "--query", "items[?path=='/crawl'].id", + "--output", "text" + ], capture_output=True)[1].strip() + + if not resource_id: + console.print("[bold red]Failed to find API Gateway resource ID[/bold red]") + return False + + account_id = run_command([ + "aws", "sts", "get-caller-identity", + "--query", "Account", + "--output", "text" + ], capture_output=True)[1].strip() + + lambda_alias_arn = f"arn:aws:lambda:{config['aws_region']}:{account_id}:function:{config['lambda_function_name']}:prod" + + console.print("[blue]Updating API Gateway to use Lambda alias...[/blue]") + code, stdout, stderr = run_command([ + "aws", "apigateway", "put-integration", + "--rest-api-id", api_id, + "--resource-id", resource_id, + "--http-method", "POST", + "--type", "AWS_PROXY", + "--integration-http-method", "POST", + "--uri", f"arn:aws:apigateway:{config['aws_region']}:lambda:path/2015-03-31/functions/{lambda_alias_arn}/invocations", + "--region", config["aws_region"] + ]) + + if code != 0: + console.print("[bold red]Failed to update API Gateway integration[/bold red]") + return False + + # Redeploy API Gateway + console.print("[blue]Redeploying API Gateway...[/blue]") + code, stdout, stderr = run_command([ + "aws", "apigateway", "create-deployment", + "--rest-api-id", api_id, + "--stage-name", "prod", + "--region", config["aws_region"] + ]) + + if code != 0: + console.print("[bold red]Failed to redeploy API Gateway[/bold red]") + return False + + console.print("[bold green]Provisioned concurrency setup complete![/bold green]") + return True + +def show_deployment_summary(config: Dict[str, Any], api_id: str) -> None: + """Show a summary of the deployment.""" + endpoint_url = f"https://{api_id}.execute-api.{config['aws_region']}.amazonaws.com/prod/crawl" + + # Create a summary table + table = Table(title="Deployment Summary") + table.add_column("Component", style="cyan") + table.add_column("Details", style="green") + + table.add_row("API Endpoint", endpoint_url) + table.add_row("Lambda Function", config["lambda_function_name"]) + table.add_row("Memory Size", f"{config['memory_size']} MB") + table.add_row("Timeout", f"{config['timeout']} seconds") + table.add_row("Ephemeral Storage", f"{config['ephemeral_storage_size']} MB") + table.add_row("Provisioned Concurrency", + "Enabled" if config["enable_provisioned_concurrency"] + else "Disabled") + + if config["enable_provisioned_concurrency"]: + table.add_row("Concurrency Units", str(config["provisioned_concurrency_count"])) + + console.print("\n") + console.print(Panel( + "🚀 [bold green]Crawl4ai has been successfully deployed to AWS Lambda![/bold green]", + expand=False + )) + console.print(table) + + # Example usage + console.print("\n[bold]Example Usage:[/bold]") + url = "https://example.com" + example_cmd = f"curl -X POST {endpoint_url} -H 'Content-Type: application/json' -d '{{\"url\": \"{url}\"}}'" + console.print(Syntax(example_cmd, "bash", theme="monokai", line_numbers=False)) + + console.print("\n[bold]Python Example:[/bold]") + python_example = f'''import requests +import json + +url = "{endpoint_url}" +payload = {{ + "url": "https://example.com", + "browser_config": {{ + "headless": True, + "verbose": False + }}, + "crawler_config": {{ + "crawler_config": {{ + "type": "CrawlerRunConfig", + "params": {{ + "markdown_generator": {{ + "type": "DefaultMarkdownGenerator", + "params": {{ + "content_filter": {{ + "type": "PruningContentFilter", + "params": {{ + "threshold": 0.48, + "threshold_type": "fixed" + }} + }} + }} + }} + }} + }} + }} +}} + +response = requests.post(url, json=payload) +result = response.json() +print(json.dumps(result, indent=2)) +''' + console.print(Syntax(python_example, "python", theme="monokai", line_numbers=False)) + + console.print("\n[bold green]Thank you for using Crawl4ai on AWS Lambda![/bold green]") + + +def cleanup_resources(config: Dict[str, Any]) -> None: + """Clean up all AWS resources created for Crawl4ai deployment.""" + show_step_header("Cleanup", "Removing AWS Resources") + console.print("This will remove all AWS resources created for Crawl4ai deployment, including:") + console.print(" • Lambda Function") + console.print(" • API Gateway") + console.print(" • ECR Repository and Images") + console.print(" • IAM Permissions") + + if not Confirm.ask( + "[bold red]⚠️ Are you sure you want to delete all resources?[/bold red]", + default=False + ): + console.print("[yellow]Cleanup cancelled.[/yellow]") + return + + # Get API Gateway ID + api_id = None + with console.status("[blue]Finding API Gateway...[/blue]"): + code, api_id, stderr = run_command([ + "aws", "apigateway", "get-rest-apis", + "--region", config["aws_region"], + "--query", f"items[?name=='{config['api_gateway_name']}'].id", + "--output", "text" + ], capture_output=True) + api_id = api_id.strip() + + # Delete API Gateway + if api_id: + console.print(f"[blue]Deleting API Gateway: {api_id}[/blue]") + code, stdout, stderr = run_command([ + "aws", "apigateway", "delete-rest-api", + "--rest-api-id", api_id, + "--region", config["aws_region"] + ]) + + if code == 0: + console.print("[green]✓[/green] API Gateway deleted successfully") + else: + console.print(f"[red]✗[/red] Failed to delete API Gateway: {stderr}") + else: + console.print("[yellow]No API Gateway found to delete[/yellow]") + + # Check if Lambda function exists + lambda_exists = False + with console.status("[blue]Checking Lambda function...[/blue]"): + code, stdout, stderr = run_command([ + "aws", "lambda", "get-function", + "--function-name", config["lambda_function_name"], + "--region", config["aws_region"] + ], capture_output=True) + lambda_exists = code == 0 + + # Delete provisioned concurrency if it exists + if lambda_exists and config.get("enable_provisioned_concurrency", False): + try: + console.print("[blue]Removing provisioned concurrency...[/blue]") + run_command([ + "aws", "lambda", "delete-provisioned-concurrency-config", + "--function-name", config["lambda_function_name"], + "--qualifier", "prod", + "--region", config["aws_region"] + ], capture_output=True) + + console.print("[blue]Deleting function alias...[/blue]") + run_command([ + "aws", "lambda", "delete-alias", + "--function-name", config["lambda_function_name"], + "--name", "prod", + "--region", config["aws_region"] + ], capture_output=True) + except Exception as e: + console.print(f"[yellow]Warning: {str(e)}[/yellow]") + + # Delete Lambda function + if lambda_exists: + console.print(f"[blue]Deleting Lambda function: {config['lambda_function_name']}[/blue]") + code, stdout, stderr = run_command([ + "aws", "lambda", "delete-function", + "--function-name", config["lambda_function_name"], + "--region", config["aws_region"] + ]) + + if code == 0: + console.print("[green]✓[/green] Lambda function deleted successfully") + else: + console.print(f"[red]✗[/red] Failed to delete Lambda function: {stderr}") + else: + console.print("[yellow]No Lambda function found to delete[/yellow]") + + # Check if ECR repository exists + ecr_exists = False + with console.status("[blue]Checking ECR repository...[/blue]"): + code, stdout, stderr = run_command([ + "aws", "ecr", "describe-repositories", + "--repository-names", config["ecr_repository_name"], + "--region", config["aws_region"] + ], capture_output=True) + ecr_exists = code == 0 + + # Delete ECR repository + if ecr_exists: + console.print(f"[blue]Deleting ECR repository: {config['ecr_repository_name']}[/blue]") + code, stdout, stderr = run_command([ + "aws", "ecr", "delete-repository", + "--repository-name", config["ecr_repository_name"], + "--force", # Force delete even if it contains images + "--region", config["aws_region"] + ]) + + if code == 0: + console.print("[green]✓[/green] ECR repository deleted successfully") + else: + console.print(f"[red]✗[/red] Failed to delete ECR repository: {stderr}") + else: + console.print("[yellow]No ECR repository found to delete[/yellow]") + + # Check and clean up IAM permissions + console.print("[blue]Cleaning up IAM permissions...[/blue]") + try: + # Remove the Lambda permission for API Gateway + run_command([ + "aws", "lambda", "remove-permission", + "--function-name", config["lambda_function_name"], + "--statement-id", "apigateway", + "--region", config["aws_region"] + ], capture_output=True) + except Exception: + # It's okay if this fails, the function might already be deleted + pass + + # Clean up local Docker images + console.print("[blue]Cleaning up local Docker images...[/blue]") + try: + # Get account ID + code, account_id, stderr = run_command([ + "aws", "sts", "get-caller-identity", + "--query", "Account", + "--output", "text" + ], capture_output=True) + + if code == 0: + account_id = account_id.strip() + repo_uri = f"{account_id}.dkr.ecr.{config['aws_region']}.amazonaws.com/{config['ecr_repository_name']}" + + run_command([ + "docker", "rmi", + f"{repo_uri}:latest", + "--force" + ], capture_output=True) + + run_command([ + "docker", "rmi", + f"{config['ecr_repository_name']}:latest", + "--force" + ], capture_output=True) + except Exception as e: + console.print(f"[yellow]Warning: Failed to clean up Docker images: {str(e)}[/yellow]") + + console.print("\n[bold green]Cleanup Complete![/bold green]") + console.print("All AWS resources for the Crawl4ai deployment have been removed.") + +# Add this to the app commands +@app.command() +def cleanup(): + """ + Remove all AWS resources created for Crawl4ai deployment. + + This will delete the Lambda function, API Gateway, and ECR repository. + """ + console.print(Panel( + "[bold red]Crawl4ai AWS Resources Cleanup[/bold red]\n\n" + "This will remove all AWS resources created for Crawl4ai deployment.", + title="Warning", + expand=False + )) + + # Check AWS credentials + if not check_aws_credentials(): + return + + # Get configuration + config = DEFAULT_CONFIG.copy() + + console.print("\n[bold]Configuration[/bold]") + console.print("Please confirm the resources to clean up:") + + config["aws_region"] = Prompt.ask( + "AWS Region", + default=config["aws_region"] + ) + + config["lambda_function_name"] = Prompt.ask( + "Lambda Function Name", + default=config["lambda_function_name"] + ) + + config["api_gateway_name"] = Prompt.ask( + "API Gateway Name", + default=config["api_gateway_name"] + ) + + config["ecr_repository_name"] = Prompt.ask( + "ECR Repository Name", + default=config["ecr_repository_name"] + ) + + # Run cleanup + cleanup_resources(config) + +@app.command() +def main() -> None: + """ + Deploy Crawl4ai to AWS Lambda. + + This script guides you through the process of deploying Crawl4ai + as an AWS Lambda function with API Gateway integration. + """ + # Show welcome banner + console.print(Panel( + "[bold blue]Crawl4ai AWS Lambda Deployment Wizard[/bold blue]\n\n" + "This tool will help you deploy Crawl4ai to AWS Lambda with API Gateway integration.", + title="Welcome", + expand=False + )) + + # Check prerequisites + if not check_prerequisites(): + return + + # Check AWS credentials + if not check_aws_credentials(): + return + + # Get configuration + config = DEFAULT_CONFIG.copy() + + console.print("\n[bold]Configuration[/bold]") + console.print("Please configure your deployment:") + + config["aws_region"] = Prompt.ask( + "AWS Region", + default=config["aws_region"] + ) + + config["lambda_function_name"] = Prompt.ask( + "Lambda Function Name", + default=config["lambda_function_name"] + ) + + config["api_gateway_name"] = Prompt.ask( + "API Gateway Name", + default=config["api_gateway_name"] + ) + + config["memory_size"] = int(Prompt.ask( + "Lambda Memory Size (MB)", + default=str(config["memory_size"]) + )) + + config["timeout"] = int(Prompt.ask( + "Lambda Timeout (seconds)", + default=str(config["timeout"]) + )) + + config["enable_provisioned_concurrency"] = Confirm.ask( + "Enable Provisioned Concurrency (reduces cold starts)?", + default=config["enable_provisioned_concurrency"] + ) + + if config["enable_provisioned_concurrency"]: + config["provisioned_concurrency_count"] = int(Prompt.ask( + "Number of Provisioned Concurrency instances", + default=str(config["provisioned_concurrency_count"]) + )) + + # Verify IAM role + role_arn = verify_iam_role(config) + if not role_arn: + console.print("[bold red]Failed to verify or create IAM role[/bold red]") + return + + # Build Docker image + if not build_docker_image(config): + return + + # Setup ECR repository + repository_uri = setup_ecr_repository(config) + if not repository_uri: + return + + # Push image to ECR + if not push_image_to_ecr(config, repository_uri): + return + + # Deploy Lambda function + if not deploy_lambda_function(config, repository_uri, role_arn): + return + + # Setup API Gateway + api_id = setup_api_gateway(config) + if not api_id: + return + + # Configure provisioned concurrency if enabled + if not configure_provisioned_concurrency(config): + return + + # Show deployment summary + show_deployment_summary(config, api_id) + +if __name__ == "__main__": + app() \ No newline at end of file diff --git a/deploy/lambda/guide.md b/deploy/lambda/guide.md new file mode 100644 index 00000000..01b683ad --- /dev/null +++ b/deploy/lambda/guide.md @@ -0,0 +1,345 @@ +# Deploying Crawl4ai on AWS Lambda + +This guide walks you through deploying Crawl4ai as an AWS Lambda function with API Gateway integration. You'll learn how to set up, test, and clean up your deployment. + +## Prerequisites + +Before you begin, ensure you have: + +- AWS CLI installed and configured (`aws configure`) +- Docker installed and running +- Python 3.8+ installed +- Basic familiarity with AWS services + +## Project Files + +Your project directory should contain: + +- `Dockerfile`: Container configuration for Lambda +- `lambda_function.py`: Lambda handler code +- `deploy.py`: Our deployment script + +## Step 1: Install Required Python Packages + +Install the Python packages needed for our deployment script: + +```bash +pip install typer rich +``` + +## Step 2: Run the Deployment Script + +Our Python script automates the entire deployment process: + +```bash +python deploy.py +``` + +The script will guide you through: + +1. Configuration setup (AWS region, function name, memory allocation) +2. Docker image building +3. ECR repository creation +4. Lambda function deployment +5. API Gateway setup +6. Provisioned concurrency configuration (optional) + +Follow the prompts and confirm each step by pressing Enter. + +## Step 3: Manual Deployment (Alternative to the Script) + +If you prefer to deploy manually or understand what the script does, follow these steps: + +### Building and Pushing the Docker Image + +```bash +# Build the Docker image +docker build -t crawl4ai-lambda . + +# Create an ECR repository (if it doesn't exist) +aws ecr create-repository --repository-name crawl4ai-lambda + +# Get ECR login password and login +aws ecr get-login-password | docker login --username AWS --password-stdin $(aws sts get-caller-identity --query Account --output text).dkr.ecr.us-east-1.amazonaws.com + +# Tag the image +ECR_URI=$(aws ecr describe-repositories --repository-names crawl4ai-lambda --query 'repositories[0].repositoryUri' --output text) +docker tag crawl4ai-lambda:latest $ECR_URI:latest + +# Push the image to ECR +docker push $ECR_URI:latest +``` + +### Creating the Lambda Function + +```bash +# Get IAM role ARN (create it if needed) +ROLE_ARN=$(aws iam get-role --role-name lambda-execution-role --query 'Role.Arn' --output text) + +# Create Lambda function +aws lambda create-function \ + --function-name crawl4ai-function \ + --package-type Image \ + --code ImageUri=$ECR_URI:latest \ + --role $ROLE_ARN \ + --timeout 300 \ + --memory-size 4096 \ + --ephemeral-storage Size=10240 \ + --environment "Variables={CRAWL4_AI_BASE_DIRECTORY=/tmp/.crawl4ai,HOME=/tmp,PLAYWRIGHT_BROWSERS_PATH=/function/pw-browsers}" +``` + +If you're updating an existing function: + +```bash +# Update function code +aws lambda update-function-code \ + --function-name crawl4ai-function \ + --image-uri $ECR_URI:latest + +# Update function configuration +aws lambda update-function-configuration \ + --function-name crawl4ai-function \ + --timeout 300 \ + --memory-size 4096 \ + --ephemeral-storage Size=10240 \ + --environment "Variables={CRAWL4_AI_BASE_DIRECTORY=/tmp/.crawl4ai,HOME=/tmp,PLAYWRIGHT_BROWSERS_PATH=/function/pw-browsers}" +``` + +### Setting Up API Gateway + +```bash +# Create API Gateway +API_ID=$(aws apigateway create-rest-api --name crawl4ai-api --query 'id' --output text) + +# Get root resource ID +PARENT_ID=$(aws apigateway get-resources --rest-api-id $API_ID --query 'items[?path==`/`].id' --output text) + +# Create resource +RESOURCE_ID=$(aws apigateway create-resource --rest-api-id $API_ID --parent-id $PARENT_ID --path-part "crawl" --query 'id' --output text) + +# Create POST method +aws apigateway put-method --rest-api-id $API_ID --resource-id $RESOURCE_ID --http-method POST --authorization-type NONE + +# Get Lambda function ARN +LAMBDA_ARN=$(aws lambda get-function --function-name crawl4ai-function --query 'Configuration.FunctionArn' --output text) + +# Set Lambda integration +aws apigateway put-integration \ + --rest-api-id $API_ID \ + --resource-id $RESOURCE_ID \ + --http-method POST \ + --type AWS_PROXY \ + --integration-http-method POST \ + --uri arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/$LAMBDA_ARN/invocations + +# Deploy API +aws apigateway create-deployment --rest-api-id $API_ID --stage-name prod + +# Set Lambda permission +ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text) +aws lambda add-permission \ + --function-name crawl4ai-function \ + --statement-id apigateway \ + --action lambda:InvokeFunction \ + --principal apigateway.amazonaws.com \ + --source-arn "arn:aws:execute-api:us-east-1:$ACCOUNT_ID:$API_ID/*/POST/crawl" +``` + +### Setting Up Provisioned Concurrency (Optional) + +This reduces cold starts: + +```bash +# Publish a version +VERSION=$(aws lambda publish-version --function-name crawl4ai-function --query 'Version' --output text) + +# Create alias +aws lambda create-alias \ + --function-name crawl4ai-function \ + --name prod \ + --function-version $VERSION + +# Configure provisioned concurrency +aws lambda put-provisioned-concurrency-config \ + --function-name crawl4ai-function \ + --qualifier prod \ + --provisioned-concurrent-executions 2 + +# Update API Gateway to use alias +LAMBDA_ALIAS_ARN="arn:aws:lambda:us-east-1:$ACCOUNT_ID:function:crawl4ai-function:prod" +aws apigateway put-integration \ + --rest-api-id $API_ID \ + --resource-id $RESOURCE_ID \ + --http-method POST \ + --type AWS_PROXY \ + --integration-http-method POST \ + --uri arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/$LAMBDA_ALIAS_ARN/invocations + +# Redeploy API Gateway +aws apigateway create-deployment --rest-api-id $API_ID --stage-name prod +``` + +## Step 4: Testing the Deployment + +Once deployed, test your function with: + +```bash +ENDPOINT_URL="https://$API_ID.execute-api.us-east-1.amazonaws.com/prod/crawl" + +# Test with curl +curl -X POST $ENDPOINT_URL \ + -H "Content-Type: application/json" \ + -d '{"url":"https://example.com"}' +``` + +Or using Python: + +```python +import requests +import json + +url = "https://your-api-id.execute-api.us-east-1.amazonaws.com/prod/crawl" +payload = { + "url": "https://example.com", + "browser_config": { + "headless": True, + "verbose": False + }, + "crawler_config": { + "crawler_config": { + "type": "CrawlerRunConfig", + "params": { + "markdown_generator": { + "type": "DefaultMarkdownGenerator", + "params": { + "content_filter": { + "type": "PruningContentFilter", + "params": { + "threshold": 0.48, + "threshold_type": "fixed" + } + } + } + } + } + } + } +} + +response = requests.post(url, json=payload) +result = response.json() +print(json.dumps(result, indent=2)) +``` + +## Step 5: Cleaning Up Resources + +To remove all AWS resources created for this deployment: + +```bash +python deploy.py cleanup +``` + +Or manually: + +```bash +# Delete API Gateway +aws apigateway delete-rest-api --rest-api-id $API_ID + +# Remove provisioned concurrency (if configured) +aws lambda delete-provisioned-concurrency-config \ + --function-name crawl4ai-function \ + --qualifier prod + +# Delete alias (if created) +aws lambda delete-alias \ + --function-name crawl4ai-function \ + --name prod + +# Delete Lambda function +aws lambda delete-function --function-name crawl4ai-function + +# Delete ECR repository +aws ecr delete-repository --repository-name crawl4ai-lambda --force +``` + +## Troubleshooting + +### Cold Start Issues + +If experiencing long cold starts: +- Enable provisioned concurrency +- Increase memory allocation (4096 MB recommended) +- Ensure the Lambda function has enough ephemeral storage + +### Permission Errors + +If you encounter permission errors: +- Check the IAM role has the necessary permissions +- Ensure API Gateway has permission to invoke the Lambda function + +### Container Size Issues + +If your container is too large: +- Optimize the Dockerfile +- Use multi-stage builds +- Consider removing unnecessary dependencies + +## Performance Considerations + +- Lambda memory affects CPU allocation - higher memory means faster execution +- Provisioned concurrency eliminates cold starts but costs more +- Optimize the Playwright setup for faster browser initialization + +## Security Best Practices + +- Use the principle of least privilege for IAM roles +- Implement API Gateway authentication for production deployments +- Consider using AWS KMS for storing sensitive configuration + +## Useful AWS Console Links + +Here are quick links to access important AWS console pages for monitoring and managing your deployment: + +| Resource | Console Link | +|----------|-------------| +| Lambda Functions | [AWS Lambda Console](https://console.aws.amazon.com/lambda/home#/functions) | +| Lambda Function Logs | [CloudWatch Logs](https://console.aws.amazon.com/cloudwatch/home#logsV2:log-groups) | +| API Gateway | [API Gateway Console](https://console.aws.amazon.com/apigateway/home) | +| ECR Repositories | [ECR Console](https://console.aws.amazon.com/ecr/repositories) | +| IAM Roles | [IAM Console](https://console.aws.amazon.com/iamv2/home#/roles) | +| CloudWatch Metrics | [CloudWatch Metrics](https://console.aws.amazon.com/cloudwatch/home#metricsV2) | + +### Monitoring Lambda Execution + +To monitor your Lambda function: + +1. Go to the [Lambda function console](https://console.aws.amazon.com/lambda/home#/functions) +2. Select your function (`crawl4ai-function`) +3. Click the "Monitor" tab to see: + - Invocation metrics + - Success/failure rates + - Duration statistics + +### Viewing Lambda Logs + +To see detailed execution logs: + +1. Go to [CloudWatch Logs](https://console.aws.amazon.com/cloudwatch/home#logsV2:log-groups) +2. Find the log group named `/aws/lambda/crawl4ai-function` +3. Click to see the latest log streams +4. Each stream contains logs from a function execution + +### Checking API Gateway Traffic + +To monitor API requests: + +1. Go to the [API Gateway console](https://console.aws.amazon.com/apigateway/home) +2. Select your API (`crawl4ai-api`) +3. Click "Dashboard" to see: + - API calls + - Latency + - Error rates + +## Conclusion + +You now have Crawl4ai running as a serverless function on AWS Lambda! This setup allows you to crawl websites on-demand without maintaining infrastructure, while paying only for the compute time you use. \ No newline at end of file diff --git a/deploy/lambda/lambda_function.py b/deploy/lambda/lambda_function.py new file mode 100644 index 00000000..25cdb065 --- /dev/null +++ b/deploy/lambda/lambda_function.py @@ -0,0 +1,107 @@ +import json +import asyncio +import os + +# Ensure environment variables and directories are set +os.environ['CRAWL4_AI_BASE_DIRECTORY'] = '/tmp/.crawl4ai' +os.environ['HOME'] = '/tmp' + +# Create directory if it doesn't exist +os.makedirs('/tmp/.crawl4ai', exist_ok=True) + +from crawl4ai import ( + AsyncWebCrawler, + BrowserConfig, + CrawlerRunConfig, + CacheMode +) + + +def handler(event, context): + # Parse the incoming event (API Gateway request) + try: + body = json.loads(event.get('body', '{}')) + + url = body.get('url') + if not url: + return { + 'statusCode': 400, + 'body': json.dumps({'error': 'URL is required'}) + } + + # Get optional configurations or use defaults + browser_config_dict = body.get('browser_config', {}) + crawler_config_dict = body.get('crawler_config', {}) + + # Run the crawler + result = asyncio.run(crawl(url, browser_config_dict, crawler_config_dict)) + + # Return successful response + return { + 'statusCode': 200, + 'headers': { + 'Content-Type': 'application/json' + }, + 'body': json.dumps(result) + } + + except Exception as e: + # Handle errors + import traceback + return { + 'statusCode': 500, + 'body': json.dumps({ + 'error': str(e), + 'traceback': traceback.format_exc() + }) + } + +async def crawl(url, browser_config_dict, crawler_config_dict): + """ + Run the crawler with the provided configurations, with Lambda-specific settings + """ + # Start with user-provided config but override with Lambda-required settings + base_browser_config = BrowserConfig.load(browser_config_dict) if browser_config_dict else BrowserConfig() + + # Apply Lambda-specific browser configurations + browser_config = BrowserConfig( + verbose=True, + browser_type="chromium", + headless=True, + user_agent_mode="random", + light_mode=True, + use_managed_browser=False, + extra_args=[ + "--headless=new", + "--no-sandbox", + "--disable-dev-shm-usage", + "--disable-setuid-sandbox", + "--remote-allow-origins=*", + "--autoplay-policy=user-gesture-required", + "--single-process", + ], + # # Carry over any other settings from user config that aren't overridden + # **{k: v for k, v in base_browser_config.model_dump().items() + # if k not in ['verbose', 'browser_type', 'headless', 'user_agent_mode', + # 'light_mode', 'use_managed_browser', 'extra_args']} + ) + + # Start with user-provided crawler config but ensure cache is bypassed + base_crawler_config = CrawlerRunConfig.load(crawler_config_dict) if crawler_config_dict else CrawlerRunConfig() + + # Apply Lambda-specific crawler configurations + crawler_config = CrawlerRunConfig( + exclude_external_links=base_crawler_config.exclude_external_links, + remove_overlay_elements=True, + magic=True, + cache_mode=CacheMode.BYPASS, + # Carry over markdown generator and other settings + markdown_generator=base_crawler_config.markdown_generator + ) + + # Perform the crawl with Lambda-optimized settings + async with AsyncWebCrawler(config=browser_config) as crawler: + result = await crawler.arun(url=url, config=crawler_config) + + # Return serializable results + return result.model_dump() \ No newline at end of file diff --git a/deploy/modal/crawl4ai_api_service.py b/deploy/modal/crawl4ai_api_service.py new file mode 100644 index 00000000..93fabe60 --- /dev/null +++ b/deploy/modal/crawl4ai_api_service.py @@ -0,0 +1,543 @@ +import os +import time +import uuid +from datetime import datetime +from typing import Dict, Any, Optional, List + +import modal +from modal import Image, App, Volume, Secret, web_endpoint, function + +# Configuration +APP_NAME = "crawl4ai-api" +CRAWL4AI_VERSION = "next" # Using the 'next' branch +PYTHON_VERSION = "3.10" # Compatible with playwright +DEFAULT_CREDITS = 1000 + +# Create a custom image with Crawl4ai and its dependencies +image = Image.debian_slim(python_version=PYTHON_VERSION).pip_install( + ["fastapi[standard]", "pymongo", "pydantic"] +).run_commands( + "apt-get update", + "apt-get install -y software-properties-common", + "apt-get install -y git", + "apt-add-repository non-free", + "apt-add-repository contrib", + # Install crawl4ai from the next branch + f"pip install -U git+https://github.com/unclecode/crawl4ai.git@{CRAWL4AI_VERSION}", + "pip install -U fastapi[standard]", + "pip install -U pydantic", + # Install playwright and browsers + "crawl4ai-setup", +) + +# Create persistent volume for user database +user_db = Volume.from_name("crawl4ai-users", create_if_missing=True) + +# Create admin secret for secure operations +admin_secret = Secret.from_name("admin-secret", create_if_missing=True) + +# Define the app +app = App(APP_NAME, image=image) + +# Default configurations +DEFAULT_BROWSER_CONFIG = { + "headless": True, + "verbose": False, +} + +DEFAULT_CRAWLER_CONFIG = { + "crawler_config": { + "type": "CrawlerRunConfig", + "params": { + "markdown_generator": { + "type": "DefaultMarkdownGenerator", + "params": { + "content_filter": { + "type": "PruningContentFilter", + "params": { + "threshold": 0.48, + "threshold_type": "fixed" + } + } + } + } + } + } +} + +# Database operations +@app.function(volumes={"/data": user_db}) +def init_db() -> None: + """Initialize database with indexes.""" + from pymongo import MongoClient, ASCENDING + + client = MongoClient("mongodb://localhost:27017") + db = client.crawl4ai_db + + # Ensure indexes for faster lookups + db.users.create_index([("api_token", ASCENDING)], unique=True) + db.users.create_index([("email", ASCENDING)], unique=True) + + # Create usage stats collection + db.usage_stats.create_index([("user_id", ASCENDING), ("timestamp", ASCENDING)]) + + print("Database initialized with required indexes") + +@app.function(volumes={"/data": user_db}) +def get_user_by_token(api_token: str) -> Optional[Dict[str, Any]]: + """Get user by API token.""" + from pymongo import MongoClient + from bson.objectid import ObjectId + + client = MongoClient("mongodb://localhost:27017") + db = client.crawl4ai_db + + user = db.users.find_one({"api_token": api_token}) + if not user: + return None + + # Convert ObjectId to string for serialization + user["_id"] = str(user["_id"]) + return user + +@app.function(volumes={"/data": user_db}) +def create_user(email: str, name: str) -> Dict[str, Any]: + """Create a new user with initial credits.""" + from pymongo import MongoClient + from bson.objectid import ObjectId + + client = MongoClient("mongodb://localhost:27017") + db = client.crawl4ai_db + + # Generate API token + api_token = str(uuid.uuid4()) + + user = { + "email": email, + "name": name, + "api_token": api_token, + "credits": DEFAULT_CREDITS, + "created_at": datetime.utcnow(), + "updated_at": datetime.utcnow(), + "is_active": True + } + + try: + result = db.users.insert_one(user) + user["_id"] = str(result.inserted_id) + return user + except Exception as e: + if "duplicate key error" in str(e): + return {"error": "User with this email already exists"} + raise + +@app.function(volumes={"/data": user_db}) +def update_user_credits(api_token: str, amount: int) -> Dict[str, Any]: + """Update user credits (add or subtract).""" + from pymongo import MongoClient + + client = MongoClient("mongodb://localhost:27017") + db = client.crawl4ai_db + + # First get current user to check credits + user = db.users.find_one({"api_token": api_token}) + if not user: + return {"success": False, "error": "User not found"} + + # For deductions, ensure sufficient credits + if amount < 0 and user["credits"] + amount < 0: + return {"success": False, "error": "Insufficient credits"} + + # Update credits + result = db.users.update_one( + {"api_token": api_token}, + { + "$inc": {"credits": amount}, + "$set": {"updated_at": datetime.utcnow()} + } + ) + + if result.modified_count == 1: + # Get updated user + updated_user = db.users.find_one({"api_token": api_token}) + return { + "success": True, + "credits": updated_user["credits"] + } + else: + return {"success": False, "error": "Failed to update credits"} + +@app.function(volumes={"/data": user_db}) +def log_usage(user_id: str, url: str, success: bool, error: Optional[str] = None) -> None: + """Log usage statistics.""" + from pymongo import MongoClient + from bson.objectid import ObjectId + + client = MongoClient("mongodb://localhost:27017") + db = client.crawl4ai_db + + log_entry = { + "user_id": user_id, + "url": url, + "timestamp": datetime.utcnow(), + "success": success, + "error": error + } + + db.usage_stats.insert_one(log_entry) + +# Main crawling function +@app.function(timeout=300) # 5 minute timeout +async def crawl( + url: str, + browser_config: Optional[Dict[str, Any]] = None, + crawler_config: Optional[Dict[str, Any]] = None, +) -> Dict[str, Any]: + """ + Crawl a given URL using Crawl4ai. + + Args: + url: The URL to crawl + browser_config: Optional browser configuration to override defaults + crawler_config: Optional crawler configuration to override defaults + + Returns: + A dictionary containing the crawl results + """ + from crawl4ai import ( + AsyncWebCrawler, + BrowserConfig, + CrawlerRunConfig, + CrawlResult + ) + + # Prepare browser config using the loader method + if browser_config is None: + browser_config = DEFAULT_BROWSER_CONFIG + browser_config_obj = BrowserConfig.load(browser_config) + + # Prepare crawler config using the loader method + if crawler_config is None: + crawler_config = DEFAULT_CRAWLER_CONFIG + crawler_config_obj = CrawlerRunConfig.load(crawler_config) + + # Perform the crawl + async with AsyncWebCrawler(config=browser_config_obj) as crawler: + result: CrawlResult = await crawler.arun(url=url, config=crawler_config_obj) + + # Return serializable results + try: + # Try newer Pydantic v2 method + return result.model_dump() + except AttributeError: + try: + # Try older Pydantic v1 method + return result.dict() + except AttributeError: + # Fallback to manual conversion + return { + "url": result.url, + "title": result.title, + "status": result.status, + "content": str(result.content) if hasattr(result, "content") else None, + "links": [{"url": link.url, "text": link.text} for link in result.links] if hasattr(result, "links") else [], + "markdown_v2": { + "raw_markdown": result.markdown_v2.raw_markdown if hasattr(result, "markdown_v2") else None + } + } + +# API endpoints +@app.function() +@web_endpoint(method="POST") +def crawl_endpoint(data: Dict[str, Any]) -> Dict[str, Any]: + """ + Web endpoint that accepts POST requests with JSON data containing: + - api_token: User's API token + - url: The URL to crawl + - browser_config: Optional browser configuration + - crawler_config: Optional crawler configuration + + Returns the crawl results and remaining credits. + """ + # Extract and validate API token + api_token = data.get("api_token") + if not api_token: + return { + "success": False, + "error": "API token is required", + "status_code": 401 + } + + # Verify user + user = get_user_by_token.remote(api_token) + if not user: + return { + "success": False, + "error": "Invalid API token", + "status_code": 401 + } + + if not user.get("is_active", False): + return { + "success": False, + "error": "Account is inactive", + "status_code": 403 + } + + # Validate URL + url = data.get("url") + if not url: + return { + "success": False, + "error": "URL is required", + "status_code": 400 + } + + # Check credits + if user.get("credits", 0) <= 0: + return { + "success": False, + "error": "Insufficient credits", + "status_code": 403 + } + + # Deduct credit first (1 credit per call) + credit_result = update_user_credits.remote(api_token, -1) + if not credit_result.get("success", False): + return { + "success": False, + "error": credit_result.get("error", "Failed to process credits"), + "status_code": 500 + } + + # Extract configs + browser_config = data.get("browser_config") + crawler_config = data.get("crawler_config") + + # Perform crawl + try: + start_time = time.time() + result = crawl.remote(url, browser_config, crawler_config) + execution_time = time.time() - start_time + + # Log successful usage + log_usage.spawn(user["_id"], url, True) + + return { + "success": True, + "data": result, + "credits_remaining": credit_result.get("credits"), + "execution_time_seconds": round(execution_time, 2), + "status_code": 200 + } + except Exception as e: + # Log failed usage + log_usage.spawn(user["_id"], url, False, str(e)) + + # Return error + return { + "success": False, + "error": f"Crawling error: {str(e)}", + "credits_remaining": credit_result.get("credits"), + "status_code": 500 + } + +# Admin endpoints +@app.function(secrets=[admin_secret]) +@web_endpoint(method="POST") +def admin_create_user(data: Dict[str, Any]) -> Dict[str, Any]: + """Admin endpoint to create new users.""" + # Validate admin token + admin_token = data.get("admin_token") + if admin_token != os.environ.get("ADMIN_TOKEN"): + return { + "success": False, + "error": "Invalid admin token", + "status_code": 401 + } + + # Validate input + email = data.get("email") + name = data.get("name") + + if not email or not name: + return { + "success": False, + "error": "Email and name are required", + "status_code": 400 + } + + # Create user + user = create_user.remote(email, name) + + if "error" in user: + return { + "success": False, + "error": user["error"], + "status_code": 400 + } + + return { + "success": True, + "data": { + "user_id": user["_id"], + "email": user["email"], + "name": user["name"], + "api_token": user["api_token"], + "credits": user["credits"], + "created_at": user["created_at"].isoformat() if isinstance(user["created_at"], datetime) else user["created_at"] + }, + "status_code": 201 + } + +@app.function(secrets=[admin_secret]) +@web_endpoint(method="POST") +def admin_update_credits(data: Dict[str, Any]) -> Dict[str, Any]: + """Admin endpoint to update user credits.""" + # Validate admin token + admin_token = data.get("admin_token") + if admin_token != os.environ.get("ADMIN_TOKEN"): + return { + "success": False, + "error": "Invalid admin token", + "status_code": 401 + } + + # Validate input + api_token = data.get("api_token") + amount = data.get("amount") + + if not api_token: + return { + "success": False, + "error": "API token is required", + "status_code": 400 + } + + if not isinstance(amount, int): + return { + "success": False, + "error": "Amount must be an integer", + "status_code": 400 + } + + # Update credits + result = update_user_credits.remote(api_token, amount) + + if not result.get("success", False): + return { + "success": False, + "error": result.get("error", "Failed to update credits"), + "status_code": 400 + } + + return { + "success": True, + "data": { + "credits": result["credits"] + }, + "status_code": 200 + } + +@app.function(secrets=[admin_secret]) +@web_endpoint(method="GET") +def admin_get_users(admin_token: str) -> Dict[str, Any]: + """Admin endpoint to list all users.""" + # Validate admin token + if admin_token != os.environ.get("ADMIN_TOKEN"): + return { + "success": False, + "error": "Invalid admin token", + "status_code": 401 + } + + users = get_all_users.remote() + + return { + "success": True, + "data": users, + "status_code": 200 + } + +@app.function(volumes={"/data": user_db}) +def get_all_users() -> List[Dict[str, Any]]: + """Get all users (for admin).""" + from pymongo import MongoClient + + client = MongoClient("mongodb://localhost:27017") + db = client.crawl4ai_db + + users = [] + for user in db.users.find(): + # Convert ObjectId to string + user["_id"] = str(user["_id"]) + # Convert datetime to ISO format + for field in ["created_at", "updated_at"]: + if field in user and isinstance(user[field], datetime): + user[field] = user[field].isoformat() + users.append(user) + + return users + +# Public endpoints +@app.function() +@web_endpoint(method="GET") +def health_check() -> Dict[str, Any]: + """Health check endpoint.""" + return { + "status": "online", + "service": APP_NAME, + "version": CRAWL4AI_VERSION, + "timestamp": datetime.utcnow().isoformat() + } + +@app.function() +@web_endpoint(method="GET") +def check_credits(api_token: str) -> Dict[str, Any]: + """Check user credits.""" + if not api_token: + return { + "success": False, + "error": "API token is required", + "status_code": 401 + } + + user = get_user_by_token.remote(api_token) + if not user: + return { + "success": False, + "error": "Invalid API token", + "status_code": 401 + } + + return { + "success": True, + "data": { + "credits": user["credits"], + "email": user["email"], + "name": user["name"] + }, + "status_code": 200 + } + +# Local entrypoint for testing +@app.local_entrypoint() +def main(url: str = "https://www.modal.com"): + """Command line entrypoint for local testing.""" + print("Initializing database...") + init_db.remote() + + print(f"Testing crawl on URL: {url}") + result = crawl.remote(url) + + # Print sample of result + print("\nCrawl Result Sample:") + if "title" in result: + print(f"Title: {result['title']}") + if "status" in result: + print(f"Status: {result['status']}") + if "links" in result: + print(f"Links found: {len(result['links'])}") + if "markdown_v2" in result and result["markdown_v2"] and "raw_markdown" in result["markdown_v2"]: + print("\nMarkdown Preview (first 300 chars):") + print(result["markdown_v2"]["raw_markdown"][:300] + "...") \ No newline at end of file diff --git a/deploy/modal/entry.py b/deploy/modal/entry.py new file mode 100644 index 00000000..1721487d --- /dev/null +++ b/deploy/modal/entry.py @@ -0,0 +1,127 @@ +import modal +from typing import Optional, Dict, Any + +# Create a custom image with Crawl4ai and its dependencies +# "pip install crawl4ai", +image = modal.Image.debian_slim(python_version="3.10").pip_install(["fastapi[standard]"]).run_commands( + "apt-get update", + "apt-get install -y software-properties-common", + "apt-get install -y git", + "apt-add-repository non-free", + "apt-add-repository contrib", + "pip install -U git+https://github.com/unclecode/crawl4ai.git@next", + "pip install -U fastapi[standard]", + "pip install -U pydantic", + "crawl4ai-setup", # This installs playwright and downloads chromium + # Print fastpi version + "python -m fastapi --version", +) + +# Define the app +app = modal.App("crawl4ai", image=image) + +# Define default configurations +DEFAULT_BROWSER_CONFIG = { + "headless": True, + "verbose": False, +} + +DEFAULT_CRAWLER_CONFIG = { + "crawler_config": { + "type": "CrawlerRunConfig", + "params": { + "markdown_generator": { + "type": "DefaultMarkdownGenerator", + "params": { + "content_filter": { + "type": "PruningContentFilter", + "params": { + "threshold": 0.48, + "threshold_type": "fixed" + } + } + } + } + } + } +} + +@app.function(timeout=300) # 5 minute timeout +async def crawl( + url: str, + browser_config: Optional[Dict[str, Any]] = None, + crawler_config: Optional[Dict[str, Any]] = None, +) -> Dict[str, Any]: + """ + Crawl a given URL using Crawl4ai. + + Args: + url: The URL to crawl + browser_config: Optional browser configuration to override defaults + crawler_config: Optional crawler configuration to override defaults + + Returns: + A dictionary containing the crawl results + """ + from crawl4ai import ( + AsyncWebCrawler, + BrowserConfig, + CrawlerRunConfig, + CrawlResult + ) + + + # Prepare browser config using the loader method + if browser_config is None: + browser_config = DEFAULT_BROWSER_CONFIG + browser_config_obj = BrowserConfig.load(browser_config) + + # Prepare crawler config using the loader method + if crawler_config is None: + crawler_config = DEFAULT_CRAWLER_CONFIG + crawler_config_obj = CrawlerRunConfig.load(crawler_config) + + + # Perform the crawl + async with AsyncWebCrawler(config=browser_config_obj) as crawler: + result: CrawlResult = await crawler.arun(url=url, config=crawler_config_obj) + + # Return serializable results + try: + # Try newer Pydantic v2 method + return result.model_dump() + except AttributeError: + try: + # Try older Pydantic v1 method + return result.__dict__ + except AttributeError: + # Fallback to returning the raw result + return result + +@app.function() +@modal.web_endpoint(method="POST") +def crawl_endpoint(data: Dict[str, Any]) -> Dict[str, Any]: + """ + Web endpoint that accepts POST requests with JSON data containing: + - url: The URL to crawl + - browser_config: Optional browser configuration + - crawler_config: Optional crawler configuration + + Returns the crawl results. + """ + url = data.get("url") + if not url: + return {"error": "URL is required"} + + browser_config = data.get("browser_config") + crawler_config = data.get("crawler_config") + + return crawl.remote(url, browser_config, crawler_config) + +@app.local_entrypoint() +def main(url: str = "https://www.modal.com"): + """ + Command line entrypoint for local testing. + """ + result = crawl.remote(url) + print(result) diff --git a/deploy/modal/guide.md b/deploy/modal/guide.md new file mode 100644 index 00000000..7930bce0 --- /dev/null +++ b/deploy/modal/guide.md @@ -0,0 +1,453 @@ +# Deploying Crawl4ai with Modal: A Comprehensive Tutorial + +Hey there! UncleCode here. I'm excited to show you how to deploy Crawl4ai using Modal - a fantastic serverless platform that makes deployment super simple and scalable. + +In this tutorial, I'll walk you through deploying your own Crawl4ai instance on Modal's infrastructure. This will give you a powerful, scalable web crawling solution without having to worry about infrastructure management. + +## What is Modal? + +Modal is a serverless platform that allows you to run Python functions in the cloud without managing servers. It's perfect for deploying Crawl4ai because: + +1. It handles all the infrastructure for you +2. It scales automatically based on demand +3. It makes deployment incredibly simple + +## Prerequisites + +Before we get started, you'll need: + +- A Modal account (sign up at [modal.com](https://modal.com)) +- Python 3.10 or later installed on your local machine +- Basic familiarity with Python and command-line operations + +## Step 1: Setting Up Your Modal Account + +First, sign up for a Modal account at [modal.com](https://modal.com) if you haven't already. Modal offers a generous free tier that's perfect for getting started. + +After signing up, install the Modal CLI and authenticate: + +```bash +pip install modal +modal token new +``` + +This will open a browser window where you can authenticate and generate a token for the CLI. + +## Step 2: Creating Your Crawl4ai Deployment + +Now, let's create a Python file called `crawl4ai_modal.py` with our deployment code: + +```python +import modal +from typing import Optional, Dict, Any + +# Create a custom image with Crawl4ai and its dependencies +image = modal.Image.debian_slim(python_version="3.10").pip_install( + ["fastapi[standard]"] +).run_commands( + "apt-get update", + "apt-get install -y software-properties-common", + "apt-get install -y git", + "apt-add-repository non-free", + "apt-add-repository contrib", + "pip install -U crawl4ai", + "pip install -U fastapi[standard]", + "pip install -U pydantic", + "crawl4ai-setup", # This installs playwright and downloads chromium +) + +# Define the app +app = modal.App("crawl4ai", image=image) + +# Define default configurations +DEFAULT_BROWSER_CONFIG = { + "headless": True, + "verbose": False, +} + +DEFAULT_CRAWLER_CONFIG = { + "crawler_config": { + "type": "CrawlerRunConfig", + "params": { + "markdown_generator": { + "type": "DefaultMarkdownGenerator", + "params": { + "content_filter": { + "type": "PruningContentFilter", + "params": { + "threshold": 0.48, + "threshold_type": "fixed" + } + } + } + } + } + } +} + +@app.function(timeout=300) # 5 minute timeout +async def crawl( + url: str, + browser_config: Optional[Dict[str, Any]] = None, + crawler_config: Optional[Dict[str, Any]] = None, +) -> Dict[str, Any]: + """ + Crawl a given URL using Crawl4ai. + + Args: + url: The URL to crawl + browser_config: Optional browser configuration to override defaults + crawler_config: Optional crawler configuration to override defaults + + Returns: + A dictionary containing the crawl results + """ + from crawl4ai import ( + AsyncWebCrawler, + BrowserConfig, + CrawlerRunConfig, + CrawlResult + ) + + # Prepare browser config using the loader method + if browser_config is None: + browser_config = DEFAULT_BROWSER_CONFIG + browser_config_obj = BrowserConfig.load(browser_config) + + # Prepare crawler config using the loader method + if crawler_config is None: + crawler_config = DEFAULT_CRAWLER_CONFIG + crawler_config_obj = CrawlerRunConfig.load(crawler_config) + + # Perform the crawl + async with AsyncWebCrawler(config=browser_config_obj) as crawler: + result: CrawlResult = await crawler.arun(url=url, config=crawler_config_obj) + + # Return serializable results + try: + # Try newer Pydantic v2 method + return result.model_dump() + except AttributeError: + try: + # Try older Pydantic v1 method + return result.dict() + except AttributeError: + # Fallback to manual conversion + return { + "url": result.url, + "title": result.title, + "status": result.status, + "content": str(result.content) if hasattr(result, "content") else None, + "links": [{"url": link.url, "text": link.text} for link in result.links] if hasattr(result, "links") else [], + "markdown_v2": { + "raw_markdown": result.markdown_v2.raw_markdown if hasattr(result, "markdown_v2") else None + } + } + +@app.function() +@modal.web_endpoint(method="POST") +def crawl_endpoint(data: Dict[str, Any]) -> Dict[str, Any]: + """ + Web endpoint that accepts POST requests with JSON data containing: + - url: The URL to crawl + - browser_config: Optional browser configuration + - crawler_config: Optional crawler configuration + + Returns the crawl results. + """ + url = data.get("url") + if not url: + return {"error": "URL is required"} + + browser_config = data.get("browser_config") + crawler_config = data.get("crawler_config") + + return crawl.remote(url, browser_config, crawler_config) + +@app.local_entrypoint() +def main(url: str = "https://www.modal.com"): + """ + Command line entrypoint for local testing. + """ + result = crawl.remote(url) + print(result) +``` + +## Step 3: Understanding the Code Components + +Let's break down what's happening in this code: + +### 1. Image Definition + +```python +image = modal.Image.debian_slim(python_version="3.10").pip_install( + ["fastapi[standard]"] +).run_commands( + "apt-get update", + "apt-get install -y software-properties-common", + "apt-get install -y git", + "apt-add-repository non-free", + "apt-add-repository contrib", + "pip install -U git+https://github.com/unclecode/crawl4ai.git@next", + "pip install -U fastapi[standard]", + "pip install -U pydantic", + "crawl4ai-setup", # This installs playwright and downloads chromium +) +``` + +This section defines the container image that Modal will use to run your code. It: +- Starts with a Debian Slim base image with Python 3.10 +- Installs FastAPI +- Updates the system packages +- Installs Git and other dependencies +- Installs Crawl4ai from the GitHub repository +- Runs the Crawl4ai setup to install Playwright and download Chromium + +### 2. Modal App Definition + +```python +app = modal.App("crawl4ai", image=image) +``` + +This creates a Modal application named "crawl4ai" that uses the image we defined above. + +### 3. Default Configurations + +```python +DEFAULT_BROWSER_CONFIG = { + "headless": True, + "verbose": False, +} + +DEFAULT_CRAWLER_CONFIG = { + "crawler_config": { + "type": "CrawlerRunConfig", + "params": { + "markdown_generator": { + "type": "DefaultMarkdownGenerator", + "params": { + "content_filter": { + "type": "PruningContentFilter", + "params": { + "threshold": 0.48, + "threshold_type": "fixed" + } + } + } + } + } + } +} +``` + +These define the default configurations for the browser and crawler. You can customize these settings based on your specific needs. + +### 4. The Crawl Function + +```python +@app.function(timeout=300) +async def crawl(url, browser_config, crawler_config): + # Function implementation +``` + +This is the main function that performs the crawling. It: +- Takes a URL and optional configurations +- Sets up the browser and crawler with those configurations +- Performs the crawl +- Returns the results in a serializable format + +The `@app.function(timeout=300)` decorator tells Modal to run this function in the cloud with a 5-minute timeout. + +### 5. The Web Endpoint + +```python +@app.function() +@modal.web_endpoint(method="POST") +def crawl_endpoint(data: Dict[str, Any]) -> Dict[str, Any]: + # Function implementation +``` + +This creates a web endpoint that accepts POST requests. It: +- Extracts the URL and configurations from the request +- Calls the crawl function with those parameters +- Returns the results + +### 6. Local Entrypoint + +```python +@app.local_entrypoint() +def main(url: str = "https://www.modal.com"): + # Function implementation +``` + +This provides a way to test the application from the command line. + +## Step 4: Testing Locally + +Before deploying, let's test our application locally: + +```bash +modal run crawl4ai_modal.py --url "https://example.com" +``` + +This command will: +1. Upload your code to Modal +2. Create the necessary containers +3. Run the `main` function with the specified URL +4. Return the results + +Modal will handle all the infrastructure setup for you. You should see the crawling results printed to your console. + +## Step 5: Deploying Your Application + +Once you're satisfied with the local testing, it's time to deploy: + +```bash +modal deploy crawl4ai_modal.py +``` + +This will deploy your application to Modal's cloud. The deployment process will output URLs for your web endpoints. + +You should see output similar to: + +``` +✓ Deployed crawl4ai. + URLs: + crawl_endpoint => https://your-username--crawl-endpoint.modal.run +``` + +Save this URL - you'll need it to make requests to your deployment. + +## Step 6: Using Your Deployment + +Now that your application is deployed, you can use it by sending POST requests to the endpoint URL: + +```bash +curl -X POST https://your-username--crawl-endpoint.modal.run \ + -H "Content-Type: application/json" \ + -d '{"url": "https://example.com"}' +``` + +Or in Python: + +```python +import requests + +response = requests.post( + "https://your-username--crawl-endpoint.modal.run", + json={"url": "https://example.com"} +) + +result = response.json() +print(result) +``` + +You can also customize the browser and crawler configurations: + +```python +requests.post( + "https://your-username--crawl-endpoint.modal.run", + json={ + "url": "https://example.com", + "browser_config": { + "headless": False, + "verbose": True + }, + "crawler_config": { + "crawler_config": { + "type": "CrawlerRunConfig", + "params": { + "markdown_generator": { + "type": "DefaultMarkdownGenerator", + "params": { + "content_filter": { + "type": "PruningContentFilter", + "params": { + "threshold": 0.6, # Adjusted threshold + "threshold_type": "fixed" + } + } + } + } + } + } + } + } +) +``` + +## Step 7: Calling Your Deployment from Another Python Script + +You can also call your deployed function directly from another Python script: + +```python +import modal + +# Get a reference to the deployed function +crawl_function = modal.Function.from_name("crawl4ai", "crawl") + +# Call the function +result = crawl_function.remote("https://example.com") +print(result) +``` + +## Understanding Modal's Execution Flow + +To understand how Modal works, it's important to know: + +1. **Local vs. Remote Execution**: When you call a function with `.remote()`, it runs in Modal's cloud, not on your local machine. + +2. **Container Lifecycle**: Modal creates containers on-demand and destroys them when they're not needed. + +3. **Caching**: Modal caches your container images to speed up subsequent runs. + +4. **Serverless Scaling**: Modal automatically scales your application based on demand. + +## Customizing Your Deployment + +You can customize your deployment in several ways: + +### Changing the Crawl4ai Version + +To use a different version of Crawl4ai, update the installation command in the image definition: + +```python +"pip install -U git+https://github.com/unclecode/crawl4ai.git@main", # Use main branch +``` + +### Adjusting Resource Limits + +You can change the resources allocated to your functions: + +```python +@app.function(timeout=600, cpu=2, memory=4096) # 10 minute timeout, 2 CPUs, 4GB RAM +async def crawl(...): + # Function implementation +``` + +### Keeping Containers Warm + +To reduce cold start times, you can keep containers warm: + +```python +@app.function(keep_warm=1) # Keep 1 container warm +async def crawl(...): + # Function implementation +``` + +## Conclusion + +That's it! You've successfully deployed Crawl4ai on Modal. You now have a scalable web crawling solution that can handle as many requests as you need without requiring any infrastructure management. + +The beauty of this setup is its simplicity - Modal handles all the hard parts, letting you focus on using Crawl4ai to extract the data you need. + +Feel free to reach out if you have any questions or need help with your deployment! + +Happy crawling! +- UncleCode + +## Additional Resources + +- [Modal Documentation](https://modal.com/docs) +- [Crawl4ai GitHub Repository](https://github.com/unclecode/crawl4ai) +- [Crawl4ai Documentation](https://docs.crawl4ai.com) diff --git a/deploy/modal/test_modal.py b/deploy/modal/test_modal.py new file mode 100644 index 00000000..f844f2d1 --- /dev/null +++ b/deploy/modal/test_modal.py @@ -0,0 +1,317 @@ + +#!/usr/bin/env python3 +""" +Crawl4ai API Testing Script + +This script tests all endpoints of the Crawl4ai API service and demonstrates their usage. +""" + +import argparse +import json +import sys +import time +from typing import Dict, Any, List, Optional + +import requests + +# Colors for terminal output +class Colors: + HEADER = '\033[95m' + BLUE = '\033[94m' + GREEN = '\033[92m' + YELLOW = '\033[93m' + RED = '\033[91m' + ENDC = '\033[0m' + BOLD = '\033[1m' + UNDERLINE = '\033[4m' + +def print_header(text: str) -> None: + """Print a formatted header.""" + print(f"\n{Colors.HEADER}{Colors.BOLD}{'=' * 80}{Colors.ENDC}") + print(f"{Colors.HEADER}{Colors.BOLD}{text.center(80)}{Colors.ENDC}") + print(f"{Colors.HEADER}{Colors.BOLD}{'=' * 80}{Colors.ENDC}\n") + +def print_step(text: str) -> None: + """Print a formatted step description.""" + print(f"{Colors.BLUE}{Colors.BOLD}>> {text}{Colors.ENDC}") + +def print_success(text: str) -> None: + """Print a success message.""" + print(f"{Colors.GREEN}✓ {text}{Colors.ENDC}") + +def print_warning(text: str) -> None: + """Print a warning message.""" + print(f"{Colors.YELLOW}⚠ {text}{Colors.ENDC}") + +def print_error(text: str) -> None: + """Print an error message.""" + print(f"{Colors.RED}✗ {text}{Colors.ENDC}") + +def print_json(data: Dict[str, Any]) -> None: + """Pretty print JSON data.""" + print(json.dumps(data, indent=2)) + +def make_request(method: str, url: str, params: Optional[Dict[str, Any]] = None, + json_data: Optional[Dict[str, Any]] = None, + expected_status: int = 200) -> Dict[str, Any]: + """Make an HTTP request and handle errors.""" + print_step(f"Making {method.upper()} request to {url}") + + if params: + print(f" Parameters: {params}") + if json_data: + print(f" JSON Data: {json_data}") + + try: + response = requests.request( + method=method, + url=url, + params=params, + json=json_data, + timeout=300 # 5 minute timeout for crawling operations + ) + + status_code = response.status_code + print(f" Status Code: {status_code}") + + try: + data = response.json() + print(" Response:") + print_json(data) + + if status_code != expected_status: + print_error(f"Expected status code {expected_status}, got {status_code}") + return data + + print_success("Request successful") + return data + except ValueError: + print_error("Response is not valid JSON") + print(response.text) + return {"error": "Invalid JSON response"} + + except requests.RequestException as e: + print_error(f"Request failed: {str(e)}") + return {"error": str(e)} + +def test_health_check(base_url: str) -> bool: + """Test the health check endpoint.""" + print_header("Testing Health Check Endpoint") + + response = make_request("GET", f"{base_url}/health_check") + + if "status" in response and response["status"] == "online": + print_success("Health check passed") + return True + else: + print_error("Health check failed") + return False + +def test_admin_create_user(base_url: str, admin_token: str, email: str, name: str) -> Optional[str]: + """Test creating a new user.""" + print_header("Testing Admin User Creation") + + response = make_request( + "POST", + f"{base_url}/admin_create_user", + json_data={ + "admin_token": admin_token, + "email": email, + "name": name + }, + expected_status=201 + ) + + if response.get("success") and "data" in response: + api_token = response["data"].get("api_token") + if api_token: + print_success(f"User created successfully with API token: {api_token}") + return api_token + + print_error("Failed to create user") + return None + +def test_check_credits(base_url: str, api_token: str) -> Optional[int]: + """Test checking user credits.""" + print_header("Testing Check Credits Endpoint") + + response = make_request( + "GET", + f"{base_url}/check_credits", + params={"api_token": api_token} + ) + + if response.get("success") and "data" in response: + credits = response["data"].get("credits") + if credits is not None: + print_success(f"User has {credits} credits") + return credits + + print_error("Failed to check credits") + return None + +def test_crawl_endpoint(base_url: str, api_token: str, url: str) -> bool: + """Test the crawl endpoint.""" + print_header("Testing Crawl Endpoint") + + response = make_request( + "POST", + f"{base_url}/crawl_endpoint", + json_data={ + "api_token": api_token, + "url": url + } + ) + + if response.get("success") and "data" in response: + print_success("Crawl completed successfully") + + # Display some crawl result data + data = response["data"] + if "title" in data: + print(f"Page Title: {data['title']}") + if "status" in data: + print(f"Status: {data['status']}") + if "links" in data: + print(f"Links found: {len(data['links'])}") + if "markdown_v2" in data and data["markdown_v2"] and "raw_markdown" in data["markdown_v2"]: + print("Markdown Preview (first 200 chars):") + print(data["markdown_v2"]["raw_markdown"][:200] + "...") + + credits_remaining = response.get("credits_remaining") + if credits_remaining is not None: + print(f"Credits remaining: {credits_remaining}") + + return True + + print_error("Crawl failed") + return False + +def test_admin_update_credits(base_url: str, admin_token: str, api_token: str, amount: int) -> bool: + """Test updating user credits.""" + print_header("Testing Admin Update Credits") + + response = make_request( + "POST", + f"{base_url}/admin_update_credits", + json_data={ + "admin_token": admin_token, + "api_token": api_token, + "amount": amount + } + ) + + if response.get("success") and "data" in response: + print_success(f"Credits updated successfully, new balance: {response['data'].get('credits')}") + return True + + print_error("Failed to update credits") + return False + +def test_admin_get_users(base_url: str, admin_token: str) -> List[Dict[str, Any]]: + """Test getting all users.""" + print_header("Testing Admin Get All Users") + + response = make_request( + "GET", + f"{base_url}/admin_get_users", + params={"admin_token": admin_token} + ) + + if response.get("success") and "data" in response: + users = response["data"] + print_success(f"Retrieved {len(users)} users") + return users + + print_error("Failed to get users") + return [] + +def run_full_test(base_url: str, admin_token: str) -> None: + """Run all tests in sequence.""" + # Remove trailing slash if present + base_url = base_url.rstrip('/') + + # Test 1: Health Check + if not test_health_check(base_url): + print_error("Health check failed, aborting tests") + sys.exit(1) + + # Test 2: Create a test user + email = f"test-user-{int(time.time())}@example.com" + name = "Test User" + api_token = test_admin_create_user(base_url, admin_token, email, name) + + if not api_token: + print_error("User creation failed, aborting tests") + sys.exit(1) + + # Test 3: Check initial credits + initial_credits = test_check_credits(base_url, api_token) + + if initial_credits is None: + print_error("Credit check failed, aborting tests") + sys.exit(1) + + # Test 4: Perform a crawl + test_url = "https://news.ycombinator.com" + crawl_success = test_crawl_endpoint(base_url, api_token, test_url) + + if not crawl_success: + print_warning("Crawl test failed, but continuing with other tests") + + # Test 5: Check credits after crawl + post_crawl_credits = test_check_credits(base_url, api_token) + + if post_crawl_credits is not None and initial_credits is not None: + if post_crawl_credits == initial_credits - 1: + print_success("Credit deduction verified") + else: + print_warning(f"Unexpected credit change: {initial_credits} -> {post_crawl_credits}") + + # Test 6: Add credits + add_credits_amount = 50 + if test_admin_update_credits(base_url, admin_token, api_token, add_credits_amount): + print_success(f"Added {add_credits_amount} credits") + + # Test 7: Check credits after addition + post_addition_credits = test_check_credits(base_url, api_token) + + if post_addition_credits is not None and post_crawl_credits is not None: + if post_addition_credits == post_crawl_credits + add_credits_amount: + print_success("Credit addition verified") + else: + print_warning(f"Unexpected credit change: {post_crawl_credits} -> {post_addition_credits}") + + # Test 8: Get all users + users = test_admin_get_users(base_url, admin_token) + + if users: + # Check if our test user is in the list + test_user = next((user for user in users if user.get("email") == email), None) + if test_user: + print_success("Test user found in users list") + else: + print_warning("Test user not found in users list") + + # Final report + print_header("Test Summary") + + print_success("All endpoints tested successfully") + print(f"Test user created with email: {email}") + print(f"API token: {api_token}") + print(f"Final credit balance: {post_addition_credits}") + +def main(): + parser = argparse.ArgumentParser(description="Test Crawl4ai API endpoints") + parser.add_argument("--base-url", required=True, help="Base URL of the Crawl4ai API (e.g., https://username--crawl4ai-api.modal.run)") + parser.add_argument("--admin-token", required=True, help="Admin token for authentication") + + args = parser.parse_args() + + print_header("Crawl4ai API Test Script") + print(f"Testing API at: {args.base_url}") + + run_full_test(args.base_url, args.admin_token) + +if __name__ == "__main__": + main() \ No newline at end of file